@verified-network/verified-sdk 0.8.3 → 0.8.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -736,9 +736,9 @@
736
736
  "type": "function"
737
737
  }
738
738
  ],
739
- "metadata": "{\"compiler\":{\"version\":\"0.5.7+commit.6da8b019\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"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\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"},{\"name\":\"_name\",\"type\":\"bytes32\"}],\"name\":\"supportTokens\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\"},{\"name\":\"purchaser\",\"type\":\"address\"},{\"name\":\"currency\",\"type\":\"bytes32\"},{\"name\":\"purchasedBond\",\"type\":\"address\"},{\"name\":\"_hashedMessage\",\"type\":\"bytes32\"},{\"name\":\"_v\",\"type\":\"uint8\"},{\"name\":\"_r\",\"type\":\"bytes32\"},{\"name\":\"_s\",\"type\":\"bytes32\"}],\"name\":\"purchase\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\"},{\"name\":\"_currency\",\"type\":\"bytes32\"},{\"name\":\"_owner\",\"type\":\"address\"},{\"name\":\"_fee\",\"type\":\"address\"},{\"name\":\"_bridge\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\"},{\"name\":\"issuer\",\"type\":\"address\"},{\"name\":\"currency\",\"type\":\"bytes32\"},{\"name\":\"issuedBond\",\"type\":\"address\"},{\"name\":\"_hashedMessage\",\"type\":\"bytes32\"},{\"name\":\"_v\",\"type\":\"uint8\"},{\"name\":\"_r\",\"type\":\"bytes32\"},{\"name\":\"_s\",\"type\":\"bytes32\"}],\"name\":\"addIssuedBalance\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"},{\"name\":\"_amount\",\"type\":\"uint256\"},{\"name\":\"_buyer\",\"type\":\"address\"}],\"name\":\"requestIssue\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"checkSupportForToken\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_signer\",\"type\":\"address\"}],\"name\":\"setSigner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\"},{\"name\":\"payOutTo\",\"type\":\"address\"},{\"name\":\"currency\",\"type\":\"bytes32\"},{\"name\":\"redeemedToken\",\"type\":\"address\"},{\"name\":\"_hashedMessage\",\"type\":\"bytes32\"},{\"name\":\"_v\",\"type\":\"uint8\"},{\"name\":\"_r\",\"type\":\"bytes32\"},{\"name\":\"_s\",\"type\":\"bytes32\"}],\"name\":\"redeemBond\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"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\"},{\"constant\":true,\"inputs\":[],\"name\":\"isPaused\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getSupportedTokens\",\"outputs\":[{\"components\":[{\"name\":\"tokenName\",\"type\":\"bytes32\"},{\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"\",\"type\":\"tuple[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"issuer\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"currency\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"BondIssueRequest\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"issuer\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"collateralCurrency\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"issuedAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"BondIssued\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"redeemer\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"redemptionCurrency\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"redemptionAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"BondRedeemed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"purchaser\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"paidInCurrency\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"purchasedAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"BondPurchased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"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\"},{\"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\"}],\"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}.\"},\"checkSupportForToken(address)\":{\"params\":{\"_token\":\"token that is supported for issuing cash tokens\\r\"}},\"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.\"},\"initialize(address)\":{\"details\":\"Initializes the contract setting the deployer as the initial owner.\"},\"isOwner()\":{\"details\":\"Returns true if the caller is the current owner.\"},\"isPaused()\":{\"return\":\"True: contract is paused\\rFalse: contract is not paused\\r\"},\"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.\"},\"requestIssue(address,uint256,address)\":{\"params\":{\"_amount\":\"amount of token that is transferred from investor to this bond token issuing contract\\r\",\"_token\":\"address of token used by investor to buy the bond token\\r\"}},\"supportTokens(address,bytes32)\":{\"params\":{\"_name\":\"name of token supported\\r\",\"_token\":\"address of token supported\\r\"}},\"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\":{\"checkSupportForToken(address)\":{\"notice\":\"Checks if a specified token is supported for issuing Verified cash tokens\\r\"},\"getSupportedTokens()\":{\"notice\":\"Returns array of tokens supported\\r\"},\"isPaused()\":{\"notice\":\"returns whether or not the contract is paused\\r\"},\"requestIssue(address,uint256,address)\":{\"notice\":\"Used by external apps (eg, exchange, wallet) to buy Verified bond token \\r\"},\"supportTokens(address,bytes32)\":{\"notice\":\"Specifies list of supported tokens that can be deposited to issue Verified cash tokens\\r\"}}}},\"settings\":{\"compilationTarget\":{\"project:/contracts/Bond.sol\":\"Bond\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-ethereum-package/contracts/GSN/Context.sol\":{\"keccak256\":\"0x3491510fa4862af1a43f6c860d9cf7392240196540cd3c0eea79d374d419c5a1\",\"urls\":[\"bzzr://5cddbf3b74b775a8670757a6b8e108dac17dac20253f35f4c729e9cb6bea4ed3\"]},\"@openzeppelin/contracts-ethereum-package/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzzr://292843005e754e752644f767477ec5ad7a1ffc91ddb18c38b8079c62f3993cad\"]},\"@openzeppelin/contracts-ethereum-package/contracts/ownership/Ownable.sol\":{\"keccak256\":\"0xd7e8ab76fa35c4d8d35a06a6ed538cadab8b75a1aa00594ced1568b2c0cadde3\",\"urls\":[\"bzzr://b4c855b32d75f2a4969bfbd530b6934b69f12f28584b3746967e1ca64e024bd9\"]},\"@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x2a474399663812668bb8e9c9e7d011d54fd09de386bd6e9fcb2407a677ebd1aa\",\"urls\":[\"bzzr://3d70561b32ba1494d2b2df362e92dff5ab869d27e2fe35cf9bf3a8ae137cffd3\"]},\"@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe5bb0f57cff3e299f360052ba50f1ea0fff046df2be070b6943e0e3c3fdad8a9\",\"urls\":[\"bzzr://cf2d583b8dce38d0617fdcd65f2fd9f126fe17b7f683b5a515ea9d2762d8b062\"]},\"@openzeppelin/upgrades/contracts/Initializable.sol\":{\"keccak256\":\"0x9bfec92e36234ecc99b5d37230acb6cd1f99560233753162204104a4897e8721\",\"urls\":[\"bzzr://f75d88b16fe25a9e19b3512691c496e2bb6d8451bc9a636196c4e17ca9b40201\"]},\"abdk-libraries-solidity/ABDKMathQuad.sol\":{\"keccak256\":\"0x0ae8a1dd1dce31cc6b46fa58d6a4b72353ece1c96a8497aa0d494797dc94bc36\",\"urls\":[\"bzzr://d29078c35091aee1858898e0e6f1572ab214634d82bee162efbb90b32a9a66cb\"]},\"project:/contracts/Bond.sol\":{\"keccak256\":\"0xff78883bf59d084683989bd2bf7d690d278453977cde1b10353bd460aa69b6a7\",\"urls\":[\"bzzr://0366b5d54c5ba549a0bbff1c7d0139d63ec60aac3685ae31b410c4dd4c4def06\"]},\"project:/contracts/interfaces/IBond.sol\":{\"keccak256\":\"0x865b390946b6faa66ff8f3434fe714b2f081926b1e826ce1494c2b2df949d669\",\"urls\":[\"bzzr://6fd782eda38cbf7c968a841a9a4af9a6cbbf01fe19a8f04053fd7c3b9d8214f1\"]},\"project:/contracts/interfaces/IFactory.sol\":{\"keccak256\":\"0x951bae41b02e597fdf6bd55c3aa53b8a56db2a4d269a2cc7ea164e58bd69ac9b\",\"urls\":[\"bzzr://fe4676374df4fb298c983f38f3d3187be41a01a5e2a76d0183e32b671169602d\"]},\"project:/contracts/interfaces/IRates.sol\":{\"keccak256\":\"0xc32e70549fdb4e147901361b00ddc891db5d811cdea0db365695ab52106ff6fb\",\"urls\":[\"bzzr://3dd800321631ec5f22fbe955f807762ee0537e2ec8f37f27ecede1e9a333d39f\"]},\"project:/contracts/utilities/Pausable.sol\":{\"keccak256\":\"0x96eceae12582eec38cc9706095b6f7d038b00dc36d98a02d234e7051b42a2a6a\",\"urls\":[\"bzzr://e5e1adfa3d22d6769d754f3f7f74eb1b12f5327b56b49584d34490b9d747d9b3\"]},\"project:/contracts/utilities/StringUtils.sol\":{\"keccak256\":\"0x18f1be0daaca27eba3c56a0da1613331cd1a37eab4970307909d8be77d6fc34e\",\"urls\":[\"bzzr://e3b548071313cf6f3cdaf33069f4648feadeb37fb33c75fe6fd40e8310f8ff7c\"]}},\"version\":1}",
740
- "bytecode": "0x6080604052612f28806100136000396000f3fe60806040526004361061019c5760003560e01c806370a08231116100ec578063a457c2d71161008a578063c4d66de811610064578063c4d66de8146104f7578063d3c7c2c714610517578063dd62ed3e14610539578063f2fde38b146105595761019c565b8063a457c2d7146104a2578063a9059cbb146104c2578063b187bd26146104e25761019c565b80638456cb59116100c65780638456cb59146104415780638da5cb5b146104565780638f32d59b1461047857806395d89b411461048d5761019c565b806370a08231146103ec578063715018a61461040c578063720bd707146104215761019c565b80633f4ba83a11610159578063464ff5e611610133578063464ff5e61461036c5780634ba3f9881461038c5780635d4f5b1c146103ac5780636c19e783146103cc5761019c565b80633f4ba83a146103175780633f66e3dd1461032c578063464997701461034c5761019c565b806306fdde031461023b578063095ea7b31461026657806318160ddd1461029357806323b872dd146102b55780632ceafc27146102d557806339509351146102f7575b346101a657600080fd5b36156101b157600080fd5b609b5460ff16156101c157600080fd5b33600090815260a560209081526040808320600160d91b6432ba3432b90284529091529020546101fc9060801b6101f734610579565b6105df565b33600090815260a560209081526040808320600160d91b6432ba3432b9028452909152902080546001600160801b03191660809290921c919091179055005b34801561024757600080fd5b506102506109e5565b60405161025d9190612cca565b60405180910390f35b34801561027257600080fd5b5061028661028136600461257f565b610a73565b60405161025d9190612c01565b34801561029f57600080fd5b506102a8610a90565b60405161025d9190612d92565b3480156102c157600080fd5b506102866102d0366004612532565b610a97565b3480156102e157600080fd5b506102f56102f036600461257f565b610b25565b005b34801561030357600080fd5b5061028661031236600461257f565b610c25565b34801561032357600080fd5b506102f5610c79565b34801561033857600080fd5b506102f56103473660046126ba565b610caa565b34801561035857600080fd5b506102f5610367366004612610565b611148565b34801561037857600080fd5b506102f56103873660046126ba565b611316565b34801561039857600080fd5b506102f56103a73660046125af565b611533565b3480156103b857600080fd5b506102866103c73660046124b4565b61186b565b3480156103d857600080fd5b506102f56103e73660046124b4565b611899565b3480156103f857600080fd5b506102a86104073660046124b4565b6118e8565b34801561041857600080fd5b506102f5611903565b34801561042d57600080fd5b506102f561043c3660046126ba565b611974565b34801561044d57600080fd5b506102f5611b5c565b34801561046257600080fd5b5061046b611b8b565b60405161025d9190612b9f565b34801561048457600080fd5b50610286611b9a565b34801561049957600080fd5b50610250611bc0565b3480156104ae57600080fd5b506102866104bd36600461257f565b611c1b565b3480156104ce57600080fd5b506102866104dd36600461257f565b611c89565b3480156104ee57600080fd5b50610286611c9d565b34801561050357600080fd5b506102f56105123660046124b4565b611ca6565b34801561052357600080fd5b5061052c611d7b565b60405161025d9190612bf0565b34801561054557600080fd5b506102a86105543660046124f8565b611df0565b34801561056557600080fd5b506102f56105743660046124b4565b611e1b565b600081610588575060006105da565b81600061059482611e4e565b905060708110156105ad578060700382901b91506105c0565b60708111156105c0576070810382901c91505b613fff0160701b6001600160701b03919091161760801b90505b919050565b6000617fff6001600160801b03608085811c8216607090811c8416939186901c90921690911c8116908214156106555780617fff141561064b576001600160801b031985811690851614156106385784925050506109df565b50600160ef1b61ffff0291506109df9050565b84925050506109df565b80617fff14156106695783925050506109df565b6001607f1b608086901c6001600160801b0381169190911015906001600160701b03168361069a57600193506106a1565b600160701b175b6001607f1b608087901c6001600160801b0381169190911015906001600160701b0316846106d257600194506106d9565b600160701b175b82610709576001600160801b03198816600160ff1b146106f957876106fc565b60005b96505050505050506109df565b80610729576001600160801b03198916600160ff1b146106f957886106fc565b848603841515831515141561083757607081131561075057899750505050505050506109df565b60008113156107625790811c90610791565b606f1981121561077b57889750505050505050506109df565b6000811215610791578060000384901c93508596505b92810192600160711b84106107ac576001968701969390931c925b86617fff14156107e157846107c957600160f01b617fff026107d3565b6001600160f01b03195b9750505050505050506109df565b600160701b8410156107f65760009650610803565b6001600160701b03841693505b83607088901b8661081557600061081b565b6001607f1b5b6001600160801b0316171760801b9750505050505050506109df565b600081131561085257600184901b9350600187039650610869565b600081121561086957600182901b91506001860396505b607081131561087b57600191506108c8565b6001811315610898576001810360018303901c60010191506108c8565b606f198112156108ab57600193506108c8565b6000198112156108c8576001816000030360018503901c60010193505b8184106108d95781840393506108e2565b83820393508294505b836108f85750600096506109df95505050505050565b600061090385611e4e565b9050806071141561092957600185901c6001600160701b03169450600188019750610978565b607081101561096b57607081900380891115610958578086901b6001600160701b031695508089039850610965565b600098600019019590951b945b50610978565b6001600160701b03851694505b87617fff14156109ae578561099557600160f01b617fff0261099f565b6001600160f01b03195b985050505050505050506109df565b84607089901b876109c05760006109c6565b6001607f1b5b6001600160801b0316171760801b985050505050505050505b92915050565b609c805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610a6b5780601f10610a4057610100808354040283529160200191610a6b565b820191906000526020600020905b815481529060010190602001808311610a4e57829003601f168201915b505050505081565b6000610a87610a80611ef1565b8484611ef5565b50600192915050565b6035545b90565b6000610aa4848484611faf565b610b1a84610ab0611ef1565b610b1585604051806060016040528060288152602001612ea2602891396001600160a01b038a16600090815260346020526040812090610aee611ef1565b6001600160a01b03168152602081019190915260400160002054919063ffffffff6120cb16565b611ef5565b5060015b9392505050565b610b2d611b9a565b610b5557604051600160e51b62461bcd028152600401610b4c90612d52565b60405180910390fd5b6001600160a01b038216600090815260a86020526040902054610c2157610b7a612375565b506040805180820182528281526001600160a01b03848116602080840182815260a78054600181018255600082815296517fb68792697ed876af8b4858b316f5b54d81f6861191ad2950c1fde6c3dc7b3dea60029092029182015591517fb68792697ed876af8b4858b316f5b54d81f6861191ad2950c1fde6c3dc7b3deb90920180546001600160a01b0319169290951691909117909355915490835260a8909152919020555b5050565b6000610a87610c32611ef1565b84610b158560346000610c43611ef1565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6120fa16565b610c81611b9a565b610ca057604051600160e51b62461bcd028152600401610b4c90612d52565b610ca8612122565b565b600084604051602001610cbd9190612c37565b604051602081830303815290604052805190602001209050600081604051602001610ce89190612b88565b604051602081830303815290604052805190602001209050609b60019054906101000a90046001600160a01b03166001600160a01b031660018287878760405160008152602001604052604051610d429493929190612c8c565b6020604051602081039080840390855afa158015610d64573d6000803e3d6000fd5b505050602060405103516001600160a01b031614610d8157600080fd5b60a054604051600160e01b632ea7791702815230916001600160a01b031690632ea7791790610db4908c90600401612d35565b60206040518083038186803b158015610dcc57600080fd5b505afa158015610de0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e0491908101906124da565b6001600160a01b0316141561113c57600060a46000896001600160a01b03166001600160a01b0316815260200190815260200160002060009054906101000a90046001600160a01b0316905060a26000826001600160a01b03166001600160a01b031681526020019081526020016000206000896001600160a01b03166001600160a01b031681526020019081526020016000206000018a90806001815401808255809150509060018203906000526020600020016000909192909190916101000a8154816001600160a01b0302191690836001600160a01b0316021790555050610f4a60a26000836001600160a01b03166001600160a01b0316815260200190815260200160002060008a6001600160a01b03166001600160a01b0316815260200190815260200160002060010160109054906101000a900460801b6101f78d610579565b60a26000836001600160a01b03166001600160a01b0316815260200190815260200160002060008a6001600160a01b03166001600160a01b0316815260200190815260200160002060010160106101000a8154816001600160801b03021916908360801c021790555060a360008b6001600160a01b03166001600160a01b031681526020019081526020016000206000896001600160a01b03166001600160a01b031681526020019081526020016000206000018190806001815401808255809150509060018203906000526020600020016000909192909190916101000a8154816001600160a01b0302191690836001600160a01b03160217905550506110ad60a360008c6001600160a01b03166001600160a01b0316815260200190815260200160002060008a6001600160a01b03166001600160a01b0316815260200190815260200160002060010160109054906101000a900460801b6101f78d610579565b6001600160a01b038b8116600081815260a360209081526040808320948e16835293905282902060018101805460809590951c600160801b026001600160801b039095169490941790935560039092018b9055517f28941375b90ddb023a4c1149e157b4289100de23ecc1a208c7ba68fd31b8aa8290611132908c908f908d90612c64565b60405180910390a2505b50505050505050505050565b600054610100900460ff16806111615750611161612157565b8061116f575060005460ff16155b61118e57604051600160e51b62461bcd028152600401610b4c90612d62565b600054610100900460ff161580156111b9576000805460ff1961ff0019909116610100171660011790555b6111c284611ca6565b60a080546001600160a01b031916331790556040516111e5908790602001612b73565b604051602081830303815290604052609c908051906020019061120992919061238c565b50604051600160e01b63f921e64702815273__stringutils___________________________9063f921e6479061124a908990600090600590600401612c0f565b60006040518083038186803b15801561126257600080fd5b505af4158015611276573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261129e9190810190612685565b80516112b291609d9160209091019061238c565b50609e869055609f85905560a180546001600160a01b0319166001600160a01b0385811691909117909155609b8054610100600160a81b03191661010092851692909202919091179055801561130e576000805461ff00191690555b505050505050565b6000846040516020016113299190612c37565b6040516020818303038152906040528051906020012090506000816040516020016113549190612b88565b604051602081830303815290604052805190602001209050609b60019054906101000a90046001600160a01b03166001600160a01b0316600182878787604051600081526020016040526040516113ae9493929190612c8c565b6020604051602081039080840390855afa1580156113d0573d6000803e3d6000fd5b505050602060405103516001600160a01b0316146113ed57600080fd5b60a054604051600160e01b632ea7791702815230916001600160a01b031690632ea7791790611420908c90600401612d35565b60206040518083038186803b15801561143857600080fd5b505afa15801561144c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061147091908101906124da565b6001600160a01b0316141561113c576114888a610579565b6001600160a01b038a8116600081815260a260209081526040808320948d1683529381528382206001810180546001600160801b03191660809790971c9690961790955560039094018c905560a49093529181902080546001600160a01b03191683179055517f0374c98cc473258135c2b4fe78a223aed02348572d6786136e30f6c1e7a67dd09061151f908b908e908c90612c64565b60405180910390a250505050505050505050565b609b5460ff161561155957604051600160e51b62461bcd028152600401610b4c90612d42565b6001600160a01b038316600090815260a860205260408120541561157b575060015b80156117015761158c333085611ef5565b6001600160a01b038416600090815260a8602052604081205460a7805490919081106115b457fe5b9060005260206000209060020201600001549050846001600160a01b03166323b872dd3330876040518463ffffffff1660e01b81526004016115f893929190612bad565b602060405180830381600087803b15801561161257600080fd5b505af1158015611626573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061164a91908101906125f2565b156116fb576001600160a01b038316600090815260a6602090815260408083208484529091529020546116839060801b6101f786610579565b6001600160a01b038416600081815260a6602090815260408083208684529091529081902080546001600160801b03191660809490941c9390931790925590517f4436a6654a7129488fb9eb2ae15ce2049af46f230597828facbd096053ab0924906116f29084908890612c56565b60405180910390a25b50611865565b33600090815260a560209081526040808320600160d91b6432ba3432b902845290915281205461173c9060801b61173786610579565b61215d565b60000b126118655733600090815260a560209081526040808320600160d91b6432ba3432b902845290915290205461177f9060801b61177a85610579565b6122a6565b33600090815260a560209081526040808320600160d91b6432ba3432b90280855290835281842080546001600160801b031916608096871c1790556001600160a01b038716845260a683528184209084529091529020546117e4911b6101f785610579565b6001600160a01b038316600081815260a660209081526040808320600160d91b6432ba3432b90284529091529081902080546001600160801b03191660809490941c9390931790925590517f4436a6654a7129488fb9eb2ae15ce2049af46f230597828facbd096053ab09249061185c908690612ceb565b60405180910390a25b50505050565b6001600160a01b038116600090815260a8602052604081205415611891575060016105da565b5060006105da565b6118a1611b9a565b6118c057604051600160e51b62461bcd028152600401610b4c90612d52565b609b80546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6001600160a01b031660009081526033602052604090205490565b61190b611b9a565b61192a57604051600160e51b62461bcd028152600401610b4c90612d52565b6068546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3606880546001600160a01b0319169055565b6000846040516020016119879190612c37565b6040516020818303038152906040528051906020012090506000816040516020016119b29190612b88565b604051602081830303815290604052805190602001209050609b60019054906101000a90046001600160a01b03166001600160a01b031660018287878760405160008152602001604052604051611a0c9493929190612c8c565b6020604051602081039080840390855afa158015611a2e573d6000803e3d6000fd5b505050602060405103516001600160a01b031614611a4b57600080fd5b87600160d91b6432ba3432b9021415611a9a576040516001600160a01b038a16908b156108fc02908c906000818181858888f19350505050158015611a94573d6000803e3d6000fd5b50611b1f565b604051600160e01b63a9059cbb0281526001600160a01b0388169063a9059cbb90611acb908c908e90600401612bd5565b602060405180830381600087803b158015611ae557600080fd5b505af1158015611af9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b1d91908101906125f2565b505b886001600160a01b03167f93671572d5a2c485b580939eaa77af90adb49104e41459a5ec7e945482a20ef1898c8a60405161151f93929190612c64565b611b64611b9a565b611b8357604051600160e51b62461bcd028152600401610b4c90612d52565b610ca86122b8565b6068546001600160a01b031690565b6068546000906001600160a01b0316611bb1611ef1565b6001600160a01b031614905090565b609d805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610a6b5780601f10610a4057610100808354040283529160200191610a6b565b6000610a87611c28611ef1565b84610b1585604051806060016040528060258152602001612eca6025913960346000611c52611ef1565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff6120cb16565b6000610a87611c96611ef1565b8484611faf565b609b5460ff1690565b600054610100900460ff1680611cbf5750611cbf612157565b80611ccd575060005460ff16155b611cec57604051600160e51b62461bcd028152600401610b4c90612d62565b600054610100900460ff16158015611d17576000805460ff1961ff0019909116610100171660011790555b606880546001600160a01b0319166001600160a01b0384811691909117918290556040519116906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a38015610c21576000805461ff00191690555050565b606060a7805480602002602001604051908101604052809291908181526020016000905b82821015611de75760008481526020908190206040805180820190915260028502909101805482526001908101546001600160a01b0316828401529083529092019101611d9f565b50505050905090565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b611e23611b9a565b611e4257604051600160e51b62461bcd028152600401610b4c90612d52565b611e4b816122f0565b50565b6000808211611e5c57600080fd5b6000600160801b8310611e7157608092831c92015b680100000000000000008310611e8957604092831c92015b6401000000008310611e9d57602092831c92015b620100008310611eaf57601092831c92015b6101008310611ec057600892831c92015b60108310611ed057600492831c92015b60048310611ee057600292831c92015b600283106109df5760010192915050565b3390565b6001600160a01b038316611f1e57604051600160e51b62461bcd028152600401610b4c90612d82565b6001600160a01b038216611f4757604051600160e51b62461bcd028152600401610b4c90612d15565b6001600160a01b0380841660008181526034602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590611fa2908590612d92565b60405180910390a3505050565b6001600160a01b038316611fd857604051600160e51b62461bcd028152600401610b4c90612d72565b6001600160a01b03821661200157604051600160e51b62461bcd028152600401610b4c90612cdb565b61204481604051806060016040528060268152602001612e7c602691396001600160a01b038616600090815260336020526040902054919063ffffffff6120cb16565b6001600160a01b038085166000908152603360205260408082209390935590841681522054612079908263ffffffff6120fa16565b6001600160a01b0380841660008181526033602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611fa2908590612d92565b600081848411156120f257604051600160e51b62461bcd028152600401610b4c9190612cca565b505050900390565b600082820183811015610b1e57604051600160e51b62461bcd028152600401610b4c90612d25565b609b805460ff191690556040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d1693390600090a1565b303b1590565b600060016001607f1b03608084901c16600160701b617fff0281111561218257600080fd5b60016001607f1b03608084901c16600160701b617fff028111156121a557600080fd5b6001600160801b03198581169085161415806121d15750600160701b617fff02826001600160801b0316105b6121da57600080fd5b6001600160801b031985811690851614156121fa576000925050506109df565b60006001607f1b8660801c6001600160801b03161015905060006001607f1b8660801c6001600160801b031610159050811561226557801561225657826001600160801b0316846001600160801b03161161225657600161225a565b6000195b9450505050506109df565b80156122785760019450505050506109df565b826001600160801b0316846001600160801b0316116122995760001961225a565b60019450505050506109df565b6000610b1e83600160ff1b84186105df565b609b805460ff191660011790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b6001600160a01b03811661231957604051600160e51b62461bcd028152600401610b4c90612d05565b6068546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3606880546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082019091526000808252602082015290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106123cd57805160ff19168380011785556123fa565b828001600101855582156123fa579182015b828111156123fa5782518255916020019190600101906123df565b5061240692915061240a565b5090565b610a9491905b808211156124065760008155600101612410565b6000610b1e8235612e02565b6000610b1e8251612e02565b6000610b1e8251612e0d565b6000610b1e8235610a94565b600082601f83011261246557600080fd5b815161247861247382612dc7565b612da0565b9150808252602083016020830185838301111561249457600080fd5b61249f838284612e45565b50505092915050565b6000610b1e8235612e1e565b6000602082840312156124c657600080fd5b60006124d28484612424565b949350505050565b6000602082840312156124ec57600080fd5b60006124d28484612430565b6000806040838503121561250b57600080fd5b60006125178585612424565b925050602061252885828601612424565b9150509250929050565b60008060006060848603121561254757600080fd5b60006125538686612424565b935050602061256486828701612424565b925050604061257586828701612448565b9150509250925092565b6000806040838503121561259257600080fd5b600061259e8585612424565b925050602061252885828601612448565b6000806000606084860312156125c457600080fd5b60006125d08686612424565b93505060206125e186828701612448565b925050604061257586828701612424565b60006020828403121561260457600080fd5b60006124d2848461243c565b600080600080600060a0868803121561262857600080fd5b60006126348888612448565b955050602061264588828901612448565b945050604061265688828901612424565b935050606061266788828901612424565b925050608061267888828901612424565b9150509295509295909350565b60006020828403121561269757600080fd5b815167ffffffffffffffff8111156126ae57600080fd5b6124d284828501612454565b600080600080600080600080610100898b0312156126d757600080fd5b60006126e38b8b612448565b98505060206126f48b828c01612424565b97505060406127058b828c01612448565b96505060606127168b828c01612424565b95505060806127278b828c01612448565b94505060a06127388b828c016124a8565b93505060c06127498b828c01612448565b92505060e061275a8b828c01612448565b9150509295985092959890939650565b60006127768383612b46565b505060400190565b61278781612e24565b82525050565b61278781612e02565b60006127a182612df5565b6127ab8185612df9565b93506127b683612def565b60005b828110156127e1576127cc86835161276a565b95506127d782612def565b91506001016127b9565b5093949350505050565b61278781612e0d565b61278781610a94565b61278761280982610a94565b610a94565b61278781612e2f565b600061282282612df5565b61282c8185612df9565b935061283c818560208601612e45565b61284581612e71565b9093019392505050565b600061285c602383612df9565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464728152600160e81b6265737302602082015260400192915050565b600160d91b6432ba3432b9029052565b60006128b4601c836105da565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c0192915050565b60006128ed602683612df9565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20618152600160d01b6564647265737302602082015260400192915050565b6000612938602283612df9565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472658152600160f01b61737302602082015260400192915050565b600061297f601b83612df9565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b600160ca1b66159a58509bdb99029052565b60006129ca601883612df9565b7f436f6e747261637420696e207061757365642073746174650000000000000000815260200192915050565b6000612a03602083612df9565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572815260200192915050565b6000612a3c602e83612df9565b7f436f6e747261637420696e7374616e63652068617320616c726561647920626581527f656e20696e697469616c697a6564000000000000000000000000000000000000602082015260400192915050565b6000612a9b600683612df9565b600160d01b654c32746f4c3102815260200192915050565b6000612ac0602583612df9565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061648152600160d81b64647265737302602082015260400192915050565b6000612b0a602483612df9565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164648152600160e01b637265737302602082015260400192915050565b80516040830190612b5784826127f4565b506020820151611865602085018261278d565b61278781612e1e565b6000612b7f82846127fd565b50602001919050565b6000612b93826128a7565b9150612b7f82846127fd565b602081016109df828461278d565b60608101612bbb828661277e565b612bc8602083018561277e565b6124d260408301846127f4565b60408101612be3828561278d565b610b1e60208301846127f4565b60208082528101610b1e8184612796565b602081016109df82846127eb565b60608101612c1d82866127f4565b612c2a602083018561280e565b6124d2604083018461280e565b60408101612c4582846127f4565b8181036020830152610b1e81612a8e565b60408101612be382856127f4565b60608101612c7282866127f4565b612c7f60208301856127f4565b6124d2604083018461278d565b60808101612c9a82876127f4565b612ca76020830186612b6a565b612cb460408301856127f4565b612cc160608301846127f4565b95945050505050565b60208082528101610b1e8184612817565b602080825281016109df8161284f565b60408101612cf882612897565b6109df60208301846127f4565b602080825281016109df816128e0565b602080825281016109df8161292b565b602080825281016109df81612972565b60408101612cf8826129ab565b602080825281016109df816129bd565b602080825281016109df816129f6565b602080825281016109df81612a2f565b602080825281016109df81612ab3565b602080825281016109df81612afd565b602081016109df82846127f4565b60405181810167ffffffffffffffff81118282101715612dbf57600080fd5b604052919050565b600067ffffffffffffffff821115612dde57600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b60006109df82612e12565b151590565b6001600160a01b031690565b60ff1690565b60006109df82612e3a565b60006109df82610a94565b60006109df82612e02565b60005b83811015612e60578181015183820152602001612e48565b838111156118655750506000910152565b601f01601f19169056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a72305820970c5f7cf5b9633495cba95ca3c771d97511d5b75b58de397702c3870472e45f6c6578706572696d656e74616cf50037",
741
- "deployedBytecode": "0x60806040526004361061019c5760003560e01c806370a08231116100ec578063a457c2d71161008a578063c4d66de811610064578063c4d66de8146104f7578063d3c7c2c714610517578063dd62ed3e14610539578063f2fde38b146105595761019c565b8063a457c2d7146104a2578063a9059cbb146104c2578063b187bd26146104e25761019c565b80638456cb59116100c65780638456cb59146104415780638da5cb5b146104565780638f32d59b1461047857806395d89b411461048d5761019c565b806370a08231146103ec578063715018a61461040c578063720bd707146104215761019c565b80633f4ba83a11610159578063464ff5e611610133578063464ff5e61461036c5780634ba3f9881461038c5780635d4f5b1c146103ac5780636c19e783146103cc5761019c565b80633f4ba83a146103175780633f66e3dd1461032c578063464997701461034c5761019c565b806306fdde031461023b578063095ea7b31461026657806318160ddd1461029357806323b872dd146102b55780632ceafc27146102d557806339509351146102f7575b346101a657600080fd5b36156101b157600080fd5b609b5460ff16156101c157600080fd5b33600090815260a560209081526040808320600160d91b6432ba3432b90284529091529020546101fc9060801b6101f734610579565b6105df565b33600090815260a560209081526040808320600160d91b6432ba3432b9028452909152902080546001600160801b03191660809290921c919091179055005b34801561024757600080fd5b506102506109e5565b60405161025d9190612cca565b60405180910390f35b34801561027257600080fd5b5061028661028136600461257f565b610a73565b60405161025d9190612c01565b34801561029f57600080fd5b506102a8610a90565b60405161025d9190612d92565b3480156102c157600080fd5b506102866102d0366004612532565b610a97565b3480156102e157600080fd5b506102f56102f036600461257f565b610b25565b005b34801561030357600080fd5b5061028661031236600461257f565b610c25565b34801561032357600080fd5b506102f5610c79565b34801561033857600080fd5b506102f56103473660046126ba565b610caa565b34801561035857600080fd5b506102f5610367366004612610565b611148565b34801561037857600080fd5b506102f56103873660046126ba565b611316565b34801561039857600080fd5b506102f56103a73660046125af565b611533565b3480156103b857600080fd5b506102866103c73660046124b4565b61186b565b3480156103d857600080fd5b506102f56103e73660046124b4565b611899565b3480156103f857600080fd5b506102a86104073660046124b4565b6118e8565b34801561041857600080fd5b506102f5611903565b34801561042d57600080fd5b506102f561043c3660046126ba565b611974565b34801561044d57600080fd5b506102f5611b5c565b34801561046257600080fd5b5061046b611b8b565b60405161025d9190612b9f565b34801561048457600080fd5b50610286611b9a565b34801561049957600080fd5b50610250611bc0565b3480156104ae57600080fd5b506102866104bd36600461257f565b611c1b565b3480156104ce57600080fd5b506102866104dd36600461257f565b611c89565b3480156104ee57600080fd5b50610286611c9d565b34801561050357600080fd5b506102f56105123660046124b4565b611ca6565b34801561052357600080fd5b5061052c611d7b565b60405161025d9190612bf0565b34801561054557600080fd5b506102a86105543660046124f8565b611df0565b34801561056557600080fd5b506102f56105743660046124b4565b611e1b565b600081610588575060006105da565b81600061059482611e4e565b905060708110156105ad578060700382901b91506105c0565b60708111156105c0576070810382901c91505b613fff0160701b6001600160701b03919091161760801b90505b919050565b6000617fff6001600160801b03608085811c8216607090811c8416939186901c90921690911c8116908214156106555780617fff141561064b576001600160801b031985811690851614156106385784925050506109df565b50600160ef1b61ffff0291506109df9050565b84925050506109df565b80617fff14156106695783925050506109df565b6001607f1b608086901c6001600160801b0381169190911015906001600160701b03168361069a57600193506106a1565b600160701b175b6001607f1b608087901c6001600160801b0381169190911015906001600160701b0316846106d257600194506106d9565b600160701b175b82610709576001600160801b03198816600160ff1b146106f957876106fc565b60005b96505050505050506109df565b80610729576001600160801b03198916600160ff1b146106f957886106fc565b848603841515831515141561083757607081131561075057899750505050505050506109df565b60008113156107625790811c90610791565b606f1981121561077b57889750505050505050506109df565b6000811215610791578060000384901c93508596505b92810192600160711b84106107ac576001968701969390931c925b86617fff14156107e157846107c957600160f01b617fff026107d3565b6001600160f01b03195b9750505050505050506109df565b600160701b8410156107f65760009650610803565b6001600160701b03841693505b83607088901b8661081557600061081b565b6001607f1b5b6001600160801b0316171760801b9750505050505050506109df565b600081131561085257600184901b9350600187039650610869565b600081121561086957600182901b91506001860396505b607081131561087b57600191506108c8565b6001811315610898576001810360018303901c60010191506108c8565b606f198112156108ab57600193506108c8565b6000198112156108c8576001816000030360018503901c60010193505b8184106108d95781840393506108e2565b83820393508294505b836108f85750600096506109df95505050505050565b600061090385611e4e565b9050806071141561092957600185901c6001600160701b03169450600188019750610978565b607081101561096b57607081900380891115610958578086901b6001600160701b031695508089039850610965565b600098600019019590951b945b50610978565b6001600160701b03851694505b87617fff14156109ae578561099557600160f01b617fff0261099f565b6001600160f01b03195b985050505050505050506109df565b84607089901b876109c05760006109c6565b6001607f1b5b6001600160801b0316171760801b985050505050505050505b92915050565b609c805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610a6b5780601f10610a4057610100808354040283529160200191610a6b565b820191906000526020600020905b815481529060010190602001808311610a4e57829003601f168201915b505050505081565b6000610a87610a80611ef1565b8484611ef5565b50600192915050565b6035545b90565b6000610aa4848484611faf565b610b1a84610ab0611ef1565b610b1585604051806060016040528060288152602001612ea2602891396001600160a01b038a16600090815260346020526040812090610aee611ef1565b6001600160a01b03168152602081019190915260400160002054919063ffffffff6120cb16565b611ef5565b5060015b9392505050565b610b2d611b9a565b610b5557604051600160e51b62461bcd028152600401610b4c90612d52565b60405180910390fd5b6001600160a01b038216600090815260a86020526040902054610c2157610b7a612375565b506040805180820182528281526001600160a01b03848116602080840182815260a78054600181018255600082815296517fb68792697ed876af8b4858b316f5b54d81f6861191ad2950c1fde6c3dc7b3dea60029092029182015591517fb68792697ed876af8b4858b316f5b54d81f6861191ad2950c1fde6c3dc7b3deb90920180546001600160a01b0319169290951691909117909355915490835260a8909152919020555b5050565b6000610a87610c32611ef1565b84610b158560346000610c43611ef1565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6120fa16565b610c81611b9a565b610ca057604051600160e51b62461bcd028152600401610b4c90612d52565b610ca8612122565b565b600084604051602001610cbd9190612c37565b604051602081830303815290604052805190602001209050600081604051602001610ce89190612b88565b604051602081830303815290604052805190602001209050609b60019054906101000a90046001600160a01b03166001600160a01b031660018287878760405160008152602001604052604051610d429493929190612c8c565b6020604051602081039080840390855afa158015610d64573d6000803e3d6000fd5b505050602060405103516001600160a01b031614610d8157600080fd5b60a054604051600160e01b632ea7791702815230916001600160a01b031690632ea7791790610db4908c90600401612d35565b60206040518083038186803b158015610dcc57600080fd5b505afa158015610de0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e0491908101906124da565b6001600160a01b0316141561113c57600060a46000896001600160a01b03166001600160a01b0316815260200190815260200160002060009054906101000a90046001600160a01b0316905060a26000826001600160a01b03166001600160a01b031681526020019081526020016000206000896001600160a01b03166001600160a01b031681526020019081526020016000206000018a90806001815401808255809150509060018203906000526020600020016000909192909190916101000a8154816001600160a01b0302191690836001600160a01b0316021790555050610f4a60a26000836001600160a01b03166001600160a01b0316815260200190815260200160002060008a6001600160a01b03166001600160a01b0316815260200190815260200160002060010160109054906101000a900460801b6101f78d610579565b60a26000836001600160a01b03166001600160a01b0316815260200190815260200160002060008a6001600160a01b03166001600160a01b0316815260200190815260200160002060010160106101000a8154816001600160801b03021916908360801c021790555060a360008b6001600160a01b03166001600160a01b031681526020019081526020016000206000896001600160a01b03166001600160a01b031681526020019081526020016000206000018190806001815401808255809150509060018203906000526020600020016000909192909190916101000a8154816001600160a01b0302191690836001600160a01b03160217905550506110ad60a360008c6001600160a01b03166001600160a01b0316815260200190815260200160002060008a6001600160a01b03166001600160a01b0316815260200190815260200160002060010160109054906101000a900460801b6101f78d610579565b6001600160a01b038b8116600081815260a360209081526040808320948e16835293905282902060018101805460809590951c600160801b026001600160801b039095169490941790935560039092018b9055517f28941375b90ddb023a4c1149e157b4289100de23ecc1a208c7ba68fd31b8aa8290611132908c908f908d90612c64565b60405180910390a2505b50505050505050505050565b600054610100900460ff16806111615750611161612157565b8061116f575060005460ff16155b61118e57604051600160e51b62461bcd028152600401610b4c90612d62565b600054610100900460ff161580156111b9576000805460ff1961ff0019909116610100171660011790555b6111c284611ca6565b60a080546001600160a01b031916331790556040516111e5908790602001612b73565b604051602081830303815290604052609c908051906020019061120992919061238c565b50604051600160e01b63f921e64702815273__stringutils___________________________9063f921e6479061124a908990600090600590600401612c0f565b60006040518083038186803b15801561126257600080fd5b505af4158015611276573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261129e9190810190612685565b80516112b291609d9160209091019061238c565b50609e869055609f85905560a180546001600160a01b0319166001600160a01b0385811691909117909155609b8054610100600160a81b03191661010092851692909202919091179055801561130e576000805461ff00191690555b505050505050565b6000846040516020016113299190612c37565b6040516020818303038152906040528051906020012090506000816040516020016113549190612b88565b604051602081830303815290604052805190602001209050609b60019054906101000a90046001600160a01b03166001600160a01b0316600182878787604051600081526020016040526040516113ae9493929190612c8c565b6020604051602081039080840390855afa1580156113d0573d6000803e3d6000fd5b505050602060405103516001600160a01b0316146113ed57600080fd5b60a054604051600160e01b632ea7791702815230916001600160a01b031690632ea7791790611420908c90600401612d35565b60206040518083038186803b15801561143857600080fd5b505afa15801561144c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061147091908101906124da565b6001600160a01b0316141561113c576114888a610579565b6001600160a01b038a8116600081815260a260209081526040808320948d1683529381528382206001810180546001600160801b03191660809790971c9690961790955560039094018c905560a49093529181902080546001600160a01b03191683179055517f0374c98cc473258135c2b4fe78a223aed02348572d6786136e30f6c1e7a67dd09061151f908b908e908c90612c64565b60405180910390a250505050505050505050565b609b5460ff161561155957604051600160e51b62461bcd028152600401610b4c90612d42565b6001600160a01b038316600090815260a860205260408120541561157b575060015b80156117015761158c333085611ef5565b6001600160a01b038416600090815260a8602052604081205460a7805490919081106115b457fe5b9060005260206000209060020201600001549050846001600160a01b03166323b872dd3330876040518463ffffffff1660e01b81526004016115f893929190612bad565b602060405180830381600087803b15801561161257600080fd5b505af1158015611626573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061164a91908101906125f2565b156116fb576001600160a01b038316600090815260a6602090815260408083208484529091529020546116839060801b6101f786610579565b6001600160a01b038416600081815260a6602090815260408083208684529091529081902080546001600160801b03191660809490941c9390931790925590517f4436a6654a7129488fb9eb2ae15ce2049af46f230597828facbd096053ab0924906116f29084908890612c56565b60405180910390a25b50611865565b33600090815260a560209081526040808320600160d91b6432ba3432b902845290915281205461173c9060801b61173786610579565b61215d565b60000b126118655733600090815260a560209081526040808320600160d91b6432ba3432b902845290915290205461177f9060801b61177a85610579565b6122a6565b33600090815260a560209081526040808320600160d91b6432ba3432b90280855290835281842080546001600160801b031916608096871c1790556001600160a01b038716845260a683528184209084529091529020546117e4911b6101f785610579565b6001600160a01b038316600081815260a660209081526040808320600160d91b6432ba3432b90284529091529081902080546001600160801b03191660809490941c9390931790925590517f4436a6654a7129488fb9eb2ae15ce2049af46f230597828facbd096053ab09249061185c908690612ceb565b60405180910390a25b50505050565b6001600160a01b038116600090815260a8602052604081205415611891575060016105da565b5060006105da565b6118a1611b9a565b6118c057604051600160e51b62461bcd028152600401610b4c90612d52565b609b80546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6001600160a01b031660009081526033602052604090205490565b61190b611b9a565b61192a57604051600160e51b62461bcd028152600401610b4c90612d52565b6068546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3606880546001600160a01b0319169055565b6000846040516020016119879190612c37565b6040516020818303038152906040528051906020012090506000816040516020016119b29190612b88565b604051602081830303815290604052805190602001209050609b60019054906101000a90046001600160a01b03166001600160a01b031660018287878760405160008152602001604052604051611a0c9493929190612c8c565b6020604051602081039080840390855afa158015611a2e573d6000803e3d6000fd5b505050602060405103516001600160a01b031614611a4b57600080fd5b87600160d91b6432ba3432b9021415611a9a576040516001600160a01b038a16908b156108fc02908c906000818181858888f19350505050158015611a94573d6000803e3d6000fd5b50611b1f565b604051600160e01b63a9059cbb0281526001600160a01b0388169063a9059cbb90611acb908c908e90600401612bd5565b602060405180830381600087803b158015611ae557600080fd5b505af1158015611af9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b1d91908101906125f2565b505b886001600160a01b03167f93671572d5a2c485b580939eaa77af90adb49104e41459a5ec7e945482a20ef1898c8a60405161151f93929190612c64565b611b64611b9a565b611b8357604051600160e51b62461bcd028152600401610b4c90612d52565b610ca86122b8565b6068546001600160a01b031690565b6068546000906001600160a01b0316611bb1611ef1565b6001600160a01b031614905090565b609d805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610a6b5780601f10610a4057610100808354040283529160200191610a6b565b6000610a87611c28611ef1565b84610b1585604051806060016040528060258152602001612eca6025913960346000611c52611ef1565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff6120cb16565b6000610a87611c96611ef1565b8484611faf565b609b5460ff1690565b600054610100900460ff1680611cbf5750611cbf612157565b80611ccd575060005460ff16155b611cec57604051600160e51b62461bcd028152600401610b4c90612d62565b600054610100900460ff16158015611d17576000805460ff1961ff0019909116610100171660011790555b606880546001600160a01b0319166001600160a01b0384811691909117918290556040519116906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a38015610c21576000805461ff00191690555050565b606060a7805480602002602001604051908101604052809291908181526020016000905b82821015611de75760008481526020908190206040805180820190915260028502909101805482526001908101546001600160a01b0316828401529083529092019101611d9f565b50505050905090565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b611e23611b9a565b611e4257604051600160e51b62461bcd028152600401610b4c90612d52565b611e4b816122f0565b50565b6000808211611e5c57600080fd5b6000600160801b8310611e7157608092831c92015b680100000000000000008310611e8957604092831c92015b6401000000008310611e9d57602092831c92015b620100008310611eaf57601092831c92015b6101008310611ec057600892831c92015b60108310611ed057600492831c92015b60048310611ee057600292831c92015b600283106109df5760010192915050565b3390565b6001600160a01b038316611f1e57604051600160e51b62461bcd028152600401610b4c90612d82565b6001600160a01b038216611f4757604051600160e51b62461bcd028152600401610b4c90612d15565b6001600160a01b0380841660008181526034602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590611fa2908590612d92565b60405180910390a3505050565b6001600160a01b038316611fd857604051600160e51b62461bcd028152600401610b4c90612d72565b6001600160a01b03821661200157604051600160e51b62461bcd028152600401610b4c90612cdb565b61204481604051806060016040528060268152602001612e7c602691396001600160a01b038616600090815260336020526040902054919063ffffffff6120cb16565b6001600160a01b038085166000908152603360205260408082209390935590841681522054612079908263ffffffff6120fa16565b6001600160a01b0380841660008181526033602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611fa2908590612d92565b600081848411156120f257604051600160e51b62461bcd028152600401610b4c9190612cca565b505050900390565b600082820183811015610b1e57604051600160e51b62461bcd028152600401610b4c90612d25565b609b805460ff191690556040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d1693390600090a1565b303b1590565b600060016001607f1b03608084901c16600160701b617fff0281111561218257600080fd5b60016001607f1b03608084901c16600160701b617fff028111156121a557600080fd5b6001600160801b03198581169085161415806121d15750600160701b617fff02826001600160801b0316105b6121da57600080fd5b6001600160801b031985811690851614156121fa576000925050506109df565b60006001607f1b8660801c6001600160801b03161015905060006001607f1b8660801c6001600160801b031610159050811561226557801561225657826001600160801b0316846001600160801b03161161225657600161225a565b6000195b9450505050506109df565b80156122785760019450505050506109df565b826001600160801b0316846001600160801b0316116122995760001961225a565b60019450505050506109df565b6000610b1e83600160ff1b84186105df565b609b805460ff191660011790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b6001600160a01b03811661231957604051600160e51b62461bcd028152600401610b4c90612d05565b6068546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3606880546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082019091526000808252602082015290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106123cd57805160ff19168380011785556123fa565b828001600101855582156123fa579182015b828111156123fa5782518255916020019190600101906123df565b5061240692915061240a565b5090565b610a9491905b808211156124065760008155600101612410565b6000610b1e8235612e02565b6000610b1e8251612e02565b6000610b1e8251612e0d565b6000610b1e8235610a94565b600082601f83011261246557600080fd5b815161247861247382612dc7565b612da0565b9150808252602083016020830185838301111561249457600080fd5b61249f838284612e45565b50505092915050565b6000610b1e8235612e1e565b6000602082840312156124c657600080fd5b60006124d28484612424565b949350505050565b6000602082840312156124ec57600080fd5b60006124d28484612430565b6000806040838503121561250b57600080fd5b60006125178585612424565b925050602061252885828601612424565b9150509250929050565b60008060006060848603121561254757600080fd5b60006125538686612424565b935050602061256486828701612424565b925050604061257586828701612448565b9150509250925092565b6000806040838503121561259257600080fd5b600061259e8585612424565b925050602061252885828601612448565b6000806000606084860312156125c457600080fd5b60006125d08686612424565b93505060206125e186828701612448565b925050604061257586828701612424565b60006020828403121561260457600080fd5b60006124d2848461243c565b600080600080600060a0868803121561262857600080fd5b60006126348888612448565b955050602061264588828901612448565b945050604061265688828901612424565b935050606061266788828901612424565b925050608061267888828901612424565b9150509295509295909350565b60006020828403121561269757600080fd5b815167ffffffffffffffff8111156126ae57600080fd5b6124d284828501612454565b600080600080600080600080610100898b0312156126d757600080fd5b60006126e38b8b612448565b98505060206126f48b828c01612424565b97505060406127058b828c01612448565b96505060606127168b828c01612424565b95505060806127278b828c01612448565b94505060a06127388b828c016124a8565b93505060c06127498b828c01612448565b92505060e061275a8b828c01612448565b9150509295985092959890939650565b60006127768383612b46565b505060400190565b61278781612e24565b82525050565b61278781612e02565b60006127a182612df5565b6127ab8185612df9565b93506127b683612def565b60005b828110156127e1576127cc86835161276a565b95506127d782612def565b91506001016127b9565b5093949350505050565b61278781612e0d565b61278781610a94565b61278761280982610a94565b610a94565b61278781612e2f565b600061282282612df5565b61282c8185612df9565b935061283c818560208601612e45565b61284581612e71565b9093019392505050565b600061285c602383612df9565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464728152600160e81b6265737302602082015260400192915050565b600160d91b6432ba3432b9029052565b60006128b4601c836105da565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c0192915050565b60006128ed602683612df9565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20618152600160d01b6564647265737302602082015260400192915050565b6000612938602283612df9565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472658152600160f01b61737302602082015260400192915050565b600061297f601b83612df9565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b600160ca1b66159a58509bdb99029052565b60006129ca601883612df9565b7f436f6e747261637420696e207061757365642073746174650000000000000000815260200192915050565b6000612a03602083612df9565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572815260200192915050565b6000612a3c602e83612df9565b7f436f6e747261637420696e7374616e63652068617320616c726561647920626581527f656e20696e697469616c697a6564000000000000000000000000000000000000602082015260400192915050565b6000612a9b600683612df9565b600160d01b654c32746f4c3102815260200192915050565b6000612ac0602583612df9565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061648152600160d81b64647265737302602082015260400192915050565b6000612b0a602483612df9565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164648152600160e01b637265737302602082015260400192915050565b80516040830190612b5784826127f4565b506020820151611865602085018261278d565b61278781612e1e565b6000612b7f82846127fd565b50602001919050565b6000612b93826128a7565b9150612b7f82846127fd565b602081016109df828461278d565b60608101612bbb828661277e565b612bc8602083018561277e565b6124d260408301846127f4565b60408101612be3828561278d565b610b1e60208301846127f4565b60208082528101610b1e8184612796565b602081016109df82846127eb565b60608101612c1d82866127f4565b612c2a602083018561280e565b6124d2604083018461280e565b60408101612c4582846127f4565b8181036020830152610b1e81612a8e565b60408101612be382856127f4565b60608101612c7282866127f4565b612c7f60208301856127f4565b6124d2604083018461278d565b60808101612c9a82876127f4565b612ca76020830186612b6a565b612cb460408301856127f4565b612cc160608301846127f4565b95945050505050565b60208082528101610b1e8184612817565b602080825281016109df8161284f565b60408101612cf882612897565b6109df60208301846127f4565b602080825281016109df816128e0565b602080825281016109df8161292b565b602080825281016109df81612972565b60408101612cf8826129ab565b602080825281016109df816129bd565b602080825281016109df816129f6565b602080825281016109df81612a2f565b602080825281016109df81612ab3565b602080825281016109df81612afd565b602081016109df82846127f4565b60405181810167ffffffffffffffff81118282101715612dbf57600080fd5b604052919050565b600067ffffffffffffffff821115612dde57600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b60006109df82612e12565b151590565b6001600160a01b031690565b60ff1690565b60006109df82612e3a565b60006109df82610a94565b60006109df82612e02565b60005b83811015612e60578181015183820152602001612e48565b838111156118655750506000910152565b601f01601f19169056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a72305820970c5f7cf5b9633495cba95ca3c771d97511d5b75b58de397702c3870472e45f6c6578706572696d656e74616cf50037",
739
+ "metadata": "{\"compiler\":{\"version\":\"0.5.7+commit.6da8b019\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"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\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"},{\"name\":\"_name\",\"type\":\"bytes32\"}],\"name\":\"supportTokens\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\"},{\"name\":\"purchaser\",\"type\":\"address\"},{\"name\":\"currency\",\"type\":\"bytes32\"},{\"name\":\"purchasedBond\",\"type\":\"address\"},{\"name\":\"_hashedMessage\",\"type\":\"bytes32\"},{\"name\":\"_v\",\"type\":\"uint8\"},{\"name\":\"_r\",\"type\":\"bytes32\"},{\"name\":\"_s\",\"type\":\"bytes32\"}],\"name\":\"purchase\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\"},{\"name\":\"_currency\",\"type\":\"bytes32\"},{\"name\":\"_owner\",\"type\":\"address\"},{\"name\":\"_fee\",\"type\":\"address\"},{\"name\":\"_bridge\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\"},{\"name\":\"issuer\",\"type\":\"address\"},{\"name\":\"currency\",\"type\":\"bytes32\"},{\"name\":\"issuedBond\",\"type\":\"address\"},{\"name\":\"_hashedMessage\",\"type\":\"bytes32\"},{\"name\":\"_v\",\"type\":\"uint8\"},{\"name\":\"_r\",\"type\":\"bytes32\"},{\"name\":\"_s\",\"type\":\"bytes32\"}],\"name\":\"addIssuedBalance\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"},{\"name\":\"_amount\",\"type\":\"uint256\"},{\"name\":\"_buyer\",\"type\":\"address\"}],\"name\":\"requestIssue\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"checkSupportForToken\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_signer\",\"type\":\"address\"}],\"name\":\"setSigner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\"},{\"name\":\"payOutTo\",\"type\":\"address\"},{\"name\":\"currency\",\"type\":\"bytes32\"},{\"name\":\"redeemedToken\",\"type\":\"address\"},{\"name\":\"_hashedMessage\",\"type\":\"bytes32\"},{\"name\":\"_v\",\"type\":\"uint8\"},{\"name\":\"_r\",\"type\":\"bytes32\"},{\"name\":\"_s\",\"type\":\"bytes32\"}],\"name\":\"redeemBond\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"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\"},{\"constant\":true,\"inputs\":[],\"name\":\"isPaused\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getSupportedTokens\",\"outputs\":[{\"components\":[{\"name\":\"tokenName\",\"type\":\"bytes32\"},{\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"\",\"type\":\"tuple[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"issuer\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"currency\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"BondIssueRequest\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"issuer\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"collateralCurrency\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"issuedAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"BondIssued\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"redeemer\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"redemptionCurrency\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"redemptionAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"BondRedeemed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"purchaser\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"paidInCurrency\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"purchasedAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"BondPurchased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"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\"},{\"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\"}],\"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}.\"},\"checkSupportForToken(address)\":{\"params\":{\"_token\":\"token that is supported for issuing cash tokens\\r\"}},\"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.\"},\"initialize(address)\":{\"details\":\"Initializes the contract setting the deployer as the initial owner.\"},\"isOwner()\":{\"details\":\"Returns true if the caller is the current owner.\"},\"isPaused()\":{\"return\":\"True: contract is paused\\rFalse: contract is not paused\\r\"},\"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.\"},\"requestIssue(address,uint256,address)\":{\"params\":{\"_amount\":\"amount of token that is transferred from investor to this bond token issuing contract\\r\",\"_token\":\"address of token used by investor to buy the bond token\\r\"}},\"supportTokens(address,bytes32)\":{\"params\":{\"_name\":\"name of token supported\\r\",\"_token\":\"address of token supported\\r\"}},\"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\":{\"checkSupportForToken(address)\":{\"notice\":\"Checks if a specified token is supported for issuing Verified cash tokens\\r\"},\"getSupportedTokens()\":{\"notice\":\"Returns array of tokens supported\\r\"},\"isPaused()\":{\"notice\":\"returns whether or not the contract is paused\\r\"},\"requestIssue(address,uint256,address)\":{\"notice\":\"Used by external apps (eg, exchange, wallet) to buy Verified bond token \\r\"},\"supportTokens(address,bytes32)\":{\"notice\":\"Specifies list of supported tokens that can be deposited to issue Verified cash tokens\\r\"}}}},\"settings\":{\"compilationTarget\":{\"project:/contracts/Bond.sol\":\"Bond\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-ethereum-package/contracts/GSN/Context.sol\":{\"keccak256\":\"0x3491510fa4862af1a43f6c860d9cf7392240196540cd3c0eea79d374d419c5a1\",\"urls\":[\"bzzr://5cddbf3b74b775a8670757a6b8e108dac17dac20253f35f4c729e9cb6bea4ed3\"]},\"@openzeppelin/contracts-ethereum-package/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzzr://292843005e754e752644f767477ec5ad7a1ffc91ddb18c38b8079c62f3993cad\"]},\"@openzeppelin/contracts-ethereum-package/contracts/ownership/Ownable.sol\":{\"keccak256\":\"0xd7e8ab76fa35c4d8d35a06a6ed538cadab8b75a1aa00594ced1568b2c0cadde3\",\"urls\":[\"bzzr://b4c855b32d75f2a4969bfbd530b6934b69f12f28584b3746967e1ca64e024bd9\"]},\"@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x2a474399663812668bb8e9c9e7d011d54fd09de386bd6e9fcb2407a677ebd1aa\",\"urls\":[\"bzzr://3d70561b32ba1494d2b2df362e92dff5ab869d27e2fe35cf9bf3a8ae137cffd3\"]},\"@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe5bb0f57cff3e299f360052ba50f1ea0fff046df2be070b6943e0e3c3fdad8a9\",\"urls\":[\"bzzr://cf2d583b8dce38d0617fdcd65f2fd9f126fe17b7f683b5a515ea9d2762d8b062\"]},\"@openzeppelin/upgrades/contracts/Initializable.sol\":{\"keccak256\":\"0x9bfec92e36234ecc99b5d37230acb6cd1f99560233753162204104a4897e8721\",\"urls\":[\"bzzr://f75d88b16fe25a9e19b3512691c496e2bb6d8451bc9a636196c4e17ca9b40201\"]},\"abdk-libraries-solidity/ABDKMathQuad.sol\":{\"keccak256\":\"0x0ae8a1dd1dce31cc6b46fa58d6a4b72353ece1c96a8497aa0d494797dc94bc36\",\"urls\":[\"bzzr://d29078c35091aee1858898e0e6f1572ab214634d82bee162efbb90b32a9a66cb\"]},\"project:/contracts/Bond.sol\":{\"keccak256\":\"0xff78883bf59d084683989bd2bf7d690d278453977cde1b10353bd460aa69b6a7\",\"urls\":[\"bzzr://0366b5d54c5ba549a0bbff1c7d0139d63ec60aac3685ae31b410c4dd4c4def06\"]},\"project:/contracts/interfaces/IBond.sol\":{\"keccak256\":\"0x865b390946b6faa66ff8f3434fe714b2f081926b1e826ce1494c2b2df949d669\",\"urls\":[\"bzzr://6fd782eda38cbf7c968a841a9a4af9a6cbbf01fe19a8f04053fd7c3b9d8214f1\"]},\"project:/contracts/interfaces/IFactory.sol\":{\"keccak256\":\"0x457dd97882020483b09c23512138113ea9313acfa694e6648fc715392876d4f4\",\"urls\":[\"bzzr://bab93e78ef9150df7a871fcfaa4ef12075128c921bdc0d88b9b23a87bba87d59\"]},\"project:/contracts/interfaces/IRates.sol\":{\"keccak256\":\"0xc32e70549fdb4e147901361b00ddc891db5d811cdea0db365695ab52106ff6fb\",\"urls\":[\"bzzr://3dd800321631ec5f22fbe955f807762ee0537e2ec8f37f27ecede1e9a333d39f\"]},\"project:/contracts/utilities/Pausable.sol\":{\"keccak256\":\"0x96eceae12582eec38cc9706095b6f7d038b00dc36d98a02d234e7051b42a2a6a\",\"urls\":[\"bzzr://e5e1adfa3d22d6769d754f3f7f74eb1b12f5327b56b49584d34490b9d747d9b3\"]},\"project:/contracts/utilities/StringUtils.sol\":{\"keccak256\":\"0x18f1be0daaca27eba3c56a0da1613331cd1a37eab4970307909d8be77d6fc34e\",\"urls\":[\"bzzr://e3b548071313cf6f3cdaf33069f4648feadeb37fb33c75fe6fd40e8310f8ff7c\"]}},\"version\":1}",
740
+ "bytecode": "0x6080604052612f28806100136000396000f3fe60806040526004361061019c5760003560e01c806370a08231116100ec578063a457c2d71161008a578063c4d66de811610064578063c4d66de8146104f7578063d3c7c2c714610517578063dd62ed3e14610539578063f2fde38b146105595761019c565b8063a457c2d7146104a2578063a9059cbb146104c2578063b187bd26146104e25761019c565b80638456cb59116100c65780638456cb59146104415780638da5cb5b146104565780638f32d59b1461047857806395d89b411461048d5761019c565b806370a08231146103ec578063715018a61461040c578063720bd707146104215761019c565b80633f4ba83a11610159578063464ff5e611610133578063464ff5e61461036c5780634ba3f9881461038c5780635d4f5b1c146103ac5780636c19e783146103cc5761019c565b80633f4ba83a146103175780633f66e3dd1461032c578063464997701461034c5761019c565b806306fdde031461023b578063095ea7b31461026657806318160ddd1461029357806323b872dd146102b55780632ceafc27146102d557806339509351146102f7575b346101a657600080fd5b36156101b157600080fd5b609b5460ff16156101c157600080fd5b33600090815260a560209081526040808320600160d91b6432ba3432b90284529091529020546101fc9060801b6101f734610579565b6105df565b33600090815260a560209081526040808320600160d91b6432ba3432b9028452909152902080546001600160801b03191660809290921c919091179055005b34801561024757600080fd5b506102506109e5565b60405161025d9190612cca565b60405180910390f35b34801561027257600080fd5b5061028661028136600461257f565b610a73565b60405161025d9190612c01565b34801561029f57600080fd5b506102a8610a90565b60405161025d9190612d92565b3480156102c157600080fd5b506102866102d0366004612532565b610a97565b3480156102e157600080fd5b506102f56102f036600461257f565b610b25565b005b34801561030357600080fd5b5061028661031236600461257f565b610c25565b34801561032357600080fd5b506102f5610c79565b34801561033857600080fd5b506102f56103473660046126ba565b610caa565b34801561035857600080fd5b506102f5610367366004612610565b611148565b34801561037857600080fd5b506102f56103873660046126ba565b611316565b34801561039857600080fd5b506102f56103a73660046125af565b611533565b3480156103b857600080fd5b506102866103c73660046124b4565b61186b565b3480156103d857600080fd5b506102f56103e73660046124b4565b611899565b3480156103f857600080fd5b506102a86104073660046124b4565b6118e8565b34801561041857600080fd5b506102f5611903565b34801561042d57600080fd5b506102f561043c3660046126ba565b611974565b34801561044d57600080fd5b506102f5611b5c565b34801561046257600080fd5b5061046b611b8b565b60405161025d9190612b9f565b34801561048457600080fd5b50610286611b9a565b34801561049957600080fd5b50610250611bc0565b3480156104ae57600080fd5b506102866104bd36600461257f565b611c1b565b3480156104ce57600080fd5b506102866104dd36600461257f565b611c89565b3480156104ee57600080fd5b50610286611c9d565b34801561050357600080fd5b506102f56105123660046124b4565b611ca6565b34801561052357600080fd5b5061052c611d7b565b60405161025d9190612bf0565b34801561054557600080fd5b506102a86105543660046124f8565b611df0565b34801561056557600080fd5b506102f56105743660046124b4565b611e1b565b600081610588575060006105da565b81600061059482611e4e565b905060708110156105ad578060700382901b91506105c0565b60708111156105c0576070810382901c91505b613fff0160701b6001600160701b03919091161760801b90505b919050565b6000617fff6001600160801b03608085811c8216607090811c8416939186901c90921690911c8116908214156106555780617fff141561064b576001600160801b031985811690851614156106385784925050506109df565b50600160ef1b61ffff0291506109df9050565b84925050506109df565b80617fff14156106695783925050506109df565b6001607f1b608086901c6001600160801b0381169190911015906001600160701b03168361069a57600193506106a1565b600160701b175b6001607f1b608087901c6001600160801b0381169190911015906001600160701b0316846106d257600194506106d9565b600160701b175b82610709576001600160801b03198816600160ff1b146106f957876106fc565b60005b96505050505050506109df565b80610729576001600160801b03198916600160ff1b146106f957886106fc565b848603841515831515141561083757607081131561075057899750505050505050506109df565b60008113156107625790811c90610791565b606f1981121561077b57889750505050505050506109df565b6000811215610791578060000384901c93508596505b92810192600160711b84106107ac576001968701969390931c925b86617fff14156107e157846107c957600160f01b617fff026107d3565b6001600160f01b03195b9750505050505050506109df565b600160701b8410156107f65760009650610803565b6001600160701b03841693505b83607088901b8661081557600061081b565b6001607f1b5b6001600160801b0316171760801b9750505050505050506109df565b600081131561085257600184901b9350600187039650610869565b600081121561086957600182901b91506001860396505b607081131561087b57600191506108c8565b6001811315610898576001810360018303901c60010191506108c8565b606f198112156108ab57600193506108c8565b6000198112156108c8576001816000030360018503901c60010193505b8184106108d95781840393506108e2565b83820393508294505b836108f85750600096506109df95505050505050565b600061090385611e4e565b9050806071141561092957600185901c6001600160701b03169450600188019750610978565b607081101561096b57607081900380891115610958578086901b6001600160701b031695508089039850610965565b600098600019019590951b945b50610978565b6001600160701b03851694505b87617fff14156109ae578561099557600160f01b617fff0261099f565b6001600160f01b03195b985050505050505050506109df565b84607089901b876109c05760006109c6565b6001607f1b5b6001600160801b0316171760801b985050505050505050505b92915050565b609c805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610a6b5780601f10610a4057610100808354040283529160200191610a6b565b820191906000526020600020905b815481529060010190602001808311610a4e57829003601f168201915b505050505081565b6000610a87610a80611ef1565b8484611ef5565b50600192915050565b6035545b90565b6000610aa4848484611faf565b610b1a84610ab0611ef1565b610b1585604051806060016040528060288152602001612ea2602891396001600160a01b038a16600090815260346020526040812090610aee611ef1565b6001600160a01b03168152602081019190915260400160002054919063ffffffff6120cb16565b611ef5565b5060015b9392505050565b610b2d611b9a565b610b5557604051600160e51b62461bcd028152600401610b4c90612d52565b60405180910390fd5b6001600160a01b038216600090815260a86020526040902054610c2157610b7a612375565b506040805180820182528281526001600160a01b03848116602080840182815260a78054600181018255600082815296517fb68792697ed876af8b4858b316f5b54d81f6861191ad2950c1fde6c3dc7b3dea60029092029182015591517fb68792697ed876af8b4858b316f5b54d81f6861191ad2950c1fde6c3dc7b3deb90920180546001600160a01b0319169290951691909117909355915490835260a8909152919020555b5050565b6000610a87610c32611ef1565b84610b158560346000610c43611ef1565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6120fa16565b610c81611b9a565b610ca057604051600160e51b62461bcd028152600401610b4c90612d52565b610ca8612122565b565b600084604051602001610cbd9190612c37565b604051602081830303815290604052805190602001209050600081604051602001610ce89190612b88565b604051602081830303815290604052805190602001209050609b60019054906101000a90046001600160a01b03166001600160a01b031660018287878760405160008152602001604052604051610d429493929190612c8c565b6020604051602081039080840390855afa158015610d64573d6000803e3d6000fd5b505050602060405103516001600160a01b031614610d8157600080fd5b60a054604051600160e01b632ea7791702815230916001600160a01b031690632ea7791790610db4908c90600401612d35565b60206040518083038186803b158015610dcc57600080fd5b505afa158015610de0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e0491908101906124da565b6001600160a01b0316141561113c57600060a46000896001600160a01b03166001600160a01b0316815260200190815260200160002060009054906101000a90046001600160a01b0316905060a26000826001600160a01b03166001600160a01b031681526020019081526020016000206000896001600160a01b03166001600160a01b031681526020019081526020016000206000018a90806001815401808255809150509060018203906000526020600020016000909192909190916101000a8154816001600160a01b0302191690836001600160a01b0316021790555050610f4a60a26000836001600160a01b03166001600160a01b0316815260200190815260200160002060008a6001600160a01b03166001600160a01b0316815260200190815260200160002060010160109054906101000a900460801b6101f78d610579565b60a26000836001600160a01b03166001600160a01b0316815260200190815260200160002060008a6001600160a01b03166001600160a01b0316815260200190815260200160002060010160106101000a8154816001600160801b03021916908360801c021790555060a360008b6001600160a01b03166001600160a01b031681526020019081526020016000206000896001600160a01b03166001600160a01b031681526020019081526020016000206000018190806001815401808255809150509060018203906000526020600020016000909192909190916101000a8154816001600160a01b0302191690836001600160a01b03160217905550506110ad60a360008c6001600160a01b03166001600160a01b0316815260200190815260200160002060008a6001600160a01b03166001600160a01b0316815260200190815260200160002060010160109054906101000a900460801b6101f78d610579565b6001600160a01b038b8116600081815260a360209081526040808320948e16835293905282902060018101805460809590951c600160801b026001600160801b039095169490941790935560039092018b9055517f28941375b90ddb023a4c1149e157b4289100de23ecc1a208c7ba68fd31b8aa8290611132908c908f908d90612c64565b60405180910390a2505b50505050505050505050565b600054610100900460ff16806111615750611161612157565b8061116f575060005460ff16155b61118e57604051600160e51b62461bcd028152600401610b4c90612d62565b600054610100900460ff161580156111b9576000805460ff1961ff0019909116610100171660011790555b6111c284611ca6565b60a080546001600160a01b031916331790556040516111e5908790602001612b73565b604051602081830303815290604052609c908051906020019061120992919061238c565b50604051600160e01b63f921e64702815273__stringutils___________________________9063f921e6479061124a908990600090600590600401612c0f565b60006040518083038186803b15801561126257600080fd5b505af4158015611276573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261129e9190810190612685565b80516112b291609d9160209091019061238c565b50609e869055609f85905560a180546001600160a01b0319166001600160a01b0385811691909117909155609b8054610100600160a81b03191661010092851692909202919091179055801561130e576000805461ff00191690555b505050505050565b6000846040516020016113299190612c37565b6040516020818303038152906040528051906020012090506000816040516020016113549190612b88565b604051602081830303815290604052805190602001209050609b60019054906101000a90046001600160a01b03166001600160a01b0316600182878787604051600081526020016040526040516113ae9493929190612c8c565b6020604051602081039080840390855afa1580156113d0573d6000803e3d6000fd5b505050602060405103516001600160a01b0316146113ed57600080fd5b60a054604051600160e01b632ea7791702815230916001600160a01b031690632ea7791790611420908c90600401612d35565b60206040518083038186803b15801561143857600080fd5b505afa15801561144c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061147091908101906124da565b6001600160a01b0316141561113c576114888a610579565b6001600160a01b038a8116600081815260a260209081526040808320948d1683529381528382206001810180546001600160801b03191660809790971c9690961790955560039094018c905560a49093529181902080546001600160a01b03191683179055517f0374c98cc473258135c2b4fe78a223aed02348572d6786136e30f6c1e7a67dd09061151f908b908e908c90612c64565b60405180910390a250505050505050505050565b609b5460ff161561155957604051600160e51b62461bcd028152600401610b4c90612d42565b6001600160a01b038316600090815260a860205260408120541561157b575060015b80156117015761158c333085611ef5565b6001600160a01b038416600090815260a8602052604081205460a7805490919081106115b457fe5b9060005260206000209060020201600001549050846001600160a01b03166323b872dd3330876040518463ffffffff1660e01b81526004016115f893929190612bad565b602060405180830381600087803b15801561161257600080fd5b505af1158015611626573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061164a91908101906125f2565b156116fb576001600160a01b038316600090815260a6602090815260408083208484529091529020546116839060801b6101f786610579565b6001600160a01b038416600081815260a6602090815260408083208684529091529081902080546001600160801b03191660809490941c9390931790925590517f4436a6654a7129488fb9eb2ae15ce2049af46f230597828facbd096053ab0924906116f29084908890612c56565b60405180910390a25b50611865565b33600090815260a560209081526040808320600160d91b6432ba3432b902845290915281205461173c9060801b61173786610579565b61215d565b60000b126118655733600090815260a560209081526040808320600160d91b6432ba3432b902845290915290205461177f9060801b61177a85610579565b6122a6565b33600090815260a560209081526040808320600160d91b6432ba3432b90280855290835281842080546001600160801b031916608096871c1790556001600160a01b038716845260a683528184209084529091529020546117e4911b6101f785610579565b6001600160a01b038316600081815260a660209081526040808320600160d91b6432ba3432b90284529091529081902080546001600160801b03191660809490941c9390931790925590517f4436a6654a7129488fb9eb2ae15ce2049af46f230597828facbd096053ab09249061185c908690612ceb565b60405180910390a25b50505050565b6001600160a01b038116600090815260a8602052604081205415611891575060016105da565b5060006105da565b6118a1611b9a565b6118c057604051600160e51b62461bcd028152600401610b4c90612d52565b609b80546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6001600160a01b031660009081526033602052604090205490565b61190b611b9a565b61192a57604051600160e51b62461bcd028152600401610b4c90612d52565b6068546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3606880546001600160a01b0319169055565b6000846040516020016119879190612c37565b6040516020818303038152906040528051906020012090506000816040516020016119b29190612b88565b604051602081830303815290604052805190602001209050609b60019054906101000a90046001600160a01b03166001600160a01b031660018287878760405160008152602001604052604051611a0c9493929190612c8c565b6020604051602081039080840390855afa158015611a2e573d6000803e3d6000fd5b505050602060405103516001600160a01b031614611a4b57600080fd5b87600160d91b6432ba3432b9021415611a9a576040516001600160a01b038a16908b156108fc02908c906000818181858888f19350505050158015611a94573d6000803e3d6000fd5b50611b1f565b604051600160e01b63a9059cbb0281526001600160a01b0388169063a9059cbb90611acb908c908e90600401612bd5565b602060405180830381600087803b158015611ae557600080fd5b505af1158015611af9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b1d91908101906125f2565b505b886001600160a01b03167f93671572d5a2c485b580939eaa77af90adb49104e41459a5ec7e945482a20ef1898c8a60405161151f93929190612c64565b611b64611b9a565b611b8357604051600160e51b62461bcd028152600401610b4c90612d52565b610ca86122b8565b6068546001600160a01b031690565b6068546000906001600160a01b0316611bb1611ef1565b6001600160a01b031614905090565b609d805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610a6b5780601f10610a4057610100808354040283529160200191610a6b565b6000610a87611c28611ef1565b84610b1585604051806060016040528060258152602001612eca6025913960346000611c52611ef1565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff6120cb16565b6000610a87611c96611ef1565b8484611faf565b609b5460ff1690565b600054610100900460ff1680611cbf5750611cbf612157565b80611ccd575060005460ff16155b611cec57604051600160e51b62461bcd028152600401610b4c90612d62565b600054610100900460ff16158015611d17576000805460ff1961ff0019909116610100171660011790555b606880546001600160a01b0319166001600160a01b0384811691909117918290556040519116906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a38015610c21576000805461ff00191690555050565b606060a7805480602002602001604051908101604052809291908181526020016000905b82821015611de75760008481526020908190206040805180820190915260028502909101805482526001908101546001600160a01b0316828401529083529092019101611d9f565b50505050905090565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b611e23611b9a565b611e4257604051600160e51b62461bcd028152600401610b4c90612d52565b611e4b816122f0565b50565b6000808211611e5c57600080fd5b6000600160801b8310611e7157608092831c92015b680100000000000000008310611e8957604092831c92015b6401000000008310611e9d57602092831c92015b620100008310611eaf57601092831c92015b6101008310611ec057600892831c92015b60108310611ed057600492831c92015b60048310611ee057600292831c92015b600283106109df5760010192915050565b3390565b6001600160a01b038316611f1e57604051600160e51b62461bcd028152600401610b4c90612d82565b6001600160a01b038216611f4757604051600160e51b62461bcd028152600401610b4c90612d15565b6001600160a01b0380841660008181526034602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590611fa2908590612d92565b60405180910390a3505050565b6001600160a01b038316611fd857604051600160e51b62461bcd028152600401610b4c90612d72565b6001600160a01b03821661200157604051600160e51b62461bcd028152600401610b4c90612cdb565b61204481604051806060016040528060268152602001612e7c602691396001600160a01b038616600090815260336020526040902054919063ffffffff6120cb16565b6001600160a01b038085166000908152603360205260408082209390935590841681522054612079908263ffffffff6120fa16565b6001600160a01b0380841660008181526033602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611fa2908590612d92565b600081848411156120f257604051600160e51b62461bcd028152600401610b4c9190612cca565b505050900390565b600082820183811015610b1e57604051600160e51b62461bcd028152600401610b4c90612d25565b609b805460ff191690556040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d1693390600090a1565b303b1590565b600060016001607f1b03608084901c16600160701b617fff0281111561218257600080fd5b60016001607f1b03608084901c16600160701b617fff028111156121a557600080fd5b6001600160801b03198581169085161415806121d15750600160701b617fff02826001600160801b0316105b6121da57600080fd5b6001600160801b031985811690851614156121fa576000925050506109df565b60006001607f1b8660801c6001600160801b03161015905060006001607f1b8660801c6001600160801b031610159050811561226557801561225657826001600160801b0316846001600160801b03161161225657600161225a565b6000195b9450505050506109df565b80156122785760019450505050506109df565b826001600160801b0316846001600160801b0316116122995760001961225a565b60019450505050506109df565b6000610b1e83600160ff1b84186105df565b609b805460ff191660011790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b6001600160a01b03811661231957604051600160e51b62461bcd028152600401610b4c90612d05565b6068546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3606880546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082019091526000808252602082015290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106123cd57805160ff19168380011785556123fa565b828001600101855582156123fa579182015b828111156123fa5782518255916020019190600101906123df565b5061240692915061240a565b5090565b610a9491905b808211156124065760008155600101612410565b6000610b1e8235612e02565b6000610b1e8251612e02565b6000610b1e8251612e0d565b6000610b1e8235610a94565b600082601f83011261246557600080fd5b815161247861247382612dc7565b612da0565b9150808252602083016020830185838301111561249457600080fd5b61249f838284612e45565b50505092915050565b6000610b1e8235612e1e565b6000602082840312156124c657600080fd5b60006124d28484612424565b949350505050565b6000602082840312156124ec57600080fd5b60006124d28484612430565b6000806040838503121561250b57600080fd5b60006125178585612424565b925050602061252885828601612424565b9150509250929050565b60008060006060848603121561254757600080fd5b60006125538686612424565b935050602061256486828701612424565b925050604061257586828701612448565b9150509250925092565b6000806040838503121561259257600080fd5b600061259e8585612424565b925050602061252885828601612448565b6000806000606084860312156125c457600080fd5b60006125d08686612424565b93505060206125e186828701612448565b925050604061257586828701612424565b60006020828403121561260457600080fd5b60006124d2848461243c565b600080600080600060a0868803121561262857600080fd5b60006126348888612448565b955050602061264588828901612448565b945050604061265688828901612424565b935050606061266788828901612424565b925050608061267888828901612424565b9150509295509295909350565b60006020828403121561269757600080fd5b815167ffffffffffffffff8111156126ae57600080fd5b6124d284828501612454565b600080600080600080600080610100898b0312156126d757600080fd5b60006126e38b8b612448565b98505060206126f48b828c01612424565b97505060406127058b828c01612448565b96505060606127168b828c01612424565b95505060806127278b828c01612448565b94505060a06127388b828c016124a8565b93505060c06127498b828c01612448565b92505060e061275a8b828c01612448565b9150509295985092959890939650565b60006127768383612b46565b505060400190565b61278781612e24565b82525050565b61278781612e02565b60006127a182612df5565b6127ab8185612df9565b93506127b683612def565b60005b828110156127e1576127cc86835161276a565b95506127d782612def565b91506001016127b9565b5093949350505050565b61278781612e0d565b61278781610a94565b61278761280982610a94565b610a94565b61278781612e2f565b600061282282612df5565b61282c8185612df9565b935061283c818560208601612e45565b61284581612e71565b9093019392505050565b600061285c602383612df9565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464728152600160e81b6265737302602082015260400192915050565b600160d91b6432ba3432b9029052565b60006128b4601c836105da565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c0192915050565b60006128ed602683612df9565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20618152600160d01b6564647265737302602082015260400192915050565b6000612938602283612df9565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472658152600160f01b61737302602082015260400192915050565b600061297f601b83612df9565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b600160ca1b66159a58509bdb99029052565b60006129ca601883612df9565b7f436f6e747261637420696e207061757365642073746174650000000000000000815260200192915050565b6000612a03602083612df9565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572815260200192915050565b6000612a3c602e83612df9565b7f436f6e747261637420696e7374616e63652068617320616c726561647920626581527f656e20696e697469616c697a6564000000000000000000000000000000000000602082015260400192915050565b6000612a9b600683612df9565b600160d01b654c32746f4c3102815260200192915050565b6000612ac0602583612df9565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061648152600160d81b64647265737302602082015260400192915050565b6000612b0a602483612df9565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164648152600160e01b637265737302602082015260400192915050565b80516040830190612b5784826127f4565b506020820151611865602085018261278d565b61278781612e1e565b6000612b7f82846127fd565b50602001919050565b6000612b93826128a7565b9150612b7f82846127fd565b602081016109df828461278d565b60608101612bbb828661277e565b612bc8602083018561277e565b6124d260408301846127f4565b60408101612be3828561278d565b610b1e60208301846127f4565b60208082528101610b1e8184612796565b602081016109df82846127eb565b60608101612c1d82866127f4565b612c2a602083018561280e565b6124d2604083018461280e565b60408101612c4582846127f4565b8181036020830152610b1e81612a8e565b60408101612be382856127f4565b60608101612c7282866127f4565b612c7f60208301856127f4565b6124d2604083018461278d565b60808101612c9a82876127f4565b612ca76020830186612b6a565b612cb460408301856127f4565b612cc160608301846127f4565b95945050505050565b60208082528101610b1e8184612817565b602080825281016109df8161284f565b60408101612cf882612897565b6109df60208301846127f4565b602080825281016109df816128e0565b602080825281016109df8161292b565b602080825281016109df81612972565b60408101612cf8826129ab565b602080825281016109df816129bd565b602080825281016109df816129f6565b602080825281016109df81612a2f565b602080825281016109df81612ab3565b602080825281016109df81612afd565b602081016109df82846127f4565b60405181810167ffffffffffffffff81118282101715612dbf57600080fd5b604052919050565b600067ffffffffffffffff821115612dde57600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b60006109df82612e12565b151590565b6001600160a01b031690565b60ff1690565b60006109df82612e3a565b60006109df82610a94565b60006109df82612e02565b60005b83811015612e60578181015183820152602001612e48565b838111156118655750506000910152565b601f01601f19169056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a723058203c50b3c20799b2306053128eeb74c41cb497a350130e41636c117298877f3edb6c6578706572696d656e74616cf50037",
741
+ "deployedBytecode": "0x60806040526004361061019c5760003560e01c806370a08231116100ec578063a457c2d71161008a578063c4d66de811610064578063c4d66de8146104f7578063d3c7c2c714610517578063dd62ed3e14610539578063f2fde38b146105595761019c565b8063a457c2d7146104a2578063a9059cbb146104c2578063b187bd26146104e25761019c565b80638456cb59116100c65780638456cb59146104415780638da5cb5b146104565780638f32d59b1461047857806395d89b411461048d5761019c565b806370a08231146103ec578063715018a61461040c578063720bd707146104215761019c565b80633f4ba83a11610159578063464ff5e611610133578063464ff5e61461036c5780634ba3f9881461038c5780635d4f5b1c146103ac5780636c19e783146103cc5761019c565b80633f4ba83a146103175780633f66e3dd1461032c578063464997701461034c5761019c565b806306fdde031461023b578063095ea7b31461026657806318160ddd1461029357806323b872dd146102b55780632ceafc27146102d557806339509351146102f7575b346101a657600080fd5b36156101b157600080fd5b609b5460ff16156101c157600080fd5b33600090815260a560209081526040808320600160d91b6432ba3432b90284529091529020546101fc9060801b6101f734610579565b6105df565b33600090815260a560209081526040808320600160d91b6432ba3432b9028452909152902080546001600160801b03191660809290921c919091179055005b34801561024757600080fd5b506102506109e5565b60405161025d9190612cca565b60405180910390f35b34801561027257600080fd5b5061028661028136600461257f565b610a73565b60405161025d9190612c01565b34801561029f57600080fd5b506102a8610a90565b60405161025d9190612d92565b3480156102c157600080fd5b506102866102d0366004612532565b610a97565b3480156102e157600080fd5b506102f56102f036600461257f565b610b25565b005b34801561030357600080fd5b5061028661031236600461257f565b610c25565b34801561032357600080fd5b506102f5610c79565b34801561033857600080fd5b506102f56103473660046126ba565b610caa565b34801561035857600080fd5b506102f5610367366004612610565b611148565b34801561037857600080fd5b506102f56103873660046126ba565b611316565b34801561039857600080fd5b506102f56103a73660046125af565b611533565b3480156103b857600080fd5b506102866103c73660046124b4565b61186b565b3480156103d857600080fd5b506102f56103e73660046124b4565b611899565b3480156103f857600080fd5b506102a86104073660046124b4565b6118e8565b34801561041857600080fd5b506102f5611903565b34801561042d57600080fd5b506102f561043c3660046126ba565b611974565b34801561044d57600080fd5b506102f5611b5c565b34801561046257600080fd5b5061046b611b8b565b60405161025d9190612b9f565b34801561048457600080fd5b50610286611b9a565b34801561049957600080fd5b50610250611bc0565b3480156104ae57600080fd5b506102866104bd36600461257f565b611c1b565b3480156104ce57600080fd5b506102866104dd36600461257f565b611c89565b3480156104ee57600080fd5b50610286611c9d565b34801561050357600080fd5b506102f56105123660046124b4565b611ca6565b34801561052357600080fd5b5061052c611d7b565b60405161025d9190612bf0565b34801561054557600080fd5b506102a86105543660046124f8565b611df0565b34801561056557600080fd5b506102f56105743660046124b4565b611e1b565b600081610588575060006105da565b81600061059482611e4e565b905060708110156105ad578060700382901b91506105c0565b60708111156105c0576070810382901c91505b613fff0160701b6001600160701b03919091161760801b90505b919050565b6000617fff6001600160801b03608085811c8216607090811c8416939186901c90921690911c8116908214156106555780617fff141561064b576001600160801b031985811690851614156106385784925050506109df565b50600160ef1b61ffff0291506109df9050565b84925050506109df565b80617fff14156106695783925050506109df565b6001607f1b608086901c6001600160801b0381169190911015906001600160701b03168361069a57600193506106a1565b600160701b175b6001607f1b608087901c6001600160801b0381169190911015906001600160701b0316846106d257600194506106d9565b600160701b175b82610709576001600160801b03198816600160ff1b146106f957876106fc565b60005b96505050505050506109df565b80610729576001600160801b03198916600160ff1b146106f957886106fc565b848603841515831515141561083757607081131561075057899750505050505050506109df565b60008113156107625790811c90610791565b606f1981121561077b57889750505050505050506109df565b6000811215610791578060000384901c93508596505b92810192600160711b84106107ac576001968701969390931c925b86617fff14156107e157846107c957600160f01b617fff026107d3565b6001600160f01b03195b9750505050505050506109df565b600160701b8410156107f65760009650610803565b6001600160701b03841693505b83607088901b8661081557600061081b565b6001607f1b5b6001600160801b0316171760801b9750505050505050506109df565b600081131561085257600184901b9350600187039650610869565b600081121561086957600182901b91506001860396505b607081131561087b57600191506108c8565b6001811315610898576001810360018303901c60010191506108c8565b606f198112156108ab57600193506108c8565b6000198112156108c8576001816000030360018503901c60010193505b8184106108d95781840393506108e2565b83820393508294505b836108f85750600096506109df95505050505050565b600061090385611e4e565b9050806071141561092957600185901c6001600160701b03169450600188019750610978565b607081101561096b57607081900380891115610958578086901b6001600160701b031695508089039850610965565b600098600019019590951b945b50610978565b6001600160701b03851694505b87617fff14156109ae578561099557600160f01b617fff0261099f565b6001600160f01b03195b985050505050505050506109df565b84607089901b876109c05760006109c6565b6001607f1b5b6001600160801b0316171760801b985050505050505050505b92915050565b609c805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610a6b5780601f10610a4057610100808354040283529160200191610a6b565b820191906000526020600020905b815481529060010190602001808311610a4e57829003601f168201915b505050505081565b6000610a87610a80611ef1565b8484611ef5565b50600192915050565b6035545b90565b6000610aa4848484611faf565b610b1a84610ab0611ef1565b610b1585604051806060016040528060288152602001612ea2602891396001600160a01b038a16600090815260346020526040812090610aee611ef1565b6001600160a01b03168152602081019190915260400160002054919063ffffffff6120cb16565b611ef5565b5060015b9392505050565b610b2d611b9a565b610b5557604051600160e51b62461bcd028152600401610b4c90612d52565b60405180910390fd5b6001600160a01b038216600090815260a86020526040902054610c2157610b7a612375565b506040805180820182528281526001600160a01b03848116602080840182815260a78054600181018255600082815296517fb68792697ed876af8b4858b316f5b54d81f6861191ad2950c1fde6c3dc7b3dea60029092029182015591517fb68792697ed876af8b4858b316f5b54d81f6861191ad2950c1fde6c3dc7b3deb90920180546001600160a01b0319169290951691909117909355915490835260a8909152919020555b5050565b6000610a87610c32611ef1565b84610b158560346000610c43611ef1565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6120fa16565b610c81611b9a565b610ca057604051600160e51b62461bcd028152600401610b4c90612d52565b610ca8612122565b565b600084604051602001610cbd9190612c37565b604051602081830303815290604052805190602001209050600081604051602001610ce89190612b88565b604051602081830303815290604052805190602001209050609b60019054906101000a90046001600160a01b03166001600160a01b031660018287878760405160008152602001604052604051610d429493929190612c8c565b6020604051602081039080840390855afa158015610d64573d6000803e3d6000fd5b505050602060405103516001600160a01b031614610d8157600080fd5b60a054604051600160e01b632ea7791702815230916001600160a01b031690632ea7791790610db4908c90600401612d35565b60206040518083038186803b158015610dcc57600080fd5b505afa158015610de0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e0491908101906124da565b6001600160a01b0316141561113c57600060a46000896001600160a01b03166001600160a01b0316815260200190815260200160002060009054906101000a90046001600160a01b0316905060a26000826001600160a01b03166001600160a01b031681526020019081526020016000206000896001600160a01b03166001600160a01b031681526020019081526020016000206000018a90806001815401808255809150509060018203906000526020600020016000909192909190916101000a8154816001600160a01b0302191690836001600160a01b0316021790555050610f4a60a26000836001600160a01b03166001600160a01b0316815260200190815260200160002060008a6001600160a01b03166001600160a01b0316815260200190815260200160002060010160109054906101000a900460801b6101f78d610579565b60a26000836001600160a01b03166001600160a01b0316815260200190815260200160002060008a6001600160a01b03166001600160a01b0316815260200190815260200160002060010160106101000a8154816001600160801b03021916908360801c021790555060a360008b6001600160a01b03166001600160a01b031681526020019081526020016000206000896001600160a01b03166001600160a01b031681526020019081526020016000206000018190806001815401808255809150509060018203906000526020600020016000909192909190916101000a8154816001600160a01b0302191690836001600160a01b03160217905550506110ad60a360008c6001600160a01b03166001600160a01b0316815260200190815260200160002060008a6001600160a01b03166001600160a01b0316815260200190815260200160002060010160109054906101000a900460801b6101f78d610579565b6001600160a01b038b8116600081815260a360209081526040808320948e16835293905282902060018101805460809590951c600160801b026001600160801b039095169490941790935560039092018b9055517f28941375b90ddb023a4c1149e157b4289100de23ecc1a208c7ba68fd31b8aa8290611132908c908f908d90612c64565b60405180910390a2505b50505050505050505050565b600054610100900460ff16806111615750611161612157565b8061116f575060005460ff16155b61118e57604051600160e51b62461bcd028152600401610b4c90612d62565b600054610100900460ff161580156111b9576000805460ff1961ff0019909116610100171660011790555b6111c284611ca6565b60a080546001600160a01b031916331790556040516111e5908790602001612b73565b604051602081830303815290604052609c908051906020019061120992919061238c565b50604051600160e01b63f921e64702815273__stringutils___________________________9063f921e6479061124a908990600090600590600401612c0f565b60006040518083038186803b15801561126257600080fd5b505af4158015611276573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261129e9190810190612685565b80516112b291609d9160209091019061238c565b50609e869055609f85905560a180546001600160a01b0319166001600160a01b0385811691909117909155609b8054610100600160a81b03191661010092851692909202919091179055801561130e576000805461ff00191690555b505050505050565b6000846040516020016113299190612c37565b6040516020818303038152906040528051906020012090506000816040516020016113549190612b88565b604051602081830303815290604052805190602001209050609b60019054906101000a90046001600160a01b03166001600160a01b0316600182878787604051600081526020016040526040516113ae9493929190612c8c565b6020604051602081039080840390855afa1580156113d0573d6000803e3d6000fd5b505050602060405103516001600160a01b0316146113ed57600080fd5b60a054604051600160e01b632ea7791702815230916001600160a01b031690632ea7791790611420908c90600401612d35565b60206040518083038186803b15801561143857600080fd5b505afa15801561144c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061147091908101906124da565b6001600160a01b0316141561113c576114888a610579565b6001600160a01b038a8116600081815260a260209081526040808320948d1683529381528382206001810180546001600160801b03191660809790971c9690961790955560039094018c905560a49093529181902080546001600160a01b03191683179055517f0374c98cc473258135c2b4fe78a223aed02348572d6786136e30f6c1e7a67dd09061151f908b908e908c90612c64565b60405180910390a250505050505050505050565b609b5460ff161561155957604051600160e51b62461bcd028152600401610b4c90612d42565b6001600160a01b038316600090815260a860205260408120541561157b575060015b80156117015761158c333085611ef5565b6001600160a01b038416600090815260a8602052604081205460a7805490919081106115b457fe5b9060005260206000209060020201600001549050846001600160a01b03166323b872dd3330876040518463ffffffff1660e01b81526004016115f893929190612bad565b602060405180830381600087803b15801561161257600080fd5b505af1158015611626573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061164a91908101906125f2565b156116fb576001600160a01b038316600090815260a6602090815260408083208484529091529020546116839060801b6101f786610579565b6001600160a01b038416600081815260a6602090815260408083208684529091529081902080546001600160801b03191660809490941c9390931790925590517f4436a6654a7129488fb9eb2ae15ce2049af46f230597828facbd096053ab0924906116f29084908890612c56565b60405180910390a25b50611865565b33600090815260a560209081526040808320600160d91b6432ba3432b902845290915281205461173c9060801b61173786610579565b61215d565b60000b126118655733600090815260a560209081526040808320600160d91b6432ba3432b902845290915290205461177f9060801b61177a85610579565b6122a6565b33600090815260a560209081526040808320600160d91b6432ba3432b90280855290835281842080546001600160801b031916608096871c1790556001600160a01b038716845260a683528184209084529091529020546117e4911b6101f785610579565b6001600160a01b038316600081815260a660209081526040808320600160d91b6432ba3432b90284529091529081902080546001600160801b03191660809490941c9390931790925590517f4436a6654a7129488fb9eb2ae15ce2049af46f230597828facbd096053ab09249061185c908690612ceb565b60405180910390a25b50505050565b6001600160a01b038116600090815260a8602052604081205415611891575060016105da565b5060006105da565b6118a1611b9a565b6118c057604051600160e51b62461bcd028152600401610b4c90612d52565b609b80546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6001600160a01b031660009081526033602052604090205490565b61190b611b9a565b61192a57604051600160e51b62461bcd028152600401610b4c90612d52565b6068546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3606880546001600160a01b0319169055565b6000846040516020016119879190612c37565b6040516020818303038152906040528051906020012090506000816040516020016119b29190612b88565b604051602081830303815290604052805190602001209050609b60019054906101000a90046001600160a01b03166001600160a01b031660018287878760405160008152602001604052604051611a0c9493929190612c8c565b6020604051602081039080840390855afa158015611a2e573d6000803e3d6000fd5b505050602060405103516001600160a01b031614611a4b57600080fd5b87600160d91b6432ba3432b9021415611a9a576040516001600160a01b038a16908b156108fc02908c906000818181858888f19350505050158015611a94573d6000803e3d6000fd5b50611b1f565b604051600160e01b63a9059cbb0281526001600160a01b0388169063a9059cbb90611acb908c908e90600401612bd5565b602060405180830381600087803b158015611ae557600080fd5b505af1158015611af9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b1d91908101906125f2565b505b886001600160a01b03167f93671572d5a2c485b580939eaa77af90adb49104e41459a5ec7e945482a20ef1898c8a60405161151f93929190612c64565b611b64611b9a565b611b8357604051600160e51b62461bcd028152600401610b4c90612d52565b610ca86122b8565b6068546001600160a01b031690565b6068546000906001600160a01b0316611bb1611ef1565b6001600160a01b031614905090565b609d805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610a6b5780601f10610a4057610100808354040283529160200191610a6b565b6000610a87611c28611ef1565b84610b1585604051806060016040528060258152602001612eca6025913960346000611c52611ef1565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff6120cb16565b6000610a87611c96611ef1565b8484611faf565b609b5460ff1690565b600054610100900460ff1680611cbf5750611cbf612157565b80611ccd575060005460ff16155b611cec57604051600160e51b62461bcd028152600401610b4c90612d62565b600054610100900460ff16158015611d17576000805460ff1961ff0019909116610100171660011790555b606880546001600160a01b0319166001600160a01b0384811691909117918290556040519116906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a38015610c21576000805461ff00191690555050565b606060a7805480602002602001604051908101604052809291908181526020016000905b82821015611de75760008481526020908190206040805180820190915260028502909101805482526001908101546001600160a01b0316828401529083529092019101611d9f565b50505050905090565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b611e23611b9a565b611e4257604051600160e51b62461bcd028152600401610b4c90612d52565b611e4b816122f0565b50565b6000808211611e5c57600080fd5b6000600160801b8310611e7157608092831c92015b680100000000000000008310611e8957604092831c92015b6401000000008310611e9d57602092831c92015b620100008310611eaf57601092831c92015b6101008310611ec057600892831c92015b60108310611ed057600492831c92015b60048310611ee057600292831c92015b600283106109df5760010192915050565b3390565b6001600160a01b038316611f1e57604051600160e51b62461bcd028152600401610b4c90612d82565b6001600160a01b038216611f4757604051600160e51b62461bcd028152600401610b4c90612d15565b6001600160a01b0380841660008181526034602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590611fa2908590612d92565b60405180910390a3505050565b6001600160a01b038316611fd857604051600160e51b62461bcd028152600401610b4c90612d72565b6001600160a01b03821661200157604051600160e51b62461bcd028152600401610b4c90612cdb565b61204481604051806060016040528060268152602001612e7c602691396001600160a01b038616600090815260336020526040902054919063ffffffff6120cb16565b6001600160a01b038085166000908152603360205260408082209390935590841681522054612079908263ffffffff6120fa16565b6001600160a01b0380841660008181526033602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611fa2908590612d92565b600081848411156120f257604051600160e51b62461bcd028152600401610b4c9190612cca565b505050900390565b600082820183811015610b1e57604051600160e51b62461bcd028152600401610b4c90612d25565b609b805460ff191690556040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d1693390600090a1565b303b1590565b600060016001607f1b03608084901c16600160701b617fff0281111561218257600080fd5b60016001607f1b03608084901c16600160701b617fff028111156121a557600080fd5b6001600160801b03198581169085161415806121d15750600160701b617fff02826001600160801b0316105b6121da57600080fd5b6001600160801b031985811690851614156121fa576000925050506109df565b60006001607f1b8660801c6001600160801b03161015905060006001607f1b8660801c6001600160801b031610159050811561226557801561225657826001600160801b0316846001600160801b03161161225657600161225a565b6000195b9450505050506109df565b80156122785760019450505050506109df565b826001600160801b0316846001600160801b0316116122995760001961225a565b60019450505050506109df565b6000610b1e83600160ff1b84186105df565b609b805460ff191660011790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b6001600160a01b03811661231957604051600160e51b62461bcd028152600401610b4c90612d05565b6068546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3606880546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082019091526000808252602082015290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106123cd57805160ff19168380011785556123fa565b828001600101855582156123fa579182015b828111156123fa5782518255916020019190600101906123df565b5061240692915061240a565b5090565b610a9491905b808211156124065760008155600101612410565b6000610b1e8235612e02565b6000610b1e8251612e02565b6000610b1e8251612e0d565b6000610b1e8235610a94565b600082601f83011261246557600080fd5b815161247861247382612dc7565b612da0565b9150808252602083016020830185838301111561249457600080fd5b61249f838284612e45565b50505092915050565b6000610b1e8235612e1e565b6000602082840312156124c657600080fd5b60006124d28484612424565b949350505050565b6000602082840312156124ec57600080fd5b60006124d28484612430565b6000806040838503121561250b57600080fd5b60006125178585612424565b925050602061252885828601612424565b9150509250929050565b60008060006060848603121561254757600080fd5b60006125538686612424565b935050602061256486828701612424565b925050604061257586828701612448565b9150509250925092565b6000806040838503121561259257600080fd5b600061259e8585612424565b925050602061252885828601612448565b6000806000606084860312156125c457600080fd5b60006125d08686612424565b93505060206125e186828701612448565b925050604061257586828701612424565b60006020828403121561260457600080fd5b60006124d2848461243c565b600080600080600060a0868803121561262857600080fd5b60006126348888612448565b955050602061264588828901612448565b945050604061265688828901612424565b935050606061266788828901612424565b925050608061267888828901612424565b9150509295509295909350565b60006020828403121561269757600080fd5b815167ffffffffffffffff8111156126ae57600080fd5b6124d284828501612454565b600080600080600080600080610100898b0312156126d757600080fd5b60006126e38b8b612448565b98505060206126f48b828c01612424565b97505060406127058b828c01612448565b96505060606127168b828c01612424565b95505060806127278b828c01612448565b94505060a06127388b828c016124a8565b93505060c06127498b828c01612448565b92505060e061275a8b828c01612448565b9150509295985092959890939650565b60006127768383612b46565b505060400190565b61278781612e24565b82525050565b61278781612e02565b60006127a182612df5565b6127ab8185612df9565b93506127b683612def565b60005b828110156127e1576127cc86835161276a565b95506127d782612def565b91506001016127b9565b5093949350505050565b61278781612e0d565b61278781610a94565b61278761280982610a94565b610a94565b61278781612e2f565b600061282282612df5565b61282c8185612df9565b935061283c818560208601612e45565b61284581612e71565b9093019392505050565b600061285c602383612df9565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464728152600160e81b6265737302602082015260400192915050565b600160d91b6432ba3432b9029052565b60006128b4601c836105da565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c0192915050565b60006128ed602683612df9565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20618152600160d01b6564647265737302602082015260400192915050565b6000612938602283612df9565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472658152600160f01b61737302602082015260400192915050565b600061297f601b83612df9565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b600160ca1b66159a58509bdb99029052565b60006129ca601883612df9565b7f436f6e747261637420696e207061757365642073746174650000000000000000815260200192915050565b6000612a03602083612df9565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572815260200192915050565b6000612a3c602e83612df9565b7f436f6e747261637420696e7374616e63652068617320616c726561647920626581527f656e20696e697469616c697a6564000000000000000000000000000000000000602082015260400192915050565b6000612a9b600683612df9565b600160d01b654c32746f4c3102815260200192915050565b6000612ac0602583612df9565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061648152600160d81b64647265737302602082015260400192915050565b6000612b0a602483612df9565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164648152600160e01b637265737302602082015260400192915050565b80516040830190612b5784826127f4565b506020820151611865602085018261278d565b61278781612e1e565b6000612b7f82846127fd565b50602001919050565b6000612b93826128a7565b9150612b7f82846127fd565b602081016109df828461278d565b60608101612bbb828661277e565b612bc8602083018561277e565b6124d260408301846127f4565b60408101612be3828561278d565b610b1e60208301846127f4565b60208082528101610b1e8184612796565b602081016109df82846127eb565b60608101612c1d82866127f4565b612c2a602083018561280e565b6124d2604083018461280e565b60408101612c4582846127f4565b8181036020830152610b1e81612a8e565b60408101612be382856127f4565b60608101612c7282866127f4565b612c7f60208301856127f4565b6124d2604083018461278d565b60808101612c9a82876127f4565b612ca76020830186612b6a565b612cb460408301856127f4565b612cc160608301846127f4565b95945050505050565b60208082528101610b1e8184612817565b602080825281016109df8161284f565b60408101612cf882612897565b6109df60208301846127f4565b602080825281016109df816128e0565b602080825281016109df8161292b565b602080825281016109df81612972565b60408101612cf8826129ab565b602080825281016109df816129bd565b602080825281016109df816129f6565b602080825281016109df81612a2f565b602080825281016109df81612ab3565b602080825281016109df81612afd565b602081016109df82846127f4565b60405181810167ffffffffffffffff81118282101715612dbf57600080fd5b604052919050565b600067ffffffffffffffff821115612dde57600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b60006109df82612e12565b151590565b6001600160a01b031690565b60ff1690565b60006109df82612e3a565b60006109df82610a94565b60006109df82612e02565b60005b83811015612e60578181015183820152602001612e48565b838111156118655750506000910152565b601f01601f19169056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a723058203c50b3c20799b2306053128eeb74c41cb497a350130e41636c117298877f3edb6c6578706572696d656e74616cf50037",
742
742
  "sourceMap": "581:9336:16:-;;;;;;;;;",
743
743
  "deployedSourceMap": "581:9336:16:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3878:9;3870:22;;;;;;3943:8;:18;3935:27;;;;;;4021:6;;;;:15;4013:24;;;;;;4229:10;4218:22;;;;:10;:22;;;;;;;;-1:-1:-1;;;;;4218:31:16;;;;;;;;4201:83;;4218:31;;4251:32;4273:9;4251:21;:32::i;:::-;4201:16;:83::i;:::-;4178:10;4167:22;;;;:10;:22;;;;;;;;-1:-1:-1;;;;;4167:31:16;;;;;;;:117;;-1:-1:-1;;;;;;4167:117:16;;;;;;;;;;;;581:9336;875:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;875:18:16;;;:::i;:::-;;;;;;;;;;;;;;;;2577:149:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2577:149:3;;;;;;;;:::i;:::-;;;;;;;;1636:89;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1636:89:3;;;:::i;:::-;;;;;;;;3184:300;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3184:300:3;;;;;;;;:::i;4517:347:16:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4517:347:16;;;;;;;;:::i;:::-;;3879:207:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3879:207:3;;;;;;;;:::i;9843:65:16:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9843:65:16;;;:::i;7783:1233::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;7783:1233:16;;;;;;;;:::i;3226:415::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3226:415:16;;;;;;;;:::i;6924:788::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6924:788:16;;;;;;;;:::i;5702:1153::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5702:1153:16;;;;;;;;:::i;5046:182::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5046:182:16;;;;;;;;:::i;3649:89::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3649:89:16;;;;;;;;:::i;1783:108:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1783:108:3;;;;;;;;:::i;1746:137:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1746:137:2;;;:::i;9064:698:16:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;9064:698:16;;;;;;;;:::i;9774:61::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9774:61:16;;;:::i;959:77:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;959:77:2;;;:::i;:::-;;;;;;;;1310:92;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1310:92:2;;;:::i;900:20:16:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;900:20:16;;;:::i;4573:258:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4573:258:3;;;;;;;;:::i;2094:155::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2094:155:3;;;;;;;;:::i;762:79:27:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;762:79:27;;;:::i;741:142:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;741:142:2;;;;;;;;:::i;5297:105:16:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5297:105:16;;;:::i;:::-;;;;;;;;2307:132:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2307:132:3;;;;;;;;:::i;2032:107:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2032:107:2;;;;;;;;:::i;2992:392:15:-;3045:7;3064:6;3060:320;;-1:-1:-1;3088:1:15;3072:18;;3060:320;3126:1;3109:14;3150:12;3126:1;3150:3;:12::i;:::-;3136:26;;3180:3;3174;:9;3170:83;;;3202:3;3196;:9;3185:20;;;;;3170:83;;;3228:3;3222;:9;3218:35;;;3250:3;3244;:9;3233:20;;;;;3218:35;3313:5;:11;3328:3;3313:18;-1:-1:-1;;;;;3271:39:15;;;;:60;3347:26;;;-1:-1:-1;3060:320:15;2992:392;;;:::o;15491:3613::-;15550:7;15606:6;-1:-1:-1;;;;;15585:11:15;;;;:18;;15600:3;15585:18;;;:27;;;15638:11;;;;:18;;;;;;:27;;;15676:19;;15672:3428;;;15709:9;15722:6;15709:19;15705:104;;;-1:-1:-1;;;;;;15745:6:15;;;;;;;15741:45;;;15760:1;15753:8;;;;;;15741:45;-1:-1:-1;;;;;;15783:3:15;-1:-1:-1;15776:10:15;;-1:-1:-1;15776:10:15;15705:104;15808:1;15801:8;;;;;;15672:3428;15827:9;15840:6;15827:19;15823:3277;;;15855:1;15848:8;;;;;;15823:3277;-1:-1:-1;;;15888:11:15;;;;-1:-1:-1;;;;;15888:49:15;;;;;;;;-1:-1:-1;;;;;15966:44:15;16022:14;16018:91;;16050:1;16038:13;;16018:91;;;-1:-1:-1;;;16064:45:15;16018:91;-1:-1:-1;;;16131:11:15;;;;-1:-1:-1;;;;;16131:49:15;;;;;;;;-1:-1:-1;;;;;16209:44:15;16265:14;16261:91;;16293:1;16281:13;;16261:91;;;-1:-1:-1;;;16307:45:15;16261:91;16365:15;16361:2733;;-1:-1:-1;;;;;;16389:18:15;;-1:-1:-1;;;16389:18:15;:38;;16426:1;16389:38;;;591:34;16389:38;16382:45;;;;;;;;;;16361:2733;16444:15;16440:2654;;-1:-1:-1;;;;;;16468:18:15;;-1:-1:-1;;;16468:18:15;:38;;16505:1;16468:38;;16440:2654;16544:39;;;16600:14;;;;;;;16596:2490;;;16640:3;16632:5;:11;16628:255;;;16652:1;16645:8;;;;;;;;;;;16628:255;16682:1;16674:5;:9;16670:213;;;16685:30;;;;16670:213;;;-1:-1:-1;;16736:5:15;:12;16732:151;;;16757:1;16750:8;;;;;;;;;;;16732:151;16787:1;16779:5;:9;16775:108;;;16829:5;16828:6;;16804:31;;;;;16861:9;16849:21;;16775:108;16897:24;;;;-1:-1:-1;;;16940:45:15;;16936:122;;17016:1;17031:14;;;;17001:16;;;;;16936:122;17076:9;17089:6;17076:19;17072:435;;;17116:5;:45;;-1:-1:-1;;;;;17116:45:15;;;-1:-1:-1;;;;;;17116:45:15;17109:52;;;;;;;;;;;17072:435;-1:-1:-1;;;17196:10:15;:44;17192:126;;;17254:1;17242:13;;17192:126;;;-1:-1:-1;;;;;17274:44:15;;;;17192:126;17481:10;17458:3;17445:9;:16;;17378:5;:46;;17423:1;17378:46;;;-1:-1:-1;;;17378:46:15;-1:-1:-1;;;;;17377:85:15;;:114;17342:151;;17335:158;;;;;;;;;;;16596:2490;17547:1;17539:5;:9;17535:189;;;17579:1;17564:16;;;;;17607:1;17594:14;;;;17535:189;;;17639:1;17631:5;:9;17627:97;;;17671:1;17656:16;;;;;17710:1;17698:9;:13;17686:25;;17627:97;17748:3;17740:5;:11;17736:258;;;17766:1;17753:14;;17736:258;;;17796:1;17788:5;:9;17784:210;;;17848:1;17840:5;:9;17826:1;17813:10;:14;:37;;17854:1;17812:43;17799:56;;17784:210;;;-1:-1:-1;;17876:5:15;:12;17872:122;;;17903:1;17890:14;;17872:122;;;-1:-1:-1;;17925:5:15;:10;17921:73;;;17987:1;17979:5;17978:6;;:10;17964:1;17951:10;:14;:38;;17993:1;17950:44;17937:57;;17921:73;18025:10;18011;:24;18007:161;;18051:10;18037:24;;;;18007:161;;;18118:10;18105;:23;18092:36;;18150:5;18142:13;;18007:161;18184:15;18180:53;;-1:-1:-1;591:34:15;;-1:-1:-1;18213:20:15;;-1:-1:-1;;;;;;18213:20:15;18180:53;18246:11;18260:16;18265:10;18260:3;:16::i;:::-;18246:30;;18293:3;18300;18293:10;18289:515;;;18346:1;18332:10;:15;;-1:-1:-1;;;;;18332:48:15;18319:61;;18407:1;18394:14;;;;18289:515;;;18437:3;18431;:9;18427:377;;;18472:3;:9;;;18499:17;;;18495:247;;;18561:5;18547:10;:19;;-1:-1:-1;;;;;18547:52:15;18534:65;;18628:5;18615:18;;;;18495:247;;;18726:1;;-1:-1:-1;;18685:13:15;18670:28;;;;;18495:247;18427:377;;;;-1:-1:-1;;;;;18760:44:15;;;;18427:377;18821:9;18834:6;18821:19;18817:258;;;18861:5;:45;;-1:-1:-1;;;;;18861:45:15;;;-1:-1:-1;;;;;;18861:45:15;18854:52;;;;;;;;;;;;18817:258;19063:10;19042:3;19029:9;:16;;18964:5;:46;;19009:1;18964:46;;;-1:-1:-1;;;18964:46:15;-1:-1:-1;;;;;18963:83:15;;:110;18930:145;;18923:152;;;;;;;;;;15491:3613;;;;;:::o;875:18:16:-;;;;;;;;;;;;;;;-1:-1:-1;;875:18:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2577:149:3:-;2643:4;2659:39;2668:12;:10;:12::i;:::-;2682:7;2691:6;2659:8;:39::i;:::-;-1:-1:-1;2715:4:3;2577:149;;;;:::o;1636:89::-;1706:12;;1636:89;;:::o;3184:300::-;3273:4;3289:36;3299:6;3307:9;3318:6;3289:9;:36::i;:::-;3335:121;3344:6;3352:12;:10;:12::i;:::-;3366:89;3404:6;3366:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3366:19:3;;;;;;:11;:19;;;;;;3386:12;:10;:12::i;:::-;-1:-1:-1;;;;;3366:33:3;;;;;;;;;;;;-1:-1:-1;3366:33:3;;;:89;;:37;:89;:::i;:::-;3335:8;:121::i;:::-;-1:-1:-1;3473:4:3;3184:300;;;;;;:::o;4517:347:16:-;1163:9:2;:7;:9::i;:::-;1155:54;;;;-1:-1:-1;;;;;1155:54:2;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4604:18:16;;;;;;:10;:18;;;;;;4601:256;;4641:20;;:::i;:::-;-1:-1:-1;4664:103:16;;;;;;;;;;;-1:-1:-1;;;;;4664:103:16;;;;;;;;;;4782:6;27:10:-1;;39:1;23:18;;45:23;;-1:-1;4782:14:16;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4782:14:16;;;;;;;;;;;;4832:13;;4811:18;;;:10;:18;;;;;;:34;4601:256;4517:347;;:::o;3879:207:3:-;3959:4;3975:83;3984:12;:10;:12::i;:::-;3998:7;4007:50;4046:10;4007:11;:25;4019:12;:10;:12::i;:::-;-1:-1:-1;;;;;4007:25:3;;;;;;;;;;;;;;;;;-1:-1:-1;4007:25:3;;;:34;;;;;;;;;;;:50;:38;:50;:::i;9843:65:16:-;1163:9:2;:7;:9::i;:::-;1155:54;;;;-1:-1:-1;;;;;1155:54:2;;;;;;;;;9890:10:16;:8;:10::i;:::-;9843:65::o;7783:1233::-;7981:19;8024:14;8013:36;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;8013:36:16;;;8003:47;;;;;;7981:69;;8061:19;8146:11;8093:65;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;8093:65:16;;;8083:76;;;;;;8061:98;;8215:6;;;;;;;;;-1:-1:-1;;;;;8215:6:16;-1:-1:-1;;;;;8178:43:16;:34;8188:11;8201:2;8205;8209;8178:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8178:34:16;;;;;;;;-1:-1:-1;;;;;8178:43:16;;8170:52;;;;;;8236:7;;:38;;-1:-1:-1;;;;;8236:38:16;;8284:4;;-1:-1:-1;;;;;8236:7:16;;:17;;:38;;8265:8;;8236:38;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8236:38:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8236:38:16;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;8236:38:16;;;;;;;;;-1:-1:-1;;;;;8236:53:16;;8233:776;;;8305:14;8322:7;:22;8330:13;-1:-1:-1;;;;;8322:22:16;-1:-1:-1;;;;;8322:22:16;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8322:22:16;8305:39;;8359:6;:14;8366:6;-1:-1:-1;;;;;8359:14:16;-1:-1:-1;;;;;8359:14:16;;;;;;;;;;;;:29;8374:13;-1:-1:-1;;;;;8359:29:16;-1:-1:-1;;;;;8359:29:16;;;;;;;;;;;;:44;;8409:9;8359:60;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;8359:60:16;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8359:60:16;;;;;-1:-1:-1;;;;;8359:60:16;;;;;;;8487:99;8504:6;:14;8511:6;-1:-1:-1;;;;;8504:14:16;-1:-1:-1;;;;;8504:14:16;;;;;;;;;;;;:29;8519:13;-1:-1:-1;;;;;8504:29:16;-1:-1:-1;;;;;8504:29:16;;;;;;;;;;;;:50;;;;;;;;;;;;8556:29;8578:6;8556:21;:29::i;8487:99::-;8434:6;:14;8441:6;-1:-1:-1;;;;;8434:14:16;-1:-1:-1;;;;;8434:14:16;;;;;;;;;;;;:29;8449:13;-1:-1:-1;;;;;8434:29:16;-1:-1:-1;;;;;8434:29:16;;;;;;;;;;;;:50;;;:152;;;;;-1:-1:-1;;;;;8434:152:16;;;;;;;;;;;;8602:9;:20;8612:9;-1:-1:-1;;;;;8602:20:16;-1:-1:-1;;;;;8602:20:16;;;;;;;;;;;;:35;8623:13;-1:-1:-1;;;;;8602:35:16;-1:-1:-1;;;;;8602:35:16;;;;;;;;;;;;:50;;8658:6;8602:63;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;8602:63:16;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8602:63:16;;;;;-1:-1:-1;;;;;8602:63:16;;;;;;;8739:105;8756:9;:20;8766:9;-1:-1:-1;;;;;8756:20:16;-1:-1:-1;;;;;8756:20:16;;;;;;;;;;;;:35;8777:13;-1:-1:-1;;;;;8756:35:16;-1:-1:-1;;;;;8756:35:16;;;;;;;;;;;;:56;;;;;;;;;;;;8814:29;8836:6;8814:21;:29::i;8739:105::-;-1:-1:-1;;;;;8680:20:16;;;;;;;:9;:20;;;;;;;;:35;;;;;;;;;;;:56;;;:164;;;;;;;-1:-1:-1;;;8680:164:16;-1:-1:-1;;;;;8680:164:16;;;;;;;;;;8859:50;;;;:61;;;8940:57;;;;;8859:61;;8975:6;;8680:35;;8940:57;;;;;;;;;;8233:776;;7783:1233;;;;;;;;;;:::o;3226:415::-;1024:12:5;;;;;;;;:31;;;1040:15;:13;:15::i;:::-;1024:47;;;-1:-1:-1;1060:11:5;;;;1059:12;1024:47;1016:106;;;;-1:-1:-1;;;;;1016:106:5;;;;;;;;;1129:19;1152:12;;;;;;1151:13;1170:80;;;;1198:12;:19;;-1:-1:-1;;;;1198:19:5;;;;;1225:18;1213:4;1225:18;;;1170:80;3357:26:16;3376:6;3357:18;:26::i;:::-;3394:7;:30;;-1:-1:-1;;;;;;3394:30:16;3413:10;3394:30;;;3449:23;;;;3466:5;;3449:23;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3449:23:16;;;3435:4;:38;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3493:20:16;;-1:-1:-1;;;;;3493:20:16;;:15;;;;:20;;:5;;3509:1;;3511;;3493:20;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3493:20:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3493:20:16;;;;;;39:16:-1;36:1;17:17;2:54;101:4;3493:20:16;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;3493::16;;;;;;;;;3484:29;;;;:6;;:29;;;;;;:::i;:::-;-1:-1:-1;3524:8:16;:16;;;3551:12;:24;;;3586:5;:20;;-1:-1:-1;;;;;;3586:20:16;-1:-1:-1;;;;;3586:20:16;;;;;;;;;;3617:6;:16;;-1:-1:-1;;;;;;3617:16:16;3586:20;3617:16;;;;;;;;;;;;;1264:55:5;;;;1307:5;1292:20;;-1:-1:-1;;1292:20:5;;;1264:55;3226:415:16;;;;;;:::o;6924:788::-;7124:19;7167:14;7156:36;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;7156:36:16;;;7146:47;;;;;;7124:69;;7204:19;7289:11;7236:65;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;7236:65:16;;;7226:76;;;;;;7204:98;;7358:6;;;;;;;;;-1:-1:-1;;;;;7358:6:16;-1:-1:-1;;;;;7321:43:16;:34;7331:11;7344:2;7348;7352;7321:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7321:34:16;;;;;;;;-1:-1:-1;;;;;7321:43:16;;7313:52;;;;;;7379:7;;:38;;-1:-1:-1;;;;;7379:38:16;;7427:4;;-1:-1:-1;;;;;7379:7:16;;:17;;:38;;7408:8;;7379:38;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7379:38:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7379:38:16;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;7379:38:16;;;;;;;;;-1:-1:-1;;;;;7379:53:16;;7376:329;;;7486:29;7508:6;7486:21;:29::i;:::-;-1:-1:-1;;;;;7448:14:16;;;;;;;:6;:14;;;;;;;;:26;;;;;;;;;;;:35;;;:67;;-1:-1:-1;;;;;;7448:67:16;;;;;;;;;;;;;7530:41;;;;:52;;;7597:7;:19;;;;;;;:28;;-1:-1:-1;;;;;;7597:28:16;;;;;7645:48;;;;;7530:52;;7674:6;;7448:26;;7645:48;;;;;;;;;;6924:788;;;;;;;;;;:::o;5702:1153::-;5801:6;;;;:15;5793:52;;;;-1:-1:-1;;;;;5793:52:16;;;;;;;;;-1:-1:-1;;;;;5888:18:16;;5856:10;5888:18;;;:10;:18;;;;;;:20;5885:50;;-1:-1:-1;5931:4:16;5885:50;5949:5;5946:902;;;5970:44;5979:10;5999:4;6006:7;5970:8;:44::i;:::-;-1:-1:-1;;;;;6059:18:16;;6029:20;6059:18;;;:10;:18;;;;;;6052:6;:26;;:6;;6059:18;6052:26;;;;;;;;;;;;;;;;:36;;;6029:59;;6112:6;-1:-1:-1;;;;;6106:26:16;;6133:10;6153:4;6160:7;6106:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6106:62:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6106:62:16;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;6106:62:16;;;;;;;;;6103:289;;;-1:-1:-1;;;;;6240:18:16;;;;;;:10;:18;;;;;;;;:32;;;;;;;;;6223:82;;6240:32;;6274:30;6296:7;6274:21;:30::i;6223:82::-;-1:-1:-1;;;;;6188:18:16;;;;;;:10;:18;;;;;;;;:32;;;;;;;;;;:117;;-1:-1:-1;;;;;;6188:117:16;;;;;;;;;;;;;6329:47;;;;;;6188:32;;6368:7;;6329:47;;;;;;;;;;6103:289;5946:902;;;;6449:10;6504:1;6438:22;;;:10;:22;;;;;;;;-1:-1:-1;;;;;6438:31:16;;;;;;;;6421:81;;6438:31;;6471:30;6493:7;6471:21;:30::i;:::-;6421:16;:81::i;:::-;:84;;;6418:430;;6583:10;6572:22;;;;:10;:22;;;;;;;;-1:-1:-1;;;;;6572:31:16;;;;;;;;6555:81;;6572:31;;6605:30;6627:7;6605:21;:30::i;:::-;6555:16;:81::i;:::-;6532:10;6521:22;;;;:10;:22;;;;;;;;-1:-1:-1;;;;;6521:31:16;;;;;;;;;:115;;-1:-1:-1;;;;;;6521:115:16;;;;;;;;-1:-1:-1;;;;;6698:18:16;;;;:10;:18;;;;;:27;;;;;;;;;6681:77;;6698:27;6727:30;6749:7;6727:21;:30::i;6681:77::-;-1:-1:-1;;;;;6651:18:16;;;;;;:10;:18;;;;;;;;-1:-1:-1;;;;;6651:27:16;;;;;;;;;:107;;-1:-1:-1;;;;;;6651:107:16;;;;;;;;;;;;;6778:42;;;;;;6812:7;;6778:42;;;;;;;;;;6418:430;5702:1153;;;;:::o;5046:182::-;-1:-1:-1;;;;;5133:18:16;;5114:4;5133:18;;;:10;:18;;;;;;:20;5130:90;;-1:-1:-1;5175:4:16;5168:11;;5130:90;-1:-1:-1;5215:5:16;5208:12;;3649:89;1163:9:2;:7;:9::i;:::-;1155:54;;;;-1:-1:-1;;;;;1155:54:2;;;;;;;;;3714:6:16;:16;;-1:-1:-1;;;;;3714:16:16;;;;;-1:-1:-1;;;;;;3714:16:16;;;;;;;;;3649:89::o;1783:108:3:-;-1:-1:-1;;;;;1866:18:3;1840:7;1866:18;;;:9;:18;;;;;;;1783:108::o;1746:137:2:-;1163:9;:7;:9::i;:::-;1155:54;;;;-1:-1:-1;;;;;1155:54:2;;;;;;;;;1828:6;;1807:40;;1844:1;;-1:-1:-1;;;;;1828:6:2;;1807:40;;1844:1;;1807:40;1857:6;:19;;-1:-1:-1;;;;;;1857:19:2;;;1746:137::o;9064:698:16:-;9263:19;9306:14;9295:36;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;9295:36:16;;;9285:47;;;;;;9263:69;;9343:19;9428:11;9375:65;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;9375:65:16;;;9365:76;;;;;;9343:98;;9497:6;;;;;;;;;-1:-1:-1;;;;;9497:6:16;-1:-1:-1;;;;;9460:43:16;:34;9470:11;9483:2;9487;9491;9460:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9460:34:16;;;;;;;;-1:-1:-1;;;;;9460:43:16;;9452:52;;;;;;9518:8;-1:-1:-1;;;;;9518:17:16;9515:169;;;9550:43;;-1:-1:-1;;;;;9550:35:16;;;:43;;;;;9586:6;;9550:43;;;;9586:6;9550:35;:43;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9550:43:16;9515:169;;;9624:48;;-1:-1:-1;;;;;9624:48:16;;-1:-1:-1;;;;;9624:30:16;;;;;:48;;9655:8;;9665:6;;9624:48;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9624:48:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9624:48:16;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;9624:48:16;;;;;;;;;;9515:169;9712:8;-1:-1:-1;;;;;9699:55:16;;9722:8;9732:6;9740:13;9699:55;;;;;;;;;9774:61;1163:9:2;:7;:9::i;:::-;1155:54;;;;-1:-1:-1;;;;;1155:54:2;;;;;;;;;9819:8:16;:6;:8::i;959:77:2:-;1023:6;;-1:-1:-1;;;;;1023:6:2;959:77;:::o;1310:92::-;1389:6;;1350:4;;-1:-1:-1;;;;;1389:6:2;1373:12;:10;:12::i;:::-;-1:-1:-1;;;;;1373:22:2;;1366:29;;1310:92;:::o;900:20:16:-;;;;;;;;;;;;;;;-1:-1:-1;;900:20:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4573:258:3;4658:4;4674:129;4683:12;:10;:12::i;:::-;4697:7;4706:96;4745:15;4706:96;;;;;;;;;;;;;;;;;:11;:25;4718:12;:10;:12::i;:::-;-1:-1:-1;;;;;4706:25:3;;;;;;;;;;;;;;;;;-1:-1:-1;4706:25:3;;;:34;;;;;;;;;;;:96;;:38;:96;:::i;2094:155::-;2163:4;2179:42;2189:12;:10;:12::i;:::-;2203:9;2214:6;2179:9;:42::i;762:79:27:-;827:6;;;;762:79;:::o;741:142:2:-;1024:12:5;;;;;;;;:31;;;1040:15;:13;:15::i;:::-;1024:47;;;-1:-1:-1;1060:11:5;;;;1059:12;1024:47;1016:106;;;;-1:-1:-1;;;;;1016:106:5;;;;;;;;;1129:19;1152:12;;;;;;1151:13;1170:80;;;;1198:12;:19;;-1:-1:-1;;;;1198:19:5;;;;;1225:18;1213:4;1225:18;;;1170:80;806:6:2;:15;;-1:-1:-1;;;;;;806:15:2;-1:-1:-1;;;;;806:15:2;;;;;;;;;;;836:40;;869:6;;;-1:-1:-1;;836:40:2;;-1:-1:-1;;836:40:2;1268:14:5;1264:55;;;1307:5;1292:20;;-1:-1:-1;;1292:20:5;;;741:142:2;;:::o;5297:105:16:-;5349:20;5388:6;5381:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5381:13:16;;;;;;;;;;;;;;;;;;;;;;5297:105;:::o;2307:132:3:-;-1:-1:-1;;;;;2405:18:3;;;2379:7;2405:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2307:132::o;2032:107:2:-;1163:9;:7;:9::i;:::-;1155:54;;;;-1:-1:-1;;;;;1155:54:2;;;;;;;;;2104:28;2123:8;2104:18;:28::i;:::-;2032:107;:::o;49968:570:15:-;50015:7;50043:1;50039;:5;50030:15;;;;;;50052:14;-1:-1:-1;;;50081:40:15;;50077:75;;50131:3;50125:9;;;;50136:13;50077:75;50166:19;50161:1;:24;50157:57;;50195:2;50189:8;;;;50199:12;50157:57;50228:11;50223:1;:16;50219:49;;50249:2;50243:8;;;;50253:12;50219:49;50282:7;50277:1;:12;50273:45;;50299:2;50293:8;;;;50303:12;50273:45;50332:5;50327:1;:10;50323:41;;50347:1;50341:7;;;;50350:11;50323:41;50378:4;50373:1;:9;50369:40;;50392:1;50386:7;;;;50395:11;50369:40;50423:3;50418:1;:8;50414:39;;50436:1;50430:7;;;;50439:11;50414:39;50467:3;50462:1;:8;50458:25;;50482:1;50472:11;50527:6;49968:570;-1:-1:-1;;49968:570:15:o;867:96:0:-;946:10;867:96;:::o;7427:332:3:-;-1:-1:-1;;;;;7520:19:3;;7512:68;;;;-1:-1:-1;;;;;7512:68:3;;;;;;;;;-1:-1:-1;;;;;7598:21:3;;7590:68;;;;-1:-1:-1;;;;;7590:68:3;;;;;;;;;-1:-1:-1;;;;;7669:18:3;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;;:36;;;7720:32;;;;;7699:6;;7720:32;;;;;;;;;;7427:332;;;:::o;5305:464::-;-1:-1:-1;;;;;5402:20:3;;5394:70;;;;-1:-1:-1;;;;;5394:70:3;;;;;;;;;-1:-1:-1;;;;;5482:23:3;;5474:71;;;;-1:-1:-1;;;;;5474:71:3;;;;;;;;;5576;5598:6;5576:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5576:17:3;;;;;;:9;:17;;;;;;;:71;;:21;:71;:::i;:::-;-1:-1:-1;;;;;5556:17:3;;;;;;;:9;:17;;;;;;:91;;;;5680:20;;;;;;;:32;;5705:6;5680:32;:24;:32;:::i;:::-;-1:-1:-1;;;;;5657:20:3;;;;;;;:9;:20;;;;;;;:55;;;;5727:35;;;;;;;;;;5755:6;;5727:35;;1732:187:1;1818:7;1853:12;1845:6;;;;1837:29;;;;-1:-1:-1;;;;;1837:29:1;;;;;;;;;;-1:-1:-1;;;1888:5:1;;;1732:187::o;834:176::-;892:7;923:5;;;946:6;;;;938:46;;;;-1:-1:-1;;;;;938:46:1;;;;;;;;491:88:27;531:6;:14;;-1:-1:-1;;531:14:27;;;561:10;;;;540:5;;561:10;491:88::o;1409:498:5:-;1820:4;1864:17;1895:7;1409:498;:::o;13643:906:15:-;13702:4;-1:-1:-1;;;;;13734:11:15;;;;:48;-1:-1:-1;;;;;13798:47:15;;;13789:57;;;;;;-1:-1:-1;;;;;13884:11:15;;;;:48;-1:-1:-1;;;;;13948:47:15;;;13939:57;;;;;;-1:-1:-1;;;;;;14062:6:15;;;;;;;;;:56;;;-1:-1:-1;;;;;14072:9:15;-1:-1:-1;;;;;14072:46:15;;14062:56;14053:66;;;;;;-1:-1:-1;;;;;;14130:6:15;;;;;;;14126:419;;;14145:1;14138:8;;;;;;14126:419;14165:14;-1:-1:-1;;;14191:1:15;14182:11;;-1:-1:-1;;;;;14182:49:15;;;14165:66;;14239:14;-1:-1:-1;;;14265:1:15;14256:11;;-1:-1:-1;;;;;14256:49:15;;;14239:66;;14318:9;14314:225;;;14343:9;14339:83;;;14373:9;-1:-1:-1;;;;;14361:21:15;:9;-1:-1:-1;;;;;14361:21:15;;:37;;14396:1;14361:37;;;-1:-1:-1;;14361:37:15;14354:44;;;;;;;;14314:225;14452:9;14448:82;;;14470:1;14463:8;;;;;;;;14448:82;14505:9;-1:-1:-1;;;;;14493:21:15;:9;-1:-1:-1;;;;;14493:21:15;;:37;;-1:-1:-1;;14493:37:15;;;14523:1;14486:44;;;;;;;;19578:133;19637:7;19659:47;19664:1;-1:-1:-1;;;19667:38:15;;19659:3;:47::i;298:83:27:-;336:6;:13;;-1:-1:-1;;336:13:27;345:4;336:13;;;365:8;;;;336:6;;365:8;298:83::o;2240:225:2:-;-1:-1:-1;;;;;2313:22:2;;2305:73;;;;-1:-1:-1;;;;;2305:73:2;;;;;;;;;2414:6;;2393:38;;-1:-1:-1;;;;;2393:38:2;;;;2414:6;;2393:38;;2414:6;;2393:38;2441:6;:17;;-1:-1:-1;;;;;;2441:17:2;-1:-1:-1;;;;;2441:17:2;;;;;;;;;;2240:225::o;581:9336:16:-;;;;;;;;;;-1:-1:-1;581:9336:16;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;581:9336:16;;;-1:-1:-1;581:9336:16;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;5:118:-1;;72:46;110:6;97:20;72:46;;130:122;;208:39;239:6;233:13;208:39;;259:116;;334:36;362:6;356:13;334:36;;382:118;;449:46;487:6;474:20;449:46;;508:444;;621:3;614:4;606:6;602:17;598:27;588:2;;639:1;636;629:12;588:2;669:6;663:13;691:65;706:49;748:6;706:49;;;691:65;;;682:74;;776:6;769:5;762:21;812:4;804:6;800:17;845:4;838:5;834:16;880:3;871:6;866:3;862:16;859:25;856:2;;;897:1;894;887:12;856:2;907:39;939:6;934:3;929;907:39;;;581:371;;;;;;;;1085:114;;1150:44;1186:6;1173:20;1150:44;;1206:241;;1310:2;1298:9;1289:7;1285:23;1281:32;1278:2;;;1326:1;1323;1316:12;1278:2;1361:1;1378:53;1423:7;1403:9;1378:53;;;1368:63;1272:175;-1:-1;;;;1272:175;1454:263;;1569:2;1557:9;1548:7;1544:23;1540:32;1537:2;;;1585:1;1582;1575:12;1537:2;1620:1;1637:64;1693:7;1673:9;1637:64;;1724:366;;;1845:2;1833:9;1824:7;1820:23;1816:32;1813:2;;;1861:1;1858;1851:12;1813:2;1896:1;1913:53;1958:7;1938:9;1913:53;;;1903:63;;1875:97;2003:2;2021:53;2066:7;2057:6;2046:9;2042:22;2021:53;;;2011:63;;1982:98;1807:283;;;;;;2097:491;;;;2235:2;2223:9;2214:7;2210:23;2206:32;2203:2;;;2251:1;2248;2241:12;2203:2;2286:1;2303:53;2348:7;2328:9;2303:53;;;2293:63;;2265:97;2393:2;2411:53;2456:7;2447:6;2436:9;2432:22;2411:53;;;2401:63;;2372:98;2501:2;2519:53;2564:7;2555:6;2544:9;2540:22;2519:53;;;2509:63;;2480:98;2197:391;;;;;;2595:366;;;2716:2;2704:9;2695:7;2691:23;2687:32;2684:2;;;2732:1;2729;2722:12;2684:2;2767:1;2784:53;2829:7;2809:9;2784:53;;;2774:63;;2746:97;2874:2;2892:53;2937:7;2928:6;2917:9;2913:22;2892:53;;3341:491;;;;3479:2;3467:9;3458:7;3454:23;3450:32;3447:2;;;3495:1;3492;3485:12;3447:2;3530:1;3547:53;3592:7;3572:9;3547:53;;;3537:63;;3509:97;3637:2;3655:53;3700:7;3691:6;3680:9;3676:22;3655:53;;;3645:63;;3616:98;3745:2;3763:53;3808:7;3799:6;3788:9;3784:22;3763:53;;3839:257;;3951:2;3939:9;3930:7;3926:23;3922:32;3919:2;;;3967:1;3964;3957:12;3919:2;4002:1;4019:61;4072:7;4052:9;4019:61;;4103:743;;;;;;4275:3;4263:9;4254:7;4250:23;4246:33;4243:2;;;4292:1;4289;4282:12;4243:2;4327:1;4344:53;4389:7;4369:9;4344:53;;;4334:63;;4306:97;4434:2;4452:53;4497:7;4488:6;4477:9;4473:22;4452:53;;;4442:63;;4413:98;4542:2;4560:53;4605:7;4596:6;4585:9;4581:22;4560:53;;;4550:63;;4521:98;4650:2;4668:53;4713:7;4704:6;4693:9;4689:22;4668:53;;;4658:63;;4629:98;4758:3;4777:53;4822:7;4813:6;4802:9;4798:22;4777:53;;;4767:63;;4737:99;4237:609;;;;;;;;;4853:362;;4978:2;4966:9;4957:7;4953:23;4949:32;4946:2;;;4994:1;4991;4984:12;4946:2;5029:24;;5073:18;5062:30;;5059:2;;;5105:1;5102;5095:12;5059:2;5125:74;5191:7;5182:6;5171:9;5167:22;5125:74;;5222:1117;;;;;;;;;5443:3;5431:9;5422:7;5418:23;5414:33;5411:2;;;5460:1;5457;5450:12;5411:2;5495:1;5512:53;5557:7;5537:9;5512:53;;;5502:63;;5474:97;5602:2;5620:53;5665:7;5656:6;5645:9;5641:22;5620:53;;;5610:63;;5581:98;5710:2;5728:53;5773:7;5764:6;5753:9;5749:22;5728:53;;;5718:63;;5689:98;5818:2;5836:53;5881:7;5872:6;5861:9;5857:22;5836:53;;;5826:63;;5797:98;5926:3;5945:53;5990:7;5981:6;5970:9;5966:22;5945:53;;;5935:63;;5905:99;6035:3;6054:51;6097:7;6088:6;6077:9;6073:22;6054:51;;;6044:61;;6014:97;6142:3;6161:53;6206:7;6197:6;6186:9;6182:22;6161:53;;;6151:63;;6121:99;6251:3;6270:53;6315:7;6306:6;6295:9;6291:22;6270:53;;;6260:63;;6230:99;5405:934;;;;;;;;;;;;6347:257;;6474:90;6560:3;6552:6;6474:90;;;-1:-1;;6593:4;6584:14;;6467:137;6612:142;6703:45;6742:5;6703:45;;;6698:3;6691:58;6685:69;;;6761:110;6834:31;6859:5;6834:31;;7058:781;;7243:74;7311:5;7243:74;;;7330:106;7429:6;7424:3;7330:106;;;7323:113;;7456:76;7526:5;7456:76;;;7553:1;7538:279;7563:6;7560:1;7557:13;7538:279;;;7610:103;7709:3;7700:6;7694:13;7610:103;;;7603:110;;7730:80;7803:6;7730:80;;;7720:90;-1:-1;7585:1;7578:9;7538:279;;;-1:-1;7830:3;;7222:617;-1:-1;;;;7222:617;7847:111;7924:28;7946:5;7924:28;;7965:110;8038:31;8063:5;8038:31;;8344:159;8445:52;8465:31;8490:5;8465:31;;;8445:52;;8510:150;8609:45;8648:5;8609:45;;8824:347;;8936:39;8969:5;8936:39;;;8987:71;9051:6;9046:3;8987:71;;;8980:78;;9063:52;9108:6;9103:3;9096:4;9089:5;9085:16;9063:52;;;9136:29;9158:6;9136:29;;;9127:39;;;;8916:255;-1:-1;;;8916:255;9525:465;;9685:67;9749:2;9744:3;9685:67;;;9785:66;9765:87;;-1:-1;;;;;9881:2;9872:12;;9865:88;9981:2;9972:12;;9671:319;-1:-1;;9671:319;9999:221;-1:-1;;;;;10135:79;;10128:92;10229:400;;10407:85;10489:2;10484:3;10407:85;;;10525:66;10505:87;;10620:2;10611:12;;10393:236;-1:-1;;10393:236;10638:465;;10798:67;10862:2;10857:3;10798:67;;;10898:66;10878:87;;-1:-1;;;;;10994:2;10985:12;;10978:88;11094:2;11085:12;;10784:319;-1:-1;;10784:319;11112:465;;11272:67;11336:2;11331:3;11272:67;;;11372:66;11352:87;;-1:-1;;;;;11468:2;11459:12;;11452:88;11568:2;11559:12;;11258:319;-1:-1;;11258:319;11586:364;;11746:67;11810:2;11805:3;11746:67;;;11846:66;11826:87;;11941:2;11932:12;;11732:218;-1:-1;;11732:218;11959:221;-1:-1;;;;;12095:79;;12088:92;12189:364;;12349:67;12413:2;12408:3;12349:67;;;12449:66;12429:87;;12544:2;12535:12;;12335:218;-1:-1;;12335:218;12562:364;;12722:67;12786:2;12781:3;12722:67;;;12822:66;12802:87;;12917:2;12908:12;;12708:218;-1:-1;;12708:218;12935:465;;13095:67;13159:2;13154:3;13095:67;;;13195:66;13175:87;;13296:66;13291:2;13282:12;;13275:88;13391:2;13382:12;;13081:319;-1:-1;;13081:319;13409:363;;13569:66;13633:1;13628:3;13569:66;;;-1:-1;;;;;13648:87;;13763:2;13754:12;;13555:217;-1:-1;;13555:217;13781:465;;13941:67;14005:2;14000:3;13941:67;;;14041:66;14021:87;;-1:-1;;;;;14137:2;14128:12;;14121:88;14237:2;14228:12;;13927:319;-1:-1;;13927:319;14255:465;;14415:67;14479:2;14474:3;14415:67;;;14515:66;14495:87;;-1:-1;;;;;14611:2;14602:12;;14595:88;14711:2;14702:12;;14401:319;-1:-1;;14401:319;14775:467;14972:22;;14902:4;14893:14;;;15000:61;14897:3;14972:22;15000:61;;;14922:145;15147:4;15140:5;15136:16;15130:23;15159:62;15215:4;15210:3;15206:14;15193:11;15159:62;;15376:114;15455:29;15478:5;15455:29;;15497:244;;15616:75;15687:3;15678:6;15616:75;;;-1:-1;15713:2;15704:12;;15604:137;-1:-1;15604:137;15748:511;;15975:148;16119:3;15975:148;;;15968:155;;16134:75;16205:3;16196:6;16134:75;;16266:213;16384:2;16369:18;;16398:71;16373:9;16442:6;16398:71;;16486:467;16676:2;16661:18;;16690:79;16665:9;16742:6;16690:79;;;16780:80;16856:2;16845:9;16841:18;16832:6;16780:80;;;16871:72;16939:2;16928:9;16924:18;16915:6;16871:72;;16960:324;17106:2;17091:18;;17120:71;17095:9;17164:6;17120:71;;;17202:72;17270:2;17259:9;17255:18;17246:6;17202:72;;17291:441;17499:2;17513:47;;;17484:18;;17574:148;17484:18;17708:6;17574:148;;17739:201;17851:2;17836:18;;17865:65;17840:9;17903:6;17865:65;;17947:499;18145:2;18130:18;;18159:79;18134:9;18211:6;18159:79;;;18249:88;18333:2;18322:9;18318:18;18309:6;18249:88;;;18348;18432:2;18421:9;18417:18;18408:6;18348:88;;18453:518;18672:2;18657:18;;18686:71;18661:9;18730:6;18686:71;;;18805:9;18799:4;18795:20;18790:2;18779:9;18775:18;18768:48;18830:131;18956:4;18830:131;;18978:324;19124:2;19109:18;;19138:71;19113:9;19182:6;19138:71;;19309:435;19483:2;19468:18;;19497:71;19472:9;19541:6;19497:71;;;19579:72;19647:2;19636:9;19632:18;19623:6;19579:72;;;19662;19730:2;19719:9;19715:18;19706:6;19662:72;;19751:539;19949:3;19934:19;;19964:71;19938:9;20008:6;19964:71;;;20046:68;20110:2;20099:9;20095:18;20086:6;20046:68;;;20125:72;20193:2;20182:9;20178:18;20169:6;20125:72;;;20208;20276:2;20265:9;20261:18;20252:6;20208:72;;;19920:370;;;;;;;;20297:293;20431:2;20445:47;;;20416:18;;20506:74;20416:18;20566:6;20506:74;;20905:407;21096:2;21110:47;;;21081:18;;21171:131;21081:18;21171:131;;21319:450;21528:2;21513:18;;21542:134;21517:9;21542:134;;;21687:72;21755:2;21744:9;21740:18;21731:6;21687:72;;21776:407;21967:2;21981:47;;;21952:18;;22042:131;21952:18;22042:131;;22190:407;22381:2;22395:47;;;22366:18;;22456:131;22366:18;22456:131;;22604:407;22795:2;22809:47;;;22780:18;;22870:131;22780:18;22870:131;;23018:450;23227:2;23212:18;;23241:134;23216:9;23241:134;;23475:407;23666:2;23680:47;;;23651:18;;23741:131;23651:18;23741:131;;23889:407;24080:2;24094:47;;;24065:18;;24155:131;24065:18;24155:131;;24303:407;24494:2;24508:47;;;24479:18;;24569:131;24479:18;24569:131;;24717:407;24908:2;24922:47;;;24893:18;;24983:131;24893:18;24983:131;;25131:407;25322:2;25336:47;;;25307:18;;25397:131;25307:18;25397:131;;25545:213;25663:2;25648:18;;25677:71;25652:9;25721:6;25677:71;;25765:256;25827:2;25821:9;25853:17;;;25928:18;25913:34;;25949:22;;;25910:62;25907:2;;;25985:1;25982;25975:12;25907:2;26001;25994:22;25805:216;;-1:-1;25805:216;26028:259;;26172:18;26164:6;26161:30;26158:2;;;26204:1;26201;26194:12;26158:2;-1:-1;26277:4;26248;26225:17;;;;-1:-1;;26221:33;26267:15;;26095:192;26296:141;26425:4;26413:17;;26394:43;26446:127;26556:12;;26540:33;26926:198;27064:19;;;27113:4;27104:14;;27057:67;27458:105;;27527:31;27552:5;27527:31;;27570:92;27643:13;27636:21;;27619:43;27755:128;-1:-1;;;;;27824:54;;27807:76;27976:88;28054:4;28043:16;;28026:38;28684:129;;28771:37;28802:5;28771:37;;28820:123;;28907:31;28932:5;28907:31;;29080:121;;29159:37;29190:5;29159:37;;29331:268;29396:1;29403:101;29417:6;29414:1;29411:13;29403:101;;;29484:11;;;29478:18;29465:11;;;29458:39;29439:2;29432:10;29403:101;;;29519:6;29516:1;29513:13;29510:2;;;-1:-1;;29584:1;29566:16;;29559:27;29380:219;29688:97;29776:2;29756:14;-1:-1;;29752:28;;29736:49",
744
744
  "source": "// Verified bond manager\r\n// (c) Kallol Borah, 2021\r\n\r\npragma solidity 0.5.7;\r\npragma experimental ABIEncoderV2;\r\n\r\nimport \"./interfaces/IBond.sol\";\r\nimport \"./interfaces/IFactory.sol\";\r\nimport \"./interfaces/IRates.sol\";\r\nimport \"./utilities/Pausable.sol\";\r\nimport \"./utilities/StringUtils.sol\";\r\nimport \"abdk-libraries-solidity/ABDKMathQuad.sol\";\r\nimport \"@openzeppelin/upgrades/contracts/Initializable.sol\";\r\nimport \"@openzeppelin/contracts-ethereum-package/contracts/ownership/Ownable.sol\";\r\nimport \"@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/ERC20.sol\";\r\n\r\ncontract Bond is IBond, ERC20, Ownable, Pausable {\r\n\r\n using stringutils for *;\r\n\r\n using ABDKMathQuad for uint256;\r\n using ABDKMathQuad for int256;\r\n using ABDKMathQuad for bytes16;\r\n\r\n //address of bridge\r\n address bridge;\r\n\r\n //name of Verified token (eg, Via-USD)\r\n string public name;\r\n string public symbol;\r\n bytes32 private bondName;\r\n bytes32 private bondCurrency;\r\n\r\n //verified token factory address\r\n IFactory private factory;\r\n \r\n //verified rates\r\n IRates private rates; \r\n \r\n //a Verified bond has some value, corresponds to a fiat currency\r\n //can have many purchasers and a issuer that have agreed to a zero coupon rate which determines the start price of the bond\r\n //and a tenure in unix timestamps of seconds counted from 1970-01-01. Verified bonds are of one year tenure.\r\n struct bond{\r\n address[] counterParties;\r\n bytes16 parValue; //face value of bond issued or purchased in the bond's currency\r\n bytes16 purchasedIssueAmount; //amount purchased at price of bond for paidInCurrency\r\n bytes16 paidInAmount; //amount paid in as collateral for issue of bond or as payment for purchase of bond\r\n bytes32 paidInCurrency; //currency denomination of collateral for issue or payment for purchase of bond\r\n }\r\n\r\n //mapping issuer (address) to address of bond token (address) which acts as identifier for bonds on offer\r\n mapping(address => mapping (address => bond)) private issues;\r\n\r\n //mapping purchaser (address) to address of bond token (address) which acts as identifier for bonds subscribed\r\n mapping(address => mapping (address => bond)) private purchases;\r\n\r\n //mapping issued bond (address) to issuer (address)\r\n mapping(address => address) private issuers;\r\n \r\n //mapping to party => currency deposited => amount\r\n mapping(address => mapping(bytes32 => bytes16)) private L1deposits;\r\n mapping(address => mapping(bytes32 => bytes16)) private L2deposits;\r\n\r\n //supported ERC20 tokens for issuing Verified bond tokens\r\n IBond.token[] private tokens;\r\n mapping(address => uint256) private tokenIndex;\r\n\r\n event BondIssueRequest(address indexed issuer, bytes32 currency, uint256 amount);\r\n event BondIssued(address indexed issuer, bytes32 collateralCurrency, uint256 issuedAmount, address token);\r\n event BondRedeemed(address indexed redeemer, bytes32 redemptionCurrency, uint256 redemptionAmount, address token);\r\n event BondPurchased(address indexed purchaser, bytes32 paidInCurrency, uint256 purchasedAmount, address token);\r\n\r\n function initialize(bytes32 _name, bytes32 _currency, address _owner, address _fee, address _bridge) public initializer {\r\n Ownable.initialize(_owner);\r\n factory = IFactory(msg.sender);\r\n name = string(abi.encodePacked(_name));\r\n symbol = _name.substring(0,5);\r\n bondName = _name;\r\n bondCurrency = _currency;\r\n rates = IRates(_fee);\r\n bridge = _bridge;\r\n }\r\n\r\n function setSigner(address _signer) onlyOwner external{\r\n bridge = _signer;\r\n }\r\n\r\n //handling pay in of ether for issue of via bond tokens\r\n function() external payable{\r\n //ether paid in\r\n require(msg.value !=0);\r\n //only to pay in ether\r\n require(msg.data.length==0);\r\n // contract must not be paused\r\n require(paused == false);\r\n //check aml status\r\n //require(fee.amlCheck(msg.sender)==true); \r\n //issue verified bond tokens\r\n L1deposits[msg.sender][\"ether\"] = ABDKMathQuad.add(L1deposits[msg.sender][\"ether\"], ABDKMathQuad.fromUInt(msg.value)); \r\n }\r\n\r\n /**\r\n Specifies list of supported tokens that can be deposited to issue Verified cash tokens\r\n @param _token address of token supported\r\n @param _name name of token supported\r\n */\r\n function supportTokens(address _token, bytes32 _name) onlyOwner external {\r\n if(tokenIndex[_token]==0){\r\n IBond.token memory t = IBond.token ({\r\n tokenName: _name,\r\n tokenAddress: _token\r\n });\r\n tokens.push(t);\r\n tokenIndex[_token] = tokens.length;\r\n }\r\n }\r\n\r\n /**\r\n Checks if a specified token is supported for issuing Verified cash tokens\r\n @param _token token that is supported for issuing cash tokens\r\n */\r\n function checkSupportForToken(address _token) external view returns(bool){\r\n if(tokenIndex[_token]>0)\r\n return true;\r\n else\r\n return false;\r\n }\r\n\r\n /**\r\n Returns array of tokens supported\r\n */\r\n function getSupportedTokens() external view returns(IBond.token[] memory){\r\n return tokens;\r\n }\r\n\r\n /**\r\n Used by external apps (eg, exchange, wallet) to buy Verified bond token \r\n @param _token address of token used by investor to buy the bond token\r\n @param _amount amount of token that is transferred from investor to this bond token issuing contract\r\n */\r\n function requestIssue(address _token, uint256 _amount, address _buyer) external {\r\n require(paused == false, \"Contract in paused state\");\r\n bool found = false;\r\n if(tokenIndex[_token]>0)\r\n found = true;\r\n if(found){\r\n _approve(msg.sender, address(this), _amount);\r\n bytes32 currencyName = tokens[tokenIndex[_token]].tokenName;\r\n if(ERC20(_token).transferFrom(msg.sender, address(this), _amount)){\r\n L2deposits[_buyer][currencyName] = ABDKMathQuad.add(L2deposits[_buyer][currencyName], ABDKMathQuad.fromUInt(_amount));\r\n emit BondIssueRequest(_buyer, currencyName, _amount);\r\n }\r\n }\r\n else if(ABDKMathQuad.cmp(L1deposits[msg.sender][\"ether\"], ABDKMathQuad.fromUInt(_amount))>=0){\r\n L1deposits[msg.sender][\"ether\"] = ABDKMathQuad.sub(L1deposits[msg.sender][\"ether\"], ABDKMathQuad.fromUInt(_amount));\r\n L2deposits[_buyer][\"ether\"] = ABDKMathQuad.add(L2deposits[_buyer][\"ether\"], ABDKMathQuad.fromUInt(_amount));\r\n emit BondIssueRequest(_buyer, \"ether\", _amount); \r\n }\r\n }\r\n \r\n //adds issued Verified bond tokens to user balances\r\n function addIssuedBalance(uint256 amount, address issuer, bytes32 currency, address issuedBond, bytes32 _hashedMessage, uint8 _v, bytes32 _r, bytes32 _s) \r\n external {\r\n bytes32 payloadHash = keccak256(abi.encode(_hashedMessage, \"L2toL1\"));\r\n bytes32 messageHash = keccak256(abi.encodePacked(\"\\x19Ethereum Signed Message:\\n32\", payloadHash));\r\n require(ecrecover(messageHash, _v, _r, _s)== bridge);\r\n if(factory.getIssuer(\"ViaBond\", currency)==address(this)){\r\n issues[issuer][issuedBond].parValue = ABDKMathQuad.fromUInt(amount);\r\n issues[issuer][issuedBond].paidInCurrency = currency;\r\n issuers[issuedBond] = issuer;\r\n emit BondIssued(issuer, currency, amount, issuedBond);\r\n }\r\n }\r\n\r\n //adds purchased Verified bond tokens to user balances \r\n function purchase(uint256 amount, address purchaser, bytes32 currency, address purchasedBond, bytes32 _hashedMessage, uint8 _v, bytes32 _r, bytes32 _s) \r\n external {\r\n bytes32 payloadHash = keccak256(abi.encode(_hashedMessage, \"L2toL1\"));\r\n bytes32 messageHash = keccak256(abi.encodePacked(\"\\x19Ethereum Signed Message:\\n32\", payloadHash));\r\n require(ecrecover(messageHash, _v, _r, _s)== bridge);\r\n if(factory.getIssuer(\"ViaBond\", currency)==address(this)){\r\n address issuer = issuers[purchasedBond];\r\n issues[issuer][purchasedBond].counterParties.push(purchaser);\r\n issues[issuer][purchasedBond].purchasedIssueAmount = ABDKMathQuad.add(issues[issuer][purchasedBond].purchasedIssueAmount, ABDKMathQuad.fromUInt(amount)); \r\n purchases[purchaser][purchasedBond].counterParties.push(issuer);\r\n purchases[purchaser][purchasedBond].purchasedIssueAmount = ABDKMathQuad.add(purchases[purchaser][purchasedBond].purchasedIssueAmount, ABDKMathQuad.fromUInt(amount));\r\n purchases[purchaser][purchasedBond].paidInCurrency = currency;\r\n emit BondPurchased(purchaser, currency, amount, purchasedBond);\r\n }\r\n }\r\n \r\n //redeems issued Verified bond\r\n function redeemBond(uint256 amount, address payOutTo, bytes32 currency, address redeemedToken, bytes32 _hashedMessage, uint8 _v, bytes32 _r, bytes32 _s) \r\n external {\r\n bytes32 payloadHash = keccak256(abi.encode(_hashedMessage, \"L2toL1\"));\r\n bytes32 messageHash = keccak256(abi.encodePacked(\"\\x19Ethereum Signed Message:\\n32\", payloadHash));\r\n require(ecrecover(messageHash, _v, _r, _s)== bridge);\r\n if(currency==\"ether\")\r\n address(uint160(payOutTo)).transfer(amount); \r\n else{\r\n IERC20(redeemedToken).transfer(payOutTo, amount);\r\n }\r\n emit BondRedeemed(payOutTo, currency, amount, redeemedToken);\r\n }\r\n \r\n function pause() onlyOwner public {\r\n _pause();\r\n }\r\n\r\n function unpause() onlyOwner public {\r\n _unpause();\r\n }\r\n \r\n}",
@@ -778,7 +778,7 @@
778
778
  "id": 6720,
779
779
  "nodeType": "ImportDirective",
780
780
  "scope": 7531,
781
- "sourceUnit": 10593,
781
+ "sourceUnit": 10799,
782
782
  "src": "116:32:16",
783
783
  "symbolAliases": [],
784
784
  "unitAlias": ""
@@ -789,7 +789,7 @@
789
789
  "id": 6721,
790
790
  "nodeType": "ImportDirective",
791
791
  "scope": 7531,
792
- "sourceUnit": 10786,
792
+ "sourceUnit": 11037,
793
793
  "src": "150:35:16",
794
794
  "symbolAliases": [],
795
795
  "unitAlias": ""
@@ -800,7 +800,7 @@
800
800
  "id": 6722,
801
801
  "nodeType": "ImportDirective",
802
802
  "scope": 7531,
803
- "sourceUnit": 10853,
803
+ "sourceUnit": 11104,
804
804
  "src": "187:33:16",
805
805
  "symbolAliases": [],
806
806
  "unitAlias": ""
@@ -811,7 +811,7 @@
811
811
  "id": 6723,
812
812
  "nodeType": "ImportDirective",
813
813
  "scope": 7531,
814
- "sourceUnit": 10940,
814
+ "sourceUnit": 11179,
815
815
  "src": "222:34:16",
816
816
  "symbolAliases": [],
817
817
  "unitAlias": ""
@@ -822,7 +822,7 @@
822
822
  "id": 6724,
823
823
  "nodeType": "ImportDirective",
824
824
  "scope": 7531,
825
- "sourceUnit": 11236,
825
+ "sourceUnit": 11475,
826
826
  "src": "258:37:16",
827
827
  "symbolAliases": [],
828
828
  "unitAlias": ""
@@ -880,10 +880,10 @@
880
880
  "id": 6729,
881
881
  "name": "IBond",
882
882
  "nodeType": "UserDefinedTypeName",
883
- "referencedDeclaration": 10592,
883
+ "referencedDeclaration": 10798,
884
884
  "src": "598:5:16",
885
885
  "typeDescriptions": {
886
- "typeIdentifier": "t_contract$_IBond_$10592",
886
+ "typeIdentifier": "t_contract$_IBond_$10798",
887
887
  "typeString": "contract IBond"
888
888
  }
889
889
  },
@@ -934,10 +934,10 @@
934
934
  "id": 6735,
935
935
  "name": "Pausable",
936
936
  "nodeType": "UserDefinedTypeName",
937
- "referencedDeclaration": 10939,
937
+ "referencedDeclaration": 11178,
938
938
  "src": "621:8:16",
939
939
  "typeDescriptions": {
940
- "typeIdentifier": "t_contract$_Pausable_$10939",
940
+ "typeIdentifier": "t_contract$_Pausable_$11178",
941
941
  "typeString": "contract Pausable"
942
942
  }
943
943
  },
@@ -952,8 +952,8 @@
952
952
  752,
953
953
  821,
954
954
  890,
955
- 10592,
956
- 10939
955
+ 10798,
956
+ 11178
957
957
  ],
958
958
  "contractKind": "contract",
959
959
  "documentation": null,
@@ -961,13 +961,13 @@
961
961
  "id": 7530,
962
962
  "linearizedBaseContracts": [
963
963
  7530,
964
- 10939,
964
+ 11178,
965
965
  340,
966
966
  752,
967
967
  821,
968
968
  29,
969
969
  890,
970
- 10592
970
+ 10798
971
971
  ],
972
972
  "name": "Bond",
973
973
  "nodeType": "ContractDefinition",
@@ -979,10 +979,10 @@
979
979
  "id": 6737,
980
980
  "name": "stringutils",
981
981
  "nodeType": "UserDefinedTypeName",
982
- "referencedDeclaration": 11235,
982
+ "referencedDeclaration": 11474,
983
983
  "src": "645:11:16",
984
984
  "typeDescriptions": {
985
- "typeIdentifier": "t_contract$_stringutils_$11235",
985
+ "typeIdentifier": "t_contract$_stringutils_$11474",
986
986
  "typeString": "library stringutils"
987
987
  }
988
988
  },
@@ -1212,7 +1212,7 @@
1212
1212
  "stateVariable": true,
1213
1213
  "storageLocation": "default",
1214
1214
  "typeDescriptions": {
1215
- "typeIdentifier": "t_contract$_IFactory_$10785",
1215
+ "typeIdentifier": "t_contract$_IFactory_$11036",
1216
1216
  "typeString": "contract IFactory"
1217
1217
  },
1218
1218
  "typeName": {
@@ -1220,10 +1220,10 @@
1220
1220
  "id": 6758,
1221
1221
  "name": "IFactory",
1222
1222
  "nodeType": "UserDefinedTypeName",
1223
- "referencedDeclaration": 10785,
1223
+ "referencedDeclaration": 11036,
1224
1224
  "src": "1033:8:16",
1225
1225
  "typeDescriptions": {
1226
- "typeIdentifier": "t_contract$_IFactory_$10785",
1226
+ "typeIdentifier": "t_contract$_IFactory_$11036",
1227
1227
  "typeString": "contract IFactory"
1228
1228
  }
1229
1229
  },
@@ -1240,7 +1240,7 @@
1240
1240
  "stateVariable": true,
1241
1241
  "storageLocation": "default",
1242
1242
  "typeDescriptions": {
1243
- "typeIdentifier": "t_contract$_IRates_$10852",
1243
+ "typeIdentifier": "t_contract$_IRates_$11103",
1244
1244
  "typeString": "contract IRates"
1245
1245
  },
1246
1246
  "typeName": {
@@ -1248,10 +1248,10 @@
1248
1248
  "id": 6760,
1249
1249
  "name": "IRates",
1250
1250
  "nodeType": "UserDefinedTypeName",
1251
- "referencedDeclaration": 10852,
1251
+ "referencedDeclaration": 11103,
1252
1252
  "src": "1092:6:16",
1253
1253
  "typeDescriptions": {
1254
- "typeIdentifier": "t_contract$_IRates_$10852",
1254
+ "typeIdentifier": "t_contract$_IRates_$11103",
1255
1255
  "typeString": "contract IRates"
1256
1256
  }
1257
1257
  },
@@ -1726,7 +1726,7 @@
1726
1726
  "stateVariable": true,
1727
1727
  "storageLocation": "default",
1728
1728
  "typeDescriptions": {
1729
- "typeIdentifier": "t_array$_t_struct$_token_$10500_storage_$dyn_storage",
1729
+ "typeIdentifier": "t_array$_t_struct$_token_$10706_storage_$dyn_storage",
1730
1730
  "typeString": "struct IBond.token[]"
1731
1731
  },
1732
1732
  "typeName": {
@@ -1735,10 +1735,10 @@
1735
1735
  "id": 6802,
1736
1736
  "name": "IBond.token",
1737
1737
  "nodeType": "UserDefinedTypeName",
1738
- "referencedDeclaration": 10500,
1738
+ "referencedDeclaration": 10706,
1739
1739
  "src": "2698:11:16",
1740
1740
  "typeDescriptions": {
1741
- "typeIdentifier": "t_struct$_token_$10500_storage_ptr",
1741
+ "typeIdentifier": "t_struct$_token_$10706_storage_ptr",
1742
1742
  "typeString": "struct IBond.token"
1743
1743
  }
1744
1744
  },
@@ -1747,7 +1747,7 @@
1747
1747
  "nodeType": "ArrayTypeName",
1748
1748
  "src": "2698:13:16",
1749
1749
  "typeDescriptions": {
1750
- "typeIdentifier": "t_array$_t_struct$_token_$10500_storage_$dyn_storage_ptr",
1750
+ "typeIdentifier": "t_array$_t_struct$_token_$10706_storage_$dyn_storage_ptr",
1751
1751
  "typeString": "struct IBond.token[]"
1752
1752
  }
1753
1753
  },
@@ -2364,7 +2364,7 @@
2364
2364
  "referencedDeclaration": 6759,
2365
2365
  "src": "3394:7:16",
2366
2366
  "typeDescriptions": {
2367
- "typeIdentifier": "t_contract$_IFactory_$10785",
2367
+ "typeIdentifier": "t_contract$_IFactory_$11036",
2368
2368
  "typeString": "contract IFactory"
2369
2369
  }
2370
2370
  },
@@ -2381,7 +2381,7 @@
2381
2381
  "name": "msg",
2382
2382
  "nodeType": "Identifier",
2383
2383
  "overloadedDeclarations": [],
2384
- "referencedDeclaration": 11250,
2384
+ "referencedDeclaration": 11489,
2385
2385
  "src": "3413:3:16",
2386
2386
  "typeDescriptions": {
2387
2387
  "typeIdentifier": "t_magic_message",
@@ -2414,10 +2414,10 @@
2414
2414
  "name": "IFactory",
2415
2415
  "nodeType": "Identifier",
2416
2416
  "overloadedDeclarations": [],
2417
- "referencedDeclaration": 10785,
2417
+ "referencedDeclaration": 11036,
2418
2418
  "src": "3404:8:16",
2419
2419
  "typeDescriptions": {
2420
- "typeIdentifier": "t_type$_t_contract$_IFactory_$10785_$",
2420
+ "typeIdentifier": "t_type$_t_contract$_IFactory_$11036_$",
2421
2421
  "typeString": "type(contract IFactory)"
2422
2422
  }
2423
2423
  },
@@ -2431,13 +2431,13 @@
2431
2431
  "nodeType": "FunctionCall",
2432
2432
  "src": "3404:20:16",
2433
2433
  "typeDescriptions": {
2434
- "typeIdentifier": "t_contract$_IFactory_$10785",
2434
+ "typeIdentifier": "t_contract$_IFactory_$11036",
2435
2435
  "typeString": "contract IFactory"
2436
2436
  }
2437
2437
  },
2438
2438
  "src": "3394:30:16",
2439
2439
  "typeDescriptions": {
2440
- "typeIdentifier": "t_contract$_IFactory_$10785",
2440
+ "typeIdentifier": "t_contract$_IFactory_$11036",
2441
2441
  "typeString": "contract IFactory"
2442
2442
  }
2443
2443
  },
@@ -2501,7 +2501,7 @@
2501
2501
  "name": "abi",
2502
2502
  "nodeType": "Identifier",
2503
2503
  "overloadedDeclarations": [],
2504
- "referencedDeclaration": 11237,
2504
+ "referencedDeclaration": 11476,
2505
2505
  "src": "3449:3:16",
2506
2506
  "typeDescriptions": {
2507
2507
  "typeIdentifier": "t_magic_abi",
@@ -2675,7 +2675,7 @@
2675
2675
  "lValueRequested": false,
2676
2676
  "memberName": "substring",
2677
2677
  "nodeType": "MemberAccess",
2678
- "referencedDeclaration": 11086,
2678
+ "referencedDeclaration": 11325,
2679
2679
  "src": "3493:15:16",
2680
2680
  "typeDescriptions": {
2681
2681
  "typeIdentifier": "t_function_delegatecall_pure$_t_bytes32_$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$bound_to$_t_bytes32_$",
@@ -2815,7 +2815,7 @@
2815
2815
  "referencedDeclaration": 6761,
2816
2816
  "src": "3586:5:16",
2817
2817
  "typeDescriptions": {
2818
- "typeIdentifier": "t_contract$_IRates_$10852",
2818
+ "typeIdentifier": "t_contract$_IRates_$11103",
2819
2819
  "typeString": "contract IRates"
2820
2820
  }
2821
2821
  },
@@ -2849,10 +2849,10 @@
2849
2849
  "name": "IRates",
2850
2850
  "nodeType": "Identifier",
2851
2851
  "overloadedDeclarations": [],
2852
- "referencedDeclaration": 10852,
2852
+ "referencedDeclaration": 11103,
2853
2853
  "src": "3594:6:16",
2854
2854
  "typeDescriptions": {
2855
- "typeIdentifier": "t_type$_t_contract$_IRates_$10852_$",
2855
+ "typeIdentifier": "t_type$_t_contract$_IRates_$11103_$",
2856
2856
  "typeString": "type(contract IRates)"
2857
2857
  }
2858
2858
  },
@@ -2866,13 +2866,13 @@
2866
2866
  "nodeType": "FunctionCall",
2867
2867
  "src": "3594:12:16",
2868
2868
  "typeDescriptions": {
2869
- "typeIdentifier": "t_contract$_IRates_$10852",
2869
+ "typeIdentifier": "t_contract$_IRates_$11103",
2870
2870
  "typeString": "contract IRates"
2871
2871
  }
2872
2872
  },
2873
2873
  "src": "3586:20:16",
2874
2874
  "typeDescriptions": {
2875
- "typeIdentifier": "t_contract$_IRates_$10852",
2875
+ "typeIdentifier": "t_contract$_IRates_$11103",
2876
2876
  "typeString": "contract IRates"
2877
2877
  }
2878
2878
  },
@@ -3231,7 +3231,7 @@
3231
3231
  "scope": 7530,
3232
3232
  "src": "3649:89:16",
3233
3233
  "stateMutability": "nonpayable",
3234
- "superFunction": 10591,
3234
+ "superFunction": 10797,
3235
3235
  "visibility": "external"
3236
3236
  },
3237
3237
  {
@@ -3263,7 +3263,7 @@
3263
3263
  "name": "msg",
3264
3264
  "nodeType": "Identifier",
3265
3265
  "overloadedDeclarations": [],
3266
- "referencedDeclaration": 11250,
3266
+ "referencedDeclaration": 11489,
3267
3267
  "src": "3878:3:16",
3268
3268
  "typeDescriptions": {
3269
3269
  "typeIdentifier": "t_magic_message",
@@ -3322,10 +3322,10 @@
3322
3322
  "name": "require",
3323
3323
  "nodeType": "Identifier",
3324
3324
  "overloadedDeclarations": [
3325
- 11253,
3326
- 11254
3325
+ 11492,
3326
+ 11493
3327
3327
  ],
3328
- "referencedDeclaration": 11253,
3328
+ "referencedDeclaration": 11492,
3329
3329
  "src": "3870:7:16",
3330
3330
  "typeDescriptions": {
3331
3331
  "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
@@ -3375,7 +3375,7 @@
3375
3375
  "name": "msg",
3376
3376
  "nodeType": "Identifier",
3377
3377
  "overloadedDeclarations": [],
3378
- "referencedDeclaration": 11250,
3378
+ "referencedDeclaration": 11489,
3379
3379
  "src": "3943:3:16",
3380
3380
  "typeDescriptions": {
3381
3381
  "typeIdentifier": "t_magic_message",
@@ -3448,10 +3448,10 @@
3448
3448
  "name": "require",
3449
3449
  "nodeType": "Identifier",
3450
3450
  "overloadedDeclarations": [
3451
- 11253,
3452
- 11254
3451
+ 11492,
3452
+ 11493
3453
3453
  ],
3454
- "referencedDeclaration": 11253,
3454
+ "referencedDeclaration": 11492,
3455
3455
  "src": "3935:7:16",
3456
3456
  "typeDescriptions": {
3457
3457
  "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
@@ -3497,7 +3497,7 @@
3497
3497
  "name": "paused",
3498
3498
  "nodeType": "Identifier",
3499
3499
  "overloadedDeclarations": [],
3500
- "referencedDeclaration": 10904,
3500
+ "referencedDeclaration": 11143,
3501
3501
  "src": "4021:6:16",
3502
3502
  "typeDescriptions": {
3503
3503
  "typeIdentifier": "t_bool",
@@ -3542,10 +3542,10 @@
3542
3542
  "name": "require",
3543
3543
  "nodeType": "Identifier",
3544
3544
  "overloadedDeclarations": [
3545
- 11253,
3546
- 11254
3545
+ 11492,
3546
+ 11493
3547
3547
  ],
3548
- "referencedDeclaration": 11253,
3548
+ "referencedDeclaration": 11492,
3549
3549
  "src": "4013:7:16",
3550
3550
  "typeDescriptions": {
3551
3551
  "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
@@ -3604,7 +3604,7 @@
3604
3604
  "name": "msg",
3605
3605
  "nodeType": "Identifier",
3606
3606
  "overloadedDeclarations": [],
3607
- "referencedDeclaration": 11250,
3607
+ "referencedDeclaration": 11489,
3608
3608
  "src": "4178:3:16",
3609
3609
  "typeDescriptions": {
3610
3610
  "typeIdentifier": "t_magic_message",
@@ -3697,7 +3697,7 @@
3697
3697
  "name": "msg",
3698
3698
  "nodeType": "Identifier",
3699
3699
  "overloadedDeclarations": [],
3700
- "referencedDeclaration": 11250,
3700
+ "referencedDeclaration": 11489,
3701
3701
  "src": "4229:3:16",
3702
3702
  "typeDescriptions": {
3703
3703
  "typeIdentifier": "t_magic_message",
@@ -3770,7 +3770,7 @@
3770
3770
  "name": "msg",
3771
3771
  "nodeType": "Identifier",
3772
3772
  "overloadedDeclarations": [],
3773
- "referencedDeclaration": 11250,
3773
+ "referencedDeclaration": 11489,
3774
3774
  "src": "4273:3:16",
3775
3775
  "typeDescriptions": {
3776
3776
  "typeIdentifier": "t_magic_message",
@@ -4038,7 +4038,7 @@
4038
4038
  "stateVariable": false,
4039
4039
  "storageLocation": "memory",
4040
4040
  "typeDescriptions": {
4041
- "typeIdentifier": "t_struct$_token_$10500_memory_ptr",
4041
+ "typeIdentifier": "t_struct$_token_$10706_memory_ptr",
4042
4042
  "typeString": "struct IBond.token"
4043
4043
  },
4044
4044
  "typeName": {
@@ -4046,10 +4046,10 @@
4046
4046
  "id": 6985,
4047
4047
  "name": "IBond.token",
4048
4048
  "nodeType": "UserDefinedTypeName",
4049
- "referencedDeclaration": 10500,
4049
+ "referencedDeclaration": 10706,
4050
4050
  "src": "4641:11:16",
4051
4051
  "typeDescriptions": {
4052
- "typeIdentifier": "t_struct$_token_$10500_storage_ptr",
4052
+ "typeIdentifier": "t_struct$_token_$10706_storage_ptr",
4053
4053
  "typeString": "struct IBond.token"
4054
4054
  }
4055
4055
  },
@@ -4105,10 +4105,10 @@
4105
4105
  "name": "IBond",
4106
4106
  "nodeType": "Identifier",
4107
4107
  "overloadedDeclarations": [],
4108
- "referencedDeclaration": 10592,
4108
+ "referencedDeclaration": 10798,
4109
4109
  "src": "4664:5:16",
4110
4110
  "typeDescriptions": {
4111
- "typeIdentifier": "t_type$_t_contract$_IBond_$10592_$",
4111
+ "typeIdentifier": "t_type$_t_contract$_IBond_$10798_$",
4112
4112
  "typeString": "type(contract IBond)"
4113
4113
  }
4114
4114
  },
@@ -4119,10 +4119,10 @@
4119
4119
  "lValueRequested": false,
4120
4120
  "memberName": "token",
4121
4121
  "nodeType": "MemberAccess",
4122
- "referencedDeclaration": 10500,
4122
+ "referencedDeclaration": 10706,
4123
4123
  "src": "4664:11:16",
4124
4124
  "typeDescriptions": {
4125
- "typeIdentifier": "t_type$_t_struct$_token_$10500_storage_ptr_$",
4125
+ "typeIdentifier": "t_type$_t_struct$_token_$10706_storage_ptr_$",
4126
4126
  "typeString": "type(struct IBond.token storage pointer)"
4127
4127
  }
4128
4128
  },
@@ -4139,7 +4139,7 @@
4139
4139
  "nodeType": "FunctionCall",
4140
4140
  "src": "4664:103:16",
4141
4141
  "typeDescriptions": {
4142
- "typeIdentifier": "t_struct$_token_$10500_memory",
4142
+ "typeIdentifier": "t_struct$_token_$10706_memory",
4143
4143
  "typeString": "struct IBond.token memory"
4144
4144
  }
4145
4145
  },
@@ -4159,7 +4159,7 @@
4159
4159
  "referencedDeclaration": 6986,
4160
4160
  "src": "4794:1:16",
4161
4161
  "typeDescriptions": {
4162
- "typeIdentifier": "t_struct$_token_$10500_memory_ptr",
4162
+ "typeIdentifier": "t_struct$_token_$10706_memory_ptr",
4163
4163
  "typeString": "struct IBond.token memory"
4164
4164
  }
4165
4165
  }
@@ -4167,7 +4167,7 @@
4167
4167
  "expression": {
4168
4168
  "argumentTypes": [
4169
4169
  {
4170
- "typeIdentifier": "t_struct$_token_$10500_memory_ptr",
4170
+ "typeIdentifier": "t_struct$_token_$10706_memory_ptr",
4171
4171
  "typeString": "struct IBond.token memory"
4172
4172
  }
4173
4173
  ],
@@ -4180,7 +4180,7 @@
4180
4180
  "referencedDeclaration": 6804,
4181
4181
  "src": "4782:6:16",
4182
4182
  "typeDescriptions": {
4183
- "typeIdentifier": "t_array$_t_struct$_token_$10500_storage_$dyn_storage",
4183
+ "typeIdentifier": "t_array$_t_struct$_token_$10706_storage_$dyn_storage",
4184
4184
  "typeString": "struct IBond.token storage ref[] storage ref"
4185
4185
  }
4186
4186
  },
@@ -4194,7 +4194,7 @@
4194
4194
  "referencedDeclaration": null,
4195
4195
  "src": "4782:11:16",
4196
4196
  "typeDescriptions": {
4197
- "typeIdentifier": "t_function_arraypush_nonpayable$_t_struct$_token_$10500_storage_$returns$_t_uint256_$",
4197
+ "typeIdentifier": "t_function_arraypush_nonpayable$_t_struct$_token_$10706_storage_$returns$_t_uint256_$",
4198
4198
  "typeString": "function (struct IBond.token storage ref) returns (uint256)"
4199
4199
  }
4200
4200
  },
@@ -4277,7 +4277,7 @@
4277
4277
  "referencedDeclaration": 6804,
4278
4278
  "src": "4832:6:16",
4279
4279
  "typeDescriptions": {
4280
- "typeIdentifier": "t_array$_t_struct$_token_$10500_storage_$dyn_storage",
4280
+ "typeIdentifier": "t_array$_t_struct$_token_$10706_storage_$dyn_storage",
4281
4281
  "typeString": "struct IBond.token storage ref[] storage ref"
4282
4282
  }
4283
4283
  },
@@ -4406,7 +4406,7 @@
4406
4406
  "scope": 7530,
4407
4407
  "src": "4517:347:16",
4408
4408
  "stateMutability": "nonpayable",
4409
- "superFunction": 10507,
4409
+ "superFunction": 10713,
4410
4410
  "visibility": "external"
4411
4411
  },
4412
4412
  {
@@ -4624,7 +4624,7 @@
4624
4624
  "scope": 7530,
4625
4625
  "src": "5046:182:16",
4626
4626
  "stateMutability": "view",
4627
- "superFunction": 10514,
4627
+ "superFunction": 10720,
4628
4628
  "visibility": "external"
4629
4629
  },
4630
4630
  {
@@ -4643,7 +4643,7 @@
4643
4643
  "referencedDeclaration": 6804,
4644
4644
  "src": "5388:6:16",
4645
4645
  "typeDescriptions": {
4646
- "typeIdentifier": "t_array$_t_struct$_token_$10500_storage_$dyn_storage",
4646
+ "typeIdentifier": "t_array$_t_struct$_token_$10706_storage_$dyn_storage",
4647
4647
  "typeString": "struct IBond.token storage ref[] storage ref"
4648
4648
  }
4649
4649
  },
@@ -4681,7 +4681,7 @@
4681
4681
  "stateVariable": false,
4682
4682
  "storageLocation": "memory",
4683
4683
  "typeDescriptions": {
4684
- "typeIdentifier": "t_array$_t_struct$_token_$10500_memory_$dyn_memory_ptr",
4684
+ "typeIdentifier": "t_array$_t_struct$_token_$10706_memory_$dyn_memory_ptr",
4685
4685
  "typeString": "struct IBond.token[]"
4686
4686
  },
4687
4687
  "typeName": {
@@ -4690,10 +4690,10 @@
4690
4690
  "id": 7029,
4691
4691
  "name": "IBond.token",
4692
4692
  "nodeType": "UserDefinedTypeName",
4693
- "referencedDeclaration": 10500,
4693
+ "referencedDeclaration": 10706,
4694
4694
  "src": "5349:11:16",
4695
4695
  "typeDescriptions": {
4696
- "typeIdentifier": "t_struct$_token_$10500_storage_ptr",
4696
+ "typeIdentifier": "t_struct$_token_$10706_storage_ptr",
4697
4697
  "typeString": "struct IBond.token"
4698
4698
  }
4699
4699
  },
@@ -4702,7 +4702,7 @@
4702
4702
  "nodeType": "ArrayTypeName",
4703
4703
  "src": "5349:13:16",
4704
4704
  "typeDescriptions": {
4705
- "typeIdentifier": "t_array$_t_struct$_token_$10500_storage_$dyn_storage_ptr",
4705
+ "typeIdentifier": "t_array$_t_struct$_token_$10706_storage_$dyn_storage_ptr",
4706
4706
  "typeString": "struct IBond.token[]"
4707
4707
  }
4708
4708
  },
@@ -4715,7 +4715,7 @@
4715
4715
  "scope": 7530,
4716
4716
  "src": "5297:105:16",
4717
4717
  "stateMutability": "view",
4718
- "superFunction": 10520,
4718
+ "superFunction": 10726,
4719
4719
  "visibility": "external"
4720
4720
  },
4721
4721
  {
@@ -4745,7 +4745,7 @@
4745
4745
  "name": "paused",
4746
4746
  "nodeType": "Identifier",
4747
4747
  "overloadedDeclarations": [],
4748
- "referencedDeclaration": 10904,
4748
+ "referencedDeclaration": 11143,
4749
4749
  "src": "5801:6:16",
4750
4750
  "typeDescriptions": {
4751
4751
  "typeIdentifier": "t_bool",
@@ -4812,10 +4812,10 @@
4812
4812
  "name": "require",
4813
4813
  "nodeType": "Identifier",
4814
4814
  "overloadedDeclarations": [
4815
- 11253,
4816
- 11254
4815
+ 11492,
4816
+ 11493
4817
4817
  ],
4818
- "referencedDeclaration": 11254,
4818
+ "referencedDeclaration": 11493,
4819
4819
  "src": "5793:7:16",
4820
4820
  "typeDescriptions": {
4821
4821
  "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
@@ -5083,7 +5083,7 @@
5083
5083
  "name": "msg",
5084
5084
  "nodeType": "Identifier",
5085
5085
  "overloadedDeclarations": [],
5086
- "referencedDeclaration": 11250,
5086
+ "referencedDeclaration": 11489,
5087
5087
  "src": "6449:3:16",
5088
5088
  "typeDescriptions": {
5089
5089
  "typeIdentifier": "t_magic_message",
@@ -5332,7 +5332,7 @@
5332
5332
  "name": "msg",
5333
5333
  "nodeType": "Identifier",
5334
5334
  "overloadedDeclarations": [],
5335
- "referencedDeclaration": 11250,
5335
+ "referencedDeclaration": 11489,
5336
5336
  "src": "6532:3:16",
5337
5337
  "typeDescriptions": {
5338
5338
  "typeIdentifier": "t_magic_message",
@@ -5425,7 +5425,7 @@
5425
5425
  "name": "msg",
5426
5426
  "nodeType": "Identifier",
5427
5427
  "overloadedDeclarations": [],
5428
- "referencedDeclaration": 11250,
5428
+ "referencedDeclaration": 11489,
5429
5429
  "src": "6583:3:16",
5430
5430
  "typeDescriptions": {
5431
5431
  "typeIdentifier": "t_magic_message",
@@ -6016,7 +6016,7 @@
6016
6016
  "name": "msg",
6017
6017
  "nodeType": "Identifier",
6018
6018
  "overloadedDeclarations": [],
6019
- "referencedDeclaration": 11250,
6019
+ "referencedDeclaration": 11489,
6020
6020
  "src": "5979:3:16",
6021
6021
  "typeDescriptions": {
6022
6022
  "typeIdentifier": "t_magic_message",
@@ -6046,7 +6046,7 @@
6046
6046
  "name": "this",
6047
6047
  "nodeType": "Identifier",
6048
6048
  "overloadedDeclarations": [],
6049
- "referencedDeclaration": 11306,
6049
+ "referencedDeclaration": 11545,
6050
6050
  "src": "5999:4:16",
6051
6051
  "typeDescriptions": {
6052
6052
  "typeIdentifier": "t_contract$_Bond_$7530",
@@ -6192,7 +6192,7 @@
6192
6192
  "referencedDeclaration": 6804,
6193
6193
  "src": "6052:6:16",
6194
6194
  "typeDescriptions": {
6195
- "typeIdentifier": "t_array$_t_struct$_token_$10500_storage_$dyn_storage",
6195
+ "typeIdentifier": "t_array$_t_struct$_token_$10706_storage_$dyn_storage",
6196
6196
  "typeString": "struct IBond.token storage ref[] storage ref"
6197
6197
  }
6198
6198
  },
@@ -6244,7 +6244,7 @@
6244
6244
  "nodeType": "IndexAccess",
6245
6245
  "src": "6052:26:16",
6246
6246
  "typeDescriptions": {
6247
- "typeIdentifier": "t_struct$_token_$10500_storage",
6247
+ "typeIdentifier": "t_struct$_token_$10706_storage",
6248
6248
  "typeString": "struct IBond.token storage ref"
6249
6249
  }
6250
6250
  },
@@ -6255,7 +6255,7 @@
6255
6255
  "lValueRequested": false,
6256
6256
  "memberName": "tokenName",
6257
6257
  "nodeType": "MemberAccess",
6258
- "referencedDeclaration": 10497,
6258
+ "referencedDeclaration": 10703,
6259
6259
  "src": "6052:36:16",
6260
6260
  "typeDescriptions": {
6261
6261
  "typeIdentifier": "t_bytes32",
@@ -6277,7 +6277,7 @@
6277
6277
  "name": "msg",
6278
6278
  "nodeType": "Identifier",
6279
6279
  "overloadedDeclarations": [],
6280
- "referencedDeclaration": 11250,
6280
+ "referencedDeclaration": 11489,
6281
6281
  "src": "6133:3:16",
6282
6282
  "typeDescriptions": {
6283
6283
  "typeIdentifier": "t_magic_message",
@@ -6307,7 +6307,7 @@
6307
6307
  "name": "this",
6308
6308
  "nodeType": "Identifier",
6309
6309
  "overloadedDeclarations": [],
6310
- "referencedDeclaration": 11306,
6310
+ "referencedDeclaration": 11545,
6311
6311
  "src": "6153:4:16",
6312
6312
  "typeDescriptions": {
6313
6313
  "typeIdentifier": "t_contract$_Bond_$7530",
@@ -6938,7 +6938,7 @@
6938
6938
  "scope": 7530,
6939
6939
  "src": "5702:1153:16",
6940
6940
  "stateMutability": "nonpayable",
6941
- "superFunction": 10529,
6941
+ "superFunction": 10735,
6942
6942
  "visibility": "external"
6943
6943
  },
6944
6944
  {
@@ -7035,7 +7035,7 @@
7035
7035
  "name": "abi",
7036
7036
  "nodeType": "Identifier",
7037
7037
  "overloadedDeclarations": [],
7038
- "referencedDeclaration": 11237,
7038
+ "referencedDeclaration": 11476,
7039
7039
  "src": "7156:3:16",
7040
7040
  "typeDescriptions": {
7041
7041
  "typeIdentifier": "t_magic_abi",
@@ -7082,7 +7082,7 @@
7082
7082
  "name": "keccak256",
7083
7083
  "nodeType": "Identifier",
7084
7084
  "overloadedDeclarations": [],
7085
- "referencedDeclaration": 11244,
7085
+ "referencedDeclaration": 11483,
7086
7086
  "src": "7146:9:16",
7087
7087
  "typeDescriptions": {
7088
7088
  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
@@ -7194,7 +7194,7 @@
7194
7194
  "name": "abi",
7195
7195
  "nodeType": "Identifier",
7196
7196
  "overloadedDeclarations": [],
7197
- "referencedDeclaration": 11237,
7197
+ "referencedDeclaration": 11476,
7198
7198
  "src": "7236:3:16",
7199
7199
  "typeDescriptions": {
7200
7200
  "typeIdentifier": "t_magic_abi",
@@ -7241,7 +7241,7 @@
7241
7241
  "name": "keccak256",
7242
7242
  "nodeType": "Identifier",
7243
7243
  "overloadedDeclarations": [],
7244
- "referencedDeclaration": 11244,
7244
+ "referencedDeclaration": 11483,
7245
7245
  "src": "7226:9:16",
7246
7246
  "typeDescriptions": {
7247
7247
  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
@@ -7359,7 +7359,7 @@
7359
7359
  "name": "ecrecover",
7360
7360
  "nodeType": "Identifier",
7361
7361
  "overloadedDeclarations": [],
7362
- "referencedDeclaration": 11242,
7362
+ "referencedDeclaration": 11481,
7363
7363
  "src": "7321:9:16",
7364
7364
  "typeDescriptions": {
7365
7365
  "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
@@ -7413,10 +7413,10 @@
7413
7413
  "name": "require",
7414
7414
  "nodeType": "Identifier",
7415
7415
  "overloadedDeclarations": [
7416
- 11253,
7417
- 11254
7416
+ 11492,
7417
+ 11493
7418
7418
  ],
7419
- "referencedDeclaration": 11253,
7419
+ "referencedDeclaration": 11492,
7420
7420
  "src": "7313:7:16",
7421
7421
  "typeDescriptions": {
7422
7422
  "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
@@ -7508,7 +7508,7 @@
7508
7508
  "referencedDeclaration": 6759,
7509
7509
  "src": "7379:7:16",
7510
7510
  "typeDescriptions": {
7511
- "typeIdentifier": "t_contract$_IFactory_$10785",
7511
+ "typeIdentifier": "t_contract$_IFactory_$11036",
7512
7512
  "typeString": "contract IFactory"
7513
7513
  }
7514
7514
  },
@@ -7519,7 +7519,7 @@
7519
7519
  "lValueRequested": false,
7520
7520
  "memberName": "getIssuer",
7521
7521
  "nodeType": "MemberAccess",
7522
- "referencedDeclaration": 10769,
7522
+ "referencedDeclaration": 10975,
7523
7523
  "src": "7379:17:16",
7524
7524
  "typeDescriptions": {
7525
7525
  "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
@@ -7551,7 +7551,7 @@
7551
7551
  "name": "this",
7552
7552
  "nodeType": "Identifier",
7553
7553
  "overloadedDeclarations": [],
7554
- "referencedDeclaration": 11306,
7554
+ "referencedDeclaration": 11545,
7555
7555
  "src": "7427:4:16",
7556
7556
  "typeDescriptions": {
7557
7557
  "typeIdentifier": "t_contract$_Bond_$7530",
@@ -8308,7 +8308,7 @@
8308
8308
  "scope": 7530,
8309
8309
  "src": "6924:788:16",
8310
8310
  "stateMutability": "nonpayable",
8311
- "superFunction": 10548,
8311
+ "superFunction": 10754,
8312
8312
  "visibility": "external"
8313
8313
  },
8314
8314
  {
@@ -8405,7 +8405,7 @@
8405
8405
  "name": "abi",
8406
8406
  "nodeType": "Identifier",
8407
8407
  "overloadedDeclarations": [],
8408
- "referencedDeclaration": 11237,
8408
+ "referencedDeclaration": 11476,
8409
8409
  "src": "8013:3:16",
8410
8410
  "typeDescriptions": {
8411
8411
  "typeIdentifier": "t_magic_abi",
@@ -8452,7 +8452,7 @@
8452
8452
  "name": "keccak256",
8453
8453
  "nodeType": "Identifier",
8454
8454
  "overloadedDeclarations": [],
8455
- "referencedDeclaration": 11244,
8455
+ "referencedDeclaration": 11483,
8456
8456
  "src": "8003:9:16",
8457
8457
  "typeDescriptions": {
8458
8458
  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
@@ -8564,7 +8564,7 @@
8564
8564
  "name": "abi",
8565
8565
  "nodeType": "Identifier",
8566
8566
  "overloadedDeclarations": [],
8567
- "referencedDeclaration": 11237,
8567
+ "referencedDeclaration": 11476,
8568
8568
  "src": "8093:3:16",
8569
8569
  "typeDescriptions": {
8570
8570
  "typeIdentifier": "t_magic_abi",
@@ -8611,7 +8611,7 @@
8611
8611
  "name": "keccak256",
8612
8612
  "nodeType": "Identifier",
8613
8613
  "overloadedDeclarations": [],
8614
- "referencedDeclaration": 11244,
8614
+ "referencedDeclaration": 11483,
8615
8615
  "src": "8083:9:16",
8616
8616
  "typeDescriptions": {
8617
8617
  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
@@ -8729,7 +8729,7 @@
8729
8729
  "name": "ecrecover",
8730
8730
  "nodeType": "Identifier",
8731
8731
  "overloadedDeclarations": [],
8732
- "referencedDeclaration": 11242,
8732
+ "referencedDeclaration": 11481,
8733
8733
  "src": "8178:9:16",
8734
8734
  "typeDescriptions": {
8735
8735
  "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
@@ -8783,10 +8783,10 @@
8783
8783
  "name": "require",
8784
8784
  "nodeType": "Identifier",
8785
8785
  "overloadedDeclarations": [
8786
- 11253,
8787
- 11254
8786
+ 11492,
8787
+ 11493
8788
8788
  ],
8789
- "referencedDeclaration": 11253,
8789
+ "referencedDeclaration": 11492,
8790
8790
  "src": "8170:7:16",
8791
8791
  "typeDescriptions": {
8792
8792
  "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
@@ -8878,7 +8878,7 @@
8878
8878
  "referencedDeclaration": 6759,
8879
8879
  "src": "8236:7:16",
8880
8880
  "typeDescriptions": {
8881
- "typeIdentifier": "t_contract$_IFactory_$10785",
8881
+ "typeIdentifier": "t_contract$_IFactory_$11036",
8882
8882
  "typeString": "contract IFactory"
8883
8883
  }
8884
8884
  },
@@ -8889,7 +8889,7 @@
8889
8889
  "lValueRequested": false,
8890
8890
  "memberName": "getIssuer",
8891
8891
  "nodeType": "MemberAccess",
8892
- "referencedDeclaration": 10769,
8892
+ "referencedDeclaration": 10975,
8893
8893
  "src": "8236:17:16",
8894
8894
  "typeDescriptions": {
8895
8895
  "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
@@ -8921,7 +8921,7 @@
8921
8921
  "name": "this",
8922
8922
  "nodeType": "Identifier",
8923
8923
  "overloadedDeclarations": [],
8924
- "referencedDeclaration": 11306,
8924
+ "referencedDeclaration": 11545,
8925
8925
  "src": "8284:4:16",
8926
8926
  "typeDescriptions": {
8927
8927
  "typeIdentifier": "t_contract$_Bond_$7530",
@@ -10408,7 +10408,7 @@
10408
10408
  "scope": 7530,
10409
10409
  "src": "7783:1233:16",
10410
10410
  "stateMutability": "nonpayable",
10411
- "superFunction": 10567,
10411
+ "superFunction": 10773,
10412
10412
  "visibility": "external"
10413
10413
  },
10414
10414
  {
@@ -10505,7 +10505,7 @@
10505
10505
  "name": "abi",
10506
10506
  "nodeType": "Identifier",
10507
10507
  "overloadedDeclarations": [],
10508
- "referencedDeclaration": 11237,
10508
+ "referencedDeclaration": 11476,
10509
10509
  "src": "9295:3:16",
10510
10510
  "typeDescriptions": {
10511
10511
  "typeIdentifier": "t_magic_abi",
@@ -10552,7 +10552,7 @@
10552
10552
  "name": "keccak256",
10553
10553
  "nodeType": "Identifier",
10554
10554
  "overloadedDeclarations": [],
10555
- "referencedDeclaration": 11244,
10555
+ "referencedDeclaration": 11483,
10556
10556
  "src": "9285:9:16",
10557
10557
  "typeDescriptions": {
10558
10558
  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
@@ -10664,7 +10664,7 @@
10664
10664
  "name": "abi",
10665
10665
  "nodeType": "Identifier",
10666
10666
  "overloadedDeclarations": [],
10667
- "referencedDeclaration": 11237,
10667
+ "referencedDeclaration": 11476,
10668
10668
  "src": "9375:3:16",
10669
10669
  "typeDescriptions": {
10670
10670
  "typeIdentifier": "t_magic_abi",
@@ -10711,7 +10711,7 @@
10711
10711
  "name": "keccak256",
10712
10712
  "nodeType": "Identifier",
10713
10713
  "overloadedDeclarations": [],
10714
- "referencedDeclaration": 11244,
10714
+ "referencedDeclaration": 11483,
10715
10715
  "src": "9365:9:16",
10716
10716
  "typeDescriptions": {
10717
10717
  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
@@ -10829,7 +10829,7 @@
10829
10829
  "name": "ecrecover",
10830
10830
  "nodeType": "Identifier",
10831
10831
  "overloadedDeclarations": [],
10832
- "referencedDeclaration": 11242,
10832
+ "referencedDeclaration": 11481,
10833
10833
  "src": "9460:9:16",
10834
10834
  "typeDescriptions": {
10835
10835
  "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
@@ -10883,10 +10883,10 @@
10883
10883
  "name": "require",
10884
10884
  "nodeType": "Identifier",
10885
10885
  "overloadedDeclarations": [
10886
- 11253,
10887
- 11254
10886
+ 11492,
10887
+ 11493
10888
10888
  ],
10889
- "referencedDeclaration": 11253,
10889
+ "referencedDeclaration": 11492,
10890
10890
  "src": "9452:7:16",
10891
10891
  "typeDescriptions": {
10892
10892
  "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
@@ -11582,7 +11582,7 @@
11582
11582
  "scope": 7530,
11583
11583
  "src": "9064:698:16",
11584
11584
  "stateMutability": "nonpayable",
11585
- "superFunction": 10586,
11585
+ "superFunction": 10792,
11586
11586
  "visibility": "external"
11587
11587
  },
11588
11588
  {
@@ -11601,7 +11601,7 @@
11601
11601
  "name": "_pause",
11602
11602
  "nodeType": "Identifier",
11603
11603
  "overloadedDeclarations": [],
11604
- "referencedDeclaration": 10919,
11604
+ "referencedDeclaration": 11158,
11605
11605
  "src": "9819:6:16",
11606
11606
  "typeDescriptions": {
11607
11607
  "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
@@ -11689,7 +11689,7 @@
11689
11689
  "name": "_unpause",
11690
11690
  "nodeType": "Identifier",
11691
11691
  "overloadedDeclarations": [],
11692
- "referencedDeclaration": 10930,
11692
+ "referencedDeclaration": 11169,
11693
11693
  "src": "9890:8:16",
11694
11694
  "typeDescriptions": {
11695
11695
  "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
@@ -11803,7 +11803,7 @@
11803
11803
  },
11804
11804
  {
11805
11805
  "attributes": {
11806
- "SourceUnit": 10593,
11806
+ "SourceUnit": 10799,
11807
11807
  "absolutePath": "project:/contracts/interfaces/IBond.sol",
11808
11808
  "file": "./interfaces/IBond.sol",
11809
11809
  "scope": 7531,
@@ -11818,7 +11818,7 @@
11818
11818
  },
11819
11819
  {
11820
11820
  "attributes": {
11821
- "SourceUnit": 10786,
11821
+ "SourceUnit": 11037,
11822
11822
  "absolutePath": "project:/contracts/interfaces/IFactory.sol",
11823
11823
  "file": "./interfaces/IFactory.sol",
11824
11824
  "scope": 7531,
@@ -11833,7 +11833,7 @@
11833
11833
  },
11834
11834
  {
11835
11835
  "attributes": {
11836
- "SourceUnit": 10853,
11836
+ "SourceUnit": 11104,
11837
11837
  "absolutePath": "project:/contracts/interfaces/IRates.sol",
11838
11838
  "file": "./interfaces/IRates.sol",
11839
11839
  "scope": 7531,
@@ -11848,7 +11848,7 @@
11848
11848
  },
11849
11849
  {
11850
11850
  "attributes": {
11851
- "SourceUnit": 10940,
11851
+ "SourceUnit": 11179,
11852
11852
  "absolutePath": "project:/contracts/utilities/Pausable.sol",
11853
11853
  "file": "./utilities/Pausable.sol",
11854
11854
  "scope": 7531,
@@ -11863,7 +11863,7 @@
11863
11863
  },
11864
11864
  {
11865
11865
  "attributes": {
11866
- "SourceUnit": 11236,
11866
+ "SourceUnit": 11475,
11867
11867
  "absolutePath": "project:/contracts/utilities/StringUtils.sol",
11868
11868
  "file": "./utilities/StringUtils.sol",
11869
11869
  "scope": 7531,
@@ -11944,21 +11944,21 @@
11944
11944
  752,
11945
11945
  821,
11946
11946
  890,
11947
- 10592,
11948
- 10939
11947
+ 10798,
11948
+ 11178
11949
11949
  ],
11950
11950
  "contractKind": "contract",
11951
11951
  "documentation": null,
11952
11952
  "fullyImplemented": true,
11953
11953
  "linearizedBaseContracts": [
11954
11954
  7530,
11955
- 10939,
11955
+ 11178,
11956
11956
  340,
11957
11957
  752,
11958
11958
  821,
11959
11959
  29,
11960
11960
  890,
11961
- 10592
11961
+ 10798
11962
11962
  ],
11963
11963
  "name": "Bond",
11964
11964
  "scope": 7531
@@ -11973,7 +11973,7 @@
11973
11973
  "attributes": {
11974
11974
  "contractScope": null,
11975
11975
  "name": "IBond",
11976
- "referencedDeclaration": 10592,
11976
+ "referencedDeclaration": 10798,
11977
11977
  "type": "contract IBond"
11978
11978
  },
11979
11979
  "id": 6729,
@@ -12036,7 +12036,7 @@
12036
12036
  "attributes": {
12037
12037
  "contractScope": null,
12038
12038
  "name": "Pausable",
12039
- "referencedDeclaration": 10939,
12039
+ "referencedDeclaration": 11178,
12040
12040
  "type": "contract Pausable"
12041
12041
  },
12042
12042
  "id": 6735,
@@ -12057,7 +12057,7 @@
12057
12057
  "attributes": {
12058
12058
  "contractScope": null,
12059
12059
  "name": "stringutils",
12060
- "referencedDeclaration": 11235,
12060
+ "referencedDeclaration": 11474,
12061
12061
  "type": "library stringutils"
12062
12062
  },
12063
12063
  "id": 6737,
@@ -12297,7 +12297,7 @@
12297
12297
  "attributes": {
12298
12298
  "contractScope": null,
12299
12299
  "name": "IFactory",
12300
- "referencedDeclaration": 10785,
12300
+ "referencedDeclaration": 11036,
12301
12301
  "type": "contract IFactory"
12302
12302
  },
12303
12303
  "id": 6758,
@@ -12325,7 +12325,7 @@
12325
12325
  "attributes": {
12326
12326
  "contractScope": null,
12327
12327
  "name": "IRates",
12328
- "referencedDeclaration": 10852,
12328
+ "referencedDeclaration": 11103,
12329
12329
  "type": "contract IRates"
12330
12330
  },
12331
12331
  "id": 6760,
@@ -12820,7 +12820,7 @@
12820
12820
  "attributes": {
12821
12821
  "contractScope": null,
12822
12822
  "name": "IBond.token",
12823
- "referencedDeclaration": 10500,
12823
+ "referencedDeclaration": 10706,
12824
12824
  "type": "struct IBond.token"
12825
12825
  },
12826
12826
  "id": 6802,
@@ -13690,7 +13690,7 @@
13690
13690
  "overloadedDeclarations": [
13691
13691
  null
13692
13692
  ],
13693
- "referencedDeclaration": 10785,
13693
+ "referencedDeclaration": 11036,
13694
13694
  "type": "type(contract IFactory)",
13695
13695
  "value": "IFactory"
13696
13696
  },
@@ -13716,7 +13716,7 @@
13716
13716
  "overloadedDeclarations": [
13717
13717
  null
13718
13718
  ],
13719
- "referencedDeclaration": 11250,
13719
+ "referencedDeclaration": 11489,
13720
13720
  "type": "msg",
13721
13721
  "value": "msg"
13722
13722
  },
@@ -13843,7 +13843,7 @@
13843
13843
  "overloadedDeclarations": [
13844
13844
  null
13845
13845
  ],
13846
- "referencedDeclaration": 11237,
13846
+ "referencedDeclaration": 11476,
13847
13847
  "type": "abi",
13848
13848
  "value": "abi"
13849
13849
  },
@@ -13949,7 +13949,7 @@
13949
13949
  "isPure": false,
13950
13950
  "lValueRequested": false,
13951
13951
  "member_name": "substring",
13952
- "referencedDeclaration": 11086,
13952
+ "referencedDeclaration": 11325,
13953
13953
  "type": "function (bytes32,uint256,uint256) pure returns (string memory)"
13954
13954
  },
13955
13955
  "children": [
@@ -14176,7 +14176,7 @@
14176
14176
  "overloadedDeclarations": [
14177
14177
  null
14178
14178
  ],
14179
- "referencedDeclaration": 10852,
14179
+ "referencedDeclaration": 11103,
14180
14180
  "type": "type(contract IRates)",
14181
14181
  "value": "IRates"
14182
14182
  },
@@ -14283,7 +14283,7 @@
14283
14283
  "name": "setSigner",
14284
14284
  "scope": 7530,
14285
14285
  "stateMutability": "nonpayable",
14286
- "superFunction": 10591,
14286
+ "superFunction": 10797,
14287
14287
  "visibility": "external"
14288
14288
  },
14289
14289
  "children": [
@@ -14485,10 +14485,10 @@
14485
14485
  }
14486
14486
  ],
14487
14487
  "overloadedDeclarations": [
14488
- 11253,
14489
- 11254
14488
+ 11492,
14489
+ 11493
14490
14490
  ],
14491
- "referencedDeclaration": 11253,
14491
+ "referencedDeclaration": 11492,
14492
14492
  "type": "function (bool) pure",
14493
14493
  "value": "require"
14494
14494
  },
@@ -14529,7 +14529,7 @@
14529
14529
  "overloadedDeclarations": [
14530
14530
  null
14531
14531
  ],
14532
- "referencedDeclaration": 11250,
14532
+ "referencedDeclaration": 11489,
14533
14533
  "type": "msg",
14534
14534
  "value": "msg"
14535
14535
  },
@@ -14600,10 +14600,10 @@
14600
14600
  }
14601
14601
  ],
14602
14602
  "overloadedDeclarations": [
14603
- 11253,
14604
- 11254
14603
+ 11492,
14604
+ 11493
14605
14605
  ],
14606
- "referencedDeclaration": 11253,
14606
+ "referencedDeclaration": 11492,
14607
14607
  "type": "function (bool) pure",
14608
14608
  "value": "require"
14609
14609
  },
@@ -14656,7 +14656,7 @@
14656
14656
  "overloadedDeclarations": [
14657
14657
  null
14658
14658
  ],
14659
- "referencedDeclaration": 11250,
14659
+ "referencedDeclaration": 11489,
14660
14660
  "type": "msg",
14661
14661
  "value": "msg"
14662
14662
  },
@@ -14732,10 +14732,10 @@
14732
14732
  }
14733
14733
  ],
14734
14734
  "overloadedDeclarations": [
14735
- 11253,
14736
- 11254
14735
+ 11492,
14736
+ 11493
14737
14737
  ],
14738
- "referencedDeclaration": 11253,
14738
+ "referencedDeclaration": 11492,
14739
14739
  "type": "function (bool) pure",
14740
14740
  "value": "require"
14741
14741
  },
@@ -14764,7 +14764,7 @@
14764
14764
  "overloadedDeclarations": [
14765
14765
  null
14766
14766
  ],
14767
- "referencedDeclaration": 10904,
14767
+ "referencedDeclaration": 11143,
14768
14768
  "type": "bool",
14769
14769
  "value": "paused"
14770
14770
  },
@@ -14869,7 +14869,7 @@
14869
14869
  "overloadedDeclarations": [
14870
14870
  null
14871
14871
  ],
14872
- "referencedDeclaration": 11250,
14872
+ "referencedDeclaration": 11489,
14873
14873
  "type": "msg",
14874
14874
  "value": "msg"
14875
14875
  },
@@ -15016,7 +15016,7 @@
15016
15016
  "overloadedDeclarations": [
15017
15017
  null
15018
15018
  ],
15019
- "referencedDeclaration": 11250,
15019
+ "referencedDeclaration": 11489,
15020
15020
  "type": "msg",
15021
15021
  "value": "msg"
15022
15022
  },
@@ -15125,7 +15125,7 @@
15125
15125
  "overloadedDeclarations": [
15126
15126
  null
15127
15127
  ],
15128
- "referencedDeclaration": 11250,
15128
+ "referencedDeclaration": 11489,
15129
15129
  "type": "msg",
15130
15130
  "value": "msg"
15131
15131
  },
@@ -15177,7 +15177,7 @@
15177
15177
  "name": "supportTokens",
15178
15178
  "scope": 7530,
15179
15179
  "stateMutability": "nonpayable",
15180
- "superFunction": 10507,
15180
+ "superFunction": 10713,
15181
15181
  "visibility": "external"
15182
15182
  },
15183
15183
  "children": [
@@ -15388,7 +15388,7 @@
15388
15388
  "attributes": {
15389
15389
  "contractScope": null,
15390
15390
  "name": "IBond.token",
15391
- "referencedDeclaration": 10500,
15391
+ "referencedDeclaration": 10706,
15392
15392
  "type": "struct IBond.token"
15393
15393
  },
15394
15394
  "id": 6985,
@@ -15433,7 +15433,7 @@
15433
15433
  "isPure": false,
15434
15434
  "lValueRequested": false,
15435
15435
  "member_name": "token",
15436
- "referencedDeclaration": 10500,
15436
+ "referencedDeclaration": 10706,
15437
15437
  "type": "type(struct IBond.token storage pointer)"
15438
15438
  },
15439
15439
  "children": [
@@ -15443,7 +15443,7 @@
15443
15443
  "overloadedDeclarations": [
15444
15444
  null
15445
15445
  ],
15446
- "referencedDeclaration": 10592,
15446
+ "referencedDeclaration": 10798,
15447
15447
  "type": "type(contract IBond)",
15448
15448
  "value": "IBond"
15449
15449
  },
@@ -15515,7 +15515,7 @@
15515
15515
  "attributes": {
15516
15516
  "argumentTypes": [
15517
15517
  {
15518
- "typeIdentifier": "t_struct$_token_$10500_memory_ptr",
15518
+ "typeIdentifier": "t_struct$_token_$10706_memory_ptr",
15519
15519
  "typeString": "struct IBond.token memory"
15520
15520
  }
15521
15521
  ],
@@ -15700,7 +15700,7 @@
15700
15700
  "name": "checkSupportForToken",
15701
15701
  "scope": 7530,
15702
15702
  "stateMutability": "view",
15703
- "superFunction": 10514,
15703
+ "superFunction": 10720,
15704
15704
  "visibility": "external"
15705
15705
  },
15706
15706
  "children": [
@@ -15936,7 +15936,7 @@
15936
15936
  "name": "getSupportedTokens",
15937
15937
  "scope": 7530,
15938
15938
  "stateMutability": "view",
15939
- "superFunction": 10520,
15939
+ "superFunction": 10726,
15940
15940
  "visibility": "external"
15941
15941
  },
15942
15942
  "children": [
@@ -15975,7 +15975,7 @@
15975
15975
  "attributes": {
15976
15976
  "contractScope": null,
15977
15977
  "name": "IBond.token",
15978
- "referencedDeclaration": 10500,
15978
+ "referencedDeclaration": 10706,
15979
15979
  "type": "struct IBond.token"
15980
15980
  },
15981
15981
  "id": 7029,
@@ -16045,7 +16045,7 @@
16045
16045
  "name": "requestIssue",
16046
16046
  "scope": 7530,
16047
16047
  "stateMutability": "nonpayable",
16048
- "superFunction": 10529,
16048
+ "superFunction": 10735,
16049
16049
  "visibility": "external"
16050
16050
  },
16051
16051
  "children": [
@@ -16179,10 +16179,10 @@
16179
16179
  }
16180
16180
  ],
16181
16181
  "overloadedDeclarations": [
16182
- 11253,
16183
- 11254
16182
+ 11492,
16183
+ 11493
16184
16184
  ],
16185
- "referencedDeclaration": 11254,
16185
+ "referencedDeclaration": 11493,
16186
16186
  "type": "function (bool,string memory) pure",
16187
16187
  "value": "require"
16188
16188
  },
@@ -16211,7 +16211,7 @@
16211
16211
  "overloadedDeclarations": [
16212
16212
  null
16213
16213
  ],
16214
- "referencedDeclaration": 10904,
16214
+ "referencedDeclaration": 11143,
16215
16215
  "type": "bool",
16216
16216
  "value": "paused"
16217
16217
  },
@@ -16547,7 +16547,7 @@
16547
16547
  "overloadedDeclarations": [
16548
16548
  null
16549
16549
  ],
16550
- "referencedDeclaration": 11250,
16550
+ "referencedDeclaration": 11489,
16551
16551
  "type": "msg",
16552
16552
  "value": "msg"
16553
16553
  },
@@ -16600,7 +16600,7 @@
16600
16600
  "overloadedDeclarations": [
16601
16601
  null
16602
16602
  ],
16603
- "referencedDeclaration": 11306,
16603
+ "referencedDeclaration": 11545,
16604
16604
  "type": "contract Bond",
16605
16605
  "value": "this"
16606
16606
  },
@@ -16678,7 +16678,7 @@
16678
16678
  "isPure": false,
16679
16679
  "lValueRequested": false,
16680
16680
  "member_name": "tokenName",
16681
- "referencedDeclaration": 10497,
16681
+ "referencedDeclaration": 10703,
16682
16682
  "type": "bytes32"
16683
16683
  },
16684
16684
  "children": [
@@ -16885,7 +16885,7 @@
16885
16885
  "overloadedDeclarations": [
16886
16886
  null
16887
16887
  ],
16888
- "referencedDeclaration": 11250,
16888
+ "referencedDeclaration": 11489,
16889
16889
  "type": "msg",
16890
16890
  "value": "msg"
16891
16891
  },
@@ -16938,7 +16938,7 @@
16938
16938
  "overloadedDeclarations": [
16939
16939
  null
16940
16940
  ],
16941
- "referencedDeclaration": 11306,
16941
+ "referencedDeclaration": 11545,
16942
16942
  "type": "contract Bond",
16943
16943
  "value": "this"
16944
16944
  },
@@ -17507,7 +17507,7 @@
17507
17507
  "overloadedDeclarations": [
17508
17508
  null
17509
17509
  ],
17510
- "referencedDeclaration": 11250,
17510
+ "referencedDeclaration": 11489,
17511
17511
  "type": "msg",
17512
17512
  "value": "msg"
17513
17513
  },
@@ -17711,7 +17711,7 @@
17711
17711
  "overloadedDeclarations": [
17712
17712
  null
17713
17713
  ],
17714
- "referencedDeclaration": 11250,
17714
+ "referencedDeclaration": 11489,
17715
17715
  "type": "msg",
17716
17716
  "value": "msg"
17717
17717
  },
@@ -17858,7 +17858,7 @@
17858
17858
  "overloadedDeclarations": [
17859
17859
  null
17860
17860
  ],
17861
- "referencedDeclaration": 11250,
17861
+ "referencedDeclaration": 11489,
17862
17862
  "type": "msg",
17863
17863
  "value": "msg"
17864
17864
  },
@@ -18422,7 +18422,7 @@
18422
18422
  "name": "addIssuedBalance",
18423
18423
  "scope": 7530,
18424
18424
  "stateMutability": "nonpayable",
18425
- "superFunction": 10548,
18425
+ "superFunction": 10754,
18426
18426
  "visibility": "external"
18427
18427
  },
18428
18428
  "children": [
@@ -18715,7 +18715,7 @@
18715
18715
  "overloadedDeclarations": [
18716
18716
  null
18717
18717
  ],
18718
- "referencedDeclaration": 11244,
18718
+ "referencedDeclaration": 11483,
18719
18719
  "type": "function (bytes memory) pure returns (bytes32)",
18720
18720
  "value": "keccak256"
18721
18721
  },
@@ -18765,7 +18765,7 @@
18765
18765
  "overloadedDeclarations": [
18766
18766
  null
18767
18767
  ],
18768
- "referencedDeclaration": 11237,
18768
+ "referencedDeclaration": 11476,
18769
18769
  "type": "abi",
18770
18770
  "value": "abi"
18771
18771
  },
@@ -18883,7 +18883,7 @@
18883
18883
  "overloadedDeclarations": [
18884
18884
  null
18885
18885
  ],
18886
- "referencedDeclaration": 11244,
18886
+ "referencedDeclaration": 11483,
18887
18887
  "type": "function (bytes memory) pure returns (bytes32)",
18888
18888
  "value": "keccak256"
18889
18889
  },
@@ -18933,7 +18933,7 @@
18933
18933
  "overloadedDeclarations": [
18934
18934
  null
18935
18935
  ],
18936
- "referencedDeclaration": 11237,
18936
+ "referencedDeclaration": 11476,
18937
18937
  "type": "abi",
18938
18938
  "value": "abi"
18939
18939
  },
@@ -19018,10 +19018,10 @@
19018
19018
  }
19019
19019
  ],
19020
19020
  "overloadedDeclarations": [
19021
- 11253,
19022
- 11254
19021
+ 11492,
19022
+ 11493
19023
19023
  ],
19024
- "referencedDeclaration": 11253,
19024
+ "referencedDeclaration": 11492,
19025
19025
  "type": "function (bool) pure",
19026
19026
  "value": "require"
19027
19027
  },
@@ -19082,7 +19082,7 @@
19082
19082
  "overloadedDeclarations": [
19083
19083
  null
19084
19084
  ],
19085
- "referencedDeclaration": 11242,
19085
+ "referencedDeclaration": 11481,
19086
19086
  "type": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)",
19087
19087
  "value": "ecrecover"
19088
19088
  },
@@ -19232,7 +19232,7 @@
19232
19232
  "isPure": false,
19233
19233
  "lValueRequested": false,
19234
19234
  "member_name": "getIssuer",
19235
- "referencedDeclaration": 10769,
19235
+ "referencedDeclaration": 10975,
19236
19236
  "type": "function (bytes32,bytes32) view external returns (address)"
19237
19237
  },
19238
19238
  "children": [
@@ -19331,7 +19331,7 @@
19331
19331
  "overloadedDeclarations": [
19332
19332
  null
19333
19333
  ],
19334
- "referencedDeclaration": 11306,
19334
+ "referencedDeclaration": 11545,
19335
19335
  "type": "contract Bond",
19336
19336
  "value": "this"
19337
19337
  },
@@ -19885,7 +19885,7 @@
19885
19885
  "name": "purchase",
19886
19886
  "scope": 7530,
19887
19887
  "stateMutability": "nonpayable",
19888
- "superFunction": 10567,
19888
+ "superFunction": 10773,
19889
19889
  "visibility": "external"
19890
19890
  },
19891
19891
  "children": [
@@ -20178,7 +20178,7 @@
20178
20178
  "overloadedDeclarations": [
20179
20179
  null
20180
20180
  ],
20181
- "referencedDeclaration": 11244,
20181
+ "referencedDeclaration": 11483,
20182
20182
  "type": "function (bytes memory) pure returns (bytes32)",
20183
20183
  "value": "keccak256"
20184
20184
  },
@@ -20228,7 +20228,7 @@
20228
20228
  "overloadedDeclarations": [
20229
20229
  null
20230
20230
  ],
20231
- "referencedDeclaration": 11237,
20231
+ "referencedDeclaration": 11476,
20232
20232
  "type": "abi",
20233
20233
  "value": "abi"
20234
20234
  },
@@ -20346,7 +20346,7 @@
20346
20346
  "overloadedDeclarations": [
20347
20347
  null
20348
20348
  ],
20349
- "referencedDeclaration": 11244,
20349
+ "referencedDeclaration": 11483,
20350
20350
  "type": "function (bytes memory) pure returns (bytes32)",
20351
20351
  "value": "keccak256"
20352
20352
  },
@@ -20396,7 +20396,7 @@
20396
20396
  "overloadedDeclarations": [
20397
20397
  null
20398
20398
  ],
20399
- "referencedDeclaration": 11237,
20399
+ "referencedDeclaration": 11476,
20400
20400
  "type": "abi",
20401
20401
  "value": "abi"
20402
20402
  },
@@ -20481,10 +20481,10 @@
20481
20481
  }
20482
20482
  ],
20483
20483
  "overloadedDeclarations": [
20484
- 11253,
20485
- 11254
20484
+ 11492,
20485
+ 11493
20486
20486
  ],
20487
- "referencedDeclaration": 11253,
20487
+ "referencedDeclaration": 11492,
20488
20488
  "type": "function (bool) pure",
20489
20489
  "value": "require"
20490
20490
  },
@@ -20545,7 +20545,7 @@
20545
20545
  "overloadedDeclarations": [
20546
20546
  null
20547
20547
  ],
20548
- "referencedDeclaration": 11242,
20548
+ "referencedDeclaration": 11481,
20549
20549
  "type": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)",
20550
20550
  "value": "ecrecover"
20551
20551
  },
@@ -20695,7 +20695,7 @@
20695
20695
  "isPure": false,
20696
20696
  "lValueRequested": false,
20697
20697
  "member_name": "getIssuer",
20698
- "referencedDeclaration": 10769,
20698
+ "referencedDeclaration": 10975,
20699
20699
  "type": "function (bytes32,bytes32) view external returns (address)"
20700
20700
  },
20701
20701
  "children": [
@@ -20794,7 +20794,7 @@
20794
20794
  "overloadedDeclarations": [
20795
20795
  null
20796
20796
  ],
20797
- "referencedDeclaration": 11306,
20797
+ "referencedDeclaration": 11545,
20798
20798
  "type": "contract Bond",
20799
20799
  "value": "this"
20800
20800
  },
@@ -22134,7 +22134,7 @@
22134
22134
  "name": "redeemBond",
22135
22135
  "scope": 7530,
22136
22136
  "stateMutability": "nonpayable",
22137
- "superFunction": 10586,
22137
+ "superFunction": 10792,
22138
22138
  "visibility": "external"
22139
22139
  },
22140
22140
  "children": [
@@ -22427,7 +22427,7 @@
22427
22427
  "overloadedDeclarations": [
22428
22428
  null
22429
22429
  ],
22430
- "referencedDeclaration": 11244,
22430
+ "referencedDeclaration": 11483,
22431
22431
  "type": "function (bytes memory) pure returns (bytes32)",
22432
22432
  "value": "keccak256"
22433
22433
  },
@@ -22477,7 +22477,7 @@
22477
22477
  "overloadedDeclarations": [
22478
22478
  null
22479
22479
  ],
22480
- "referencedDeclaration": 11237,
22480
+ "referencedDeclaration": 11476,
22481
22481
  "type": "abi",
22482
22482
  "value": "abi"
22483
22483
  },
@@ -22595,7 +22595,7 @@
22595
22595
  "overloadedDeclarations": [
22596
22596
  null
22597
22597
  ],
22598
- "referencedDeclaration": 11244,
22598
+ "referencedDeclaration": 11483,
22599
22599
  "type": "function (bytes memory) pure returns (bytes32)",
22600
22600
  "value": "keccak256"
22601
22601
  },
@@ -22645,7 +22645,7 @@
22645
22645
  "overloadedDeclarations": [
22646
22646
  null
22647
22647
  ],
22648
- "referencedDeclaration": 11237,
22648
+ "referencedDeclaration": 11476,
22649
22649
  "type": "abi",
22650
22650
  "value": "abi"
22651
22651
  },
@@ -22730,10 +22730,10 @@
22730
22730
  }
22731
22731
  ],
22732
22732
  "overloadedDeclarations": [
22733
- 11253,
22734
- 11254
22733
+ 11492,
22734
+ 11493
22735
22735
  ],
22736
- "referencedDeclaration": 11253,
22736
+ "referencedDeclaration": 11492,
22737
22737
  "type": "function (bool) pure",
22738
22738
  "value": "require"
22739
22739
  },
@@ -22794,7 +22794,7 @@
22794
22794
  "overloadedDeclarations": [
22795
22795
  null
22796
22796
  ],
22797
- "referencedDeclaration": 11242,
22797
+ "referencedDeclaration": 11481,
22798
22798
  "type": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)",
22799
22799
  "value": "ecrecover"
22800
22800
  },
@@ -23459,7 +23459,7 @@
23459
23459
  "overloadedDeclarations": [
23460
23460
  null
23461
23461
  ],
23462
- "referencedDeclaration": 10919,
23462
+ "referencedDeclaration": 11158,
23463
23463
  "type": "function ()",
23464
23464
  "value": "_pause"
23465
23465
  },
@@ -23576,7 +23576,7 @@
23576
23576
  "overloadedDeclarations": [
23577
23577
  null
23578
23578
  ],
23579
- "referencedDeclaration": 10930,
23579
+ "referencedDeclaration": 11169,
23580
23580
  "type": "function ()",
23581
23581
  "value": "_unpause"
23582
23582
  },
@@ -23622,14 +23622,14 @@
23622
23622
  "5": {
23623
23623
  "events": {},
23624
23624
  "links": {
23625
- "stringutils": "0x2C437D88B749F304804d9E9441DA0884c96D8299"
23625
+ "stringutils": "0xB72629Bb4d031F1C755AFfA123AAA28E81EfdA9A"
23626
23626
  },
23627
- "address": "0xbfAC42b83fBB6fb34914368BD0A9654fBEc559C3",
23628
- "transactionHash": "0xa82150a19e5c939fdff1442ebde8f4f44538ba2ecddc85880aed9a1158018e36"
23627
+ "address": "0xc97E5FFE71eE3dBf90a01917b154a20F6DfF6eb9",
23628
+ "transactionHash": "0xaa80cac6887406e6b838237ce65c0ca72ec1497f49dcf3d4b9cb0529aa151613"
23629
23629
  }
23630
23630
  },
23631
23631
  "schemaVersion": "3.4.3",
23632
- "updatedAt": "2022-05-28T06:55:33.937Z",
23632
+ "updatedAt": "2022-06-16T18:57:17.243Z",
23633
23633
  "networkType": "ethereum",
23634
23634
  "devdoc": {
23635
23635
  "methods": {