diff --git a/packages/contract-artifacts/artifacts/Behaviour20200305.json b/packages/contract-artifacts/artifacts/Behaviour20200305.json new file mode 100644 index 000000000..977b0afe9 --- /dev/null +++ b/packages/contract-artifacts/artifacts/Behaviour20200305.json @@ -0,0 +1,3388 @@ +{ + "contractName": "Behaviour20200305", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "accountAddress", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "signerAddress", + "type": "address" + } + ], + "name": "Addresses", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "signatureHash", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bool", + "name": "success", + "type": "bool" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "actualCharge", + "type": "uint256" + } + ], + "name": "GSNTransactionProcessed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "linkedPublicKey", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "spendingPublicKey", + "type": "bytes" + } + ], + "name": "RegisterExtension", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRelayHub", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newRelayHub", + "type": "address" + } + ], + "name": "RelayHubChanged", + "type": "event" + }, + { + "constant": true, + "inputs": [], + "name": "BURN_PROOF", + "outputs": [ + { + "internalType": "uint24", + "name": "", + "type": "uint24" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "DIVIDEND_PROOF", + "outputs": [ + { + "internalType": "uint24", + "name": "", + "type": "uint24" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "EIP712_DOMAIN_HASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "GSNSigner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "JOIN_SPLIT_PROOF", + "outputs": [ + { + "internalType": "uint24", + "name": "", + "type": "uint24" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "MINT_PROOF", + "outputs": [ + { + "internalType": "uint24", + "name": "", + "type": "uint24" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "PRIVATE_RANGE_PROOF", + "outputs": [ + { + "internalType": "uint24", + "name": "", + "type": "uint24" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "PUBLIC_RANGE_PROOF", + "outputs": [ + { + "internalType": "uint24", + "name": "", + "type": "uint24" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "relay", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "bytes", + "name": "encodedFunction", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "transactionFee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "gasPrice", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "gasLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "approvalData", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "acceptRelayedCall", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "context", + "type": "bytes" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "accountMapping", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_registryOwner", + "type": "address" + }, + { + "internalType": "address", + "name": "_owner", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "_proofHash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "_proofData", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "_value", + "type": "uint256" + } + ], + "name": "deposit", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_registryOwner", + "type": "address" + }, + { + "internalType": "address", + "name": "_owner", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "_proofHash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "_proofData", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "_value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expiry", + "type": "uint256" + } + ], + "name": "deposit", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "epoch", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getHubAddr", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_aceAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "_trustedGSNSignerAddress", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "initialize", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "linkedTokenAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "holder", + "type": "address" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "allowed", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "expiry", + "type": "uint256" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "name": "permit", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes", + "name": "context", + "type": "bytes" + }, + { + "internalType": "bool", + "name": "success", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "actualCharge", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "preRetVal", + "type": "bytes32" + } + ], + "name": "postRelayedCall", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "bytes", + "name": "context", + "type": "bytes" + } + ], + "name": "preRelayedCall", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_registryOwner", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "_proofHash", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "_value", + "type": "uint256" + } + ], + "name": "publicApprove", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_account", + "type": "address" + }, + { + "internalType": "address", + "name": "_AZTECaddress", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_linkedPublicKey", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "_spendingPublicKey", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "_signature", + "type": "bytes" + } + ], + "name": "registerAZTECExtension", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "relayHubVersion", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "setDefaultRelayHub", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "setGSNSigner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "signatureLog", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "userToAZTECAccountMapping", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint24", + "name": "_proofId", + "type": "uint24" + }, + { + "internalType": "address", + "name": "_registryOwner", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_proofData", + "type": "bytes" + }, + { + "internalType": "address", + "name": "_spender", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_proofSignature", + "type": "bytes" + } + ], + "name": "confidentialTransferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint24", + "name": "_proofId", + "type": "uint24" + }, + { + "internalType": "address", + "name": "_registryOwner", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_proofData", + "type": "bytes" + }, + { + "internalType": "address", + "name": "_spender", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_proofSignature", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "_proofSignature2", + "type": "bytes" + } + ], + "name": "confidentialTransferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "metadata": "{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"accountAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"signerAddress\",\"type\":\"address\"}],\"name\":\"Addresses\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"signatureHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"actualCharge\",\"type\":\"uint256\"}],\"name\":\"GSNTransactionProcessed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"linkedPublicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"spendingPublicKey\",\"type\":\"bytes\"}],\"name\":\"RegisterExtension\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldRelayHub\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newRelayHub\",\"type\":\"address\"}],\"name\":\"RelayHubChanged\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"BURN_PROOF\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"DIVIDEND_PROOF\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"EIP712_DOMAIN_HASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"GSNSigner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"JOIN_SPLIT_PROOF\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MINT_PROOF\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"PRIVATE_RANGE_PROOF\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"PUBLIC_RANGE_PROOF\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"relay\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"encodedFunction\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"transactionFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"approvalData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"acceptRelayedCall\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"context\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"accountMapping\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"_proofId\",\"type\":\"uint24\"},{\"internalType\":\"address\",\"name\":\"_registryOwner\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_proofData\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_spender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_proofSignature\",\"type\":\"bytes\"}],\"name\":\"confidentialTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"_proofId\",\"type\":\"uint24\"},{\"internalType\":\"address\",\"name\":\"_registryOwner\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_proofData\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_spender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_proofSignature\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_proofSignature2\",\"type\":\"bytes\"}],\"name\":\"confidentialTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_registryOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_proofHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_proofData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_registryOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_proofHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_proofData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"epoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getHubAddr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_aceAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_trustedGSNSignerAddress\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"linkedTokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"allowed\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"permit\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"context\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"actualCharge\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"preRetVal\",\"type\":\"bytes32\"}],\"name\":\"postRelayedCall\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"context\",\"type\":\"bytes\"}],\"name\":\"preRelayedCall\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_registryOwner\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_proofHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"publicApprove\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_AZTECaddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_linkedPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_spendingPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"registerAZTECExtension\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"relayHubVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"setDefaultRelayHub\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"setGSNSigner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"signatureLog\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"userToAZTECAccountMapping\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"AZTEC * Copyright 2020 Spilsbury Holdings Ltd * Licensed under the GNU Lesser General Public Licence, Version 3.0 (the \\\"License\\\"); you may not use this file except in compliance with the License. * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. * You should have received a copy of the GNU Lesser General Public License along with this program. If not, see .*\",\"methods\":{\"acceptRelayedCall(address,address,bytes,uint256,uint256,uint256,uint256,bytes,uint256)\":{\"details\":\"Overwrite the accceptRelayedCall() method of Behaviour20200106.sol, to allow it to be used with an updated GSN signer address. Method used to ensure that only transactions with a trusted signature can be relayed through the GSN.\"},\"confidentialTransferFrom(uint24,address,bytes,address,bytes)\":{\"details\":\"Perform a confidential transfer, mediated by a smart contracrt\",\"params\":{\"_proofData\":\"- data generated from proof construction, which is used to validate the proof\",\"_proofId\":\"- uint24 proofId\",\"_proofSignature\":\"- EIP712 signature used to approve/revoke permission for the proof to be spent\",\"_registryOwner\":\"- address of the note registry owner\",\"_spender\":\"- address that will be spending the notes\"}},\"confidentialTransferFrom(uint24,address,bytes,address,bytes,bytes)\":{\"details\":\"Perform a confidential transfer, mediated by a smart contracrt\",\"params\":{\"_proofData\":\"- data generated from proof construction, which is used to validate the proof\",\"_proofId\":\"- uint24 proofId\",\"_proofSignature\":\"- EIP712 signature used to approve/revoke permission for the proof\",\"_proofSignature2\":\"- EIP712 signature with be s bit flipped for replay protection of ZkDai to be spent\",\"_registryOwner\":\"- address of the note registry owner\",\"_spender\":\"- address that will be spending the notes\"}},\"deposit(address,address,bytes32,bytes,uint256)\":{\"details\":\"Deposit ERC20 tokens into zero-knowledge notes in a transaction mediated via the GSN. Called by a user\",\"params\":{\"_owner\":\"- owner of the ERC20s being deposited\",\"_proofData\":\"- cryptographic data associated with the zero-knowledge proof\",\"_proofHash\":\"- hash of the zero-knowledge deposit proof\",\"_registryOwner\":\"- owner of the zkAsset\",\"_value\":\"- number of ERC20s being deposited\"}},\"deposit(address,address,bytes32,bytes,uint256,bytes,uint256,uint256)\":{\"details\":\"This deposit() implementation performs the standard AccountRegistry deposit functionality, but it is also specifically compatible with the DAI permit() function. The permit() function removes the need for a user to send a seperate approval() transaction beforehand in order to approve another address to spend DAI on their behalf. \",\"params\":{\"_owner\":\"- owner of the ERC20s being deposited\",\"_proofData\":\"- cryptographic data associated with the zero-knowledge proof\",\"_proofHash\":\"- hash of the zero-knowledge deposit proof\",\"_registryOwner\":\"- owner of the zkAsset\",\"_value\":\"- number of ERC20s being deposited\",\"expiry\":\"- unix timestamp up to which the permit is valid\",\"nonce\":\"- permit nonce used for signature replay protection\",\"signature\":\"- EIP712 signature supplied to permit() for granting approval\"}},\"getHubAddr()\":{\"details\":\"Returns the address of the {IRelayHub} contract for this recipient.\"},\"initialize(address,address)\":{\"details\":\"Initialize the contract and set up it's state. An initialize function rather than a constructor is used to make this compatible with the upgradeability pattern\",\"params\":{\"_aceAddress\":\"- address of the AZTEC Cryptography Engine\",\"_trustedGSNSignerAddress\":\"- address which will produce signature to approve relayed GSN calls\"}},\"permit(address,address,uint256,bool,uint256,address,bytes)\":{\"details\":\"Call linkedToken.permit(), to grant an address approval to spend linkedToken tokens on holder's behalf. Makes use of the new DAI permit() method. Permissioning is performed by signature verification. * Method exposed to give user agency over revoking/approving, setting expiry, spender etc. \",\"params\":{\"allowed\":\"- bool representing whether approval is being granted or revoked\",\"expiry\":\"- period of time for which the approval is valid\",\"holder\":\"- owner of the ERC20 tokens, which are being approved to be spent by the spender\",\"linkedTokenAddress\":\"- address of the linkedToken\",\"nonce\":\"- permit nonce used for signature replay protection\",\"signature\":\"- EIP712 signature supplied to permit() for granting approval\",\"spender\":\"- address being approved to spend \"}},\"postRelayedCall(bytes,bool,uint256,bytes32)\":{\"details\":\"See `IRelayRecipient.postRelayedCall`. * This function should not be overriden directly, use `_postRelayedCall` instead. * * Requirements: * - the caller must be the `RelayHub` contract.\"},\"preRelayedCall(bytes)\":{\"details\":\"See `IRelayRecipient.preRelayedCall`. * This function should not be overriden directly, use `_preRelayedCall` instead. * * Requirements: * - the caller must be the `RelayHub` contract.\"},\"publicApprove(address,bytes32,uint256)\":{\"details\":\"Approve a registry to spend up to a number of tokens, for a particular proof\",\"params\":{\"_proofHash\":\"- hash of the proof which is being approved to result in the spending of tokens\",\"_registryOwner\":\"- address that is being approved to spend the tokens\",\"_value\":\"- numer of tokens spending is approved up to\"}},\"registerAZTECExtension(address,address,bytes,bytes,bytes)\":{\"details\":\"Registers a linkedPublicKey to an Ethereum address, if a valid signature is provided or the sender is the ethereum address in question\",\"params\":{\"_account\":\"- address to which the linkedPublicKey is being registered\",\"_linkedPublicKey\":\"- an additional public key which the sender wishes to link to the _account\",\"_signature\":\"- an EIP712 compatible signature of the account & linkedPublicKey\",\"_spendingPublicKey\":\"- the Ethereum public key associated with the Ethereum address\"}},\"relayHubVersion()\":{\"details\":\"Returns the version string of the {IRelayHub} for which this recipient implementation was built. If {_upgradeRelayHub} is used, the new {IRelayHub} instance should be compatible with this version.\"},\"setGSNSigner()\":{\"details\":\"Set the GSN signer address for this behaviour contract\"}},\"title\":\"Behaviour20200305 implementation\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/Users/arnaudschenk/dev/AZTEC/packages/protocol/contracts/AccountRegistry/epochs/20200305/Behaviour20200305.sol\":\"Behaviour20200305\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/arnaudschenk/dev/AZTEC/packages/protocol/contracts/ACE/ACE.sol\":{\"keccak256\":\"0x3fdc38bbda962d17ba55de9253009ca6a51601e9df2f2328c208db834a0b373c\",\"urls\":[\"bzz-raw://71e1e4eabf1aa8049f6f3b6302eaa282af3e2b81bbce5ab8e73d001aa44ffcb5\",\"dweb:/ipfs/QmeH1CebW5qoHqTuYwWbLHrrmY2hpEt8FbZw2HrhGwVhs1\"]},\"/Users/arnaudschenk/dev/AZTEC/packages/protocol/contracts/ACE/noteRegistry/NoteRegistryManager.sol\":{\"keccak256\":\"0x608455b77cf8782c582d20595f277ee5934dd9840eb8bc82b8c311b556202f9b\",\"urls\":[\"bzz-raw://d1ad6e46230ee9034040186a727f078fa142e138c2e850d750d6d5b95129f3e7\",\"dweb:/ipfs/QmWbnvrr1GbWnu1yPEwX3YW3JJ5fND6L3PHW3fmos98Z4d\"]},\"/Users/arnaudschenk/dev/AZTEC/packages/protocol/contracts/ACE/noteRegistry/interfaces/NoteRegistryBehaviour.sol\":{\"keccak256\":\"0xd0be6c7b5646bc8796c32fc0dedd33f3bdc48a70ac7fec536079518230b72d88\",\"urls\":[\"bzz-raw://6706782dcbefcb8030f05974048aad1b790abb387ce84e325de5f20b5d90a1a2\",\"dweb:/ipfs/QmfJujA3bfBcAG5mQ7JhgrmDULKPbfDDREsgz2Jn9Wh9cZ\"]},\"/Users/arnaudschenk/dev/AZTEC/packages/protocol/contracts/ACE/noteRegistry/interfaces/NoteRegistryFactory.sol\":{\"keccak256\":\"0x710346a8d816330322049bcd0c93fa4b241b8f165229394d509c31ef9aa35adc\",\"urls\":[\"bzz-raw://34a6435f00de0dc9aeac99c4f71d4da6cc8d43463d18762950bb75a6aa72ee07\",\"dweb:/ipfs/QmSb3NPyN3HGRCsDMvQYqGWTqvvdZGho6yExLYKibQwWUc\"]},\"/Users/arnaudschenk/dev/AZTEC/packages/protocol/contracts/AccountRegistry/GSNRecipientTimestampSignature.sol\":{\"keccak256\":\"0x860042a36ab2dfefc63bf57228091d63256d652e0316f6d677cf693837525f09\",\"urls\":[\"bzz-raw://3bb412f125733732068d17553e26376ef731475194eb87516f246923119b46d0\",\"dweb:/ipfs/QmSioZsdTt5nDbxgWtHKiYhGqHZpu56eyjYiBG27gqdsye\"]},\"/Users/arnaudschenk/dev/AZTEC/packages/protocol/contracts/AccountRegistry/epochs/20200106/Behaviour20200106.sol\":{\"keccak256\":\"0x7dfc45211c951b1c4e7c54be969199ab3871e8dc9f3b9183bea05f3a49138aec\",\"urls\":[\"bzz-raw://a87d0454488afa24d2dc4d119ecdbb77e17de47d432bb077e620186f20249209\",\"dweb:/ipfs/QmT6h3FQ6QTwcdaAhmcBFivmubNxkLTF5eLfLAwMCmSEVA\"]},\"/Users/arnaudschenk/dev/AZTEC/packages/protocol/contracts/AccountRegistry/epochs/20200207/Behaviour20200207.sol\":{\"keccak256\":\"0x3bd0e1bb51c91e1fe735898b5c5fb3436f34ccd7f02fc3dbd32e2f590467c57a\",\"urls\":[\"bzz-raw://5baffd8f3797841b53d01eef0afffbc82f3286f30f0deb53d90eab2e8c8234b0\",\"dweb:/ipfs/QmXPqJ6fCAyrD2fppXaHssxQf2qSGVS5BM3EMY2rCbA5kw\"]},\"/Users/arnaudschenk/dev/AZTEC/packages/protocol/contracts/AccountRegistry/epochs/20200220/Behaviour20200220.sol\":{\"keccak256\":\"0x00779f01107e4f61a48a336871fd411d2fefaa8ce06fa626f2b742a2e621d195\",\"urls\":[\"bzz-raw://61482503707cd8c1551ffaf859bdcb477697d70c95b7d49a49b96fdb843a3cd2\",\"dweb:/ipfs/QmXD8PWp6tWho4xLu4UZenyXrCCFRPMnUrypJRVcJ2RkmS\"]},\"/Users/arnaudschenk/dev/AZTEC/packages/protocol/contracts/AccountRegistry/epochs/20200305/Behaviour20200305.sol\":{\"keccak256\":\"0xc02ecf028f880c17ae2bd8f783b57826c1721054562c38a2723880f28f5ec4da\",\"urls\":[\"bzz-raw://3e51e12c7f7c44a045a4c36d9003d0712798161622209d32d1e921fe5c535f21\",\"dweb:/ipfs/QmQFD8Jv4xEyrhSQFDcGVc69QwBGSVDPBWP1jCZFbmcepj\"]},\"/Users/arnaudschenk/dev/AZTEC/packages/protocol/contracts/Proxies/AdminUpgradeabilityProxy.sol\":{\"keccak256\":\"0xb5e548f105c6601ed7e943752864b5c76f4ab25b5e4be865542b638612479f73\",\"urls\":[\"bzz-raw://efc14e6cea06996131b3b4e8b48f920512796de03dea0927f05d2ff7a351bfeb\",\"dweb:/ipfs/QmWwkve1BFRzYcGA4ezXg4kf9AsFGyRqGVmk1UtBR7iUNr\"]},\"/Users/arnaudschenk/dev/AZTEC/packages/protocol/contracts/Proxies/BaseAdminUpgradeabilityProxy.sol\":{\"keccak256\":\"0xbae4c9d71649131352df80342baba6d41827fd838c9cfc82034015d483c6b22e\",\"urls\":[\"bzz-raw://15379d18ece15d6ab079e9f5cebef121a87eff67d78400aad65242f54ebac7fb\",\"dweb:/ipfs/QmbQMyZawtySrnXCg1SimeFVJDgUUPBJFEZ12rnUbebcwJ\"]},\"/Users/arnaudschenk/dev/AZTEC/packages/protocol/contracts/Proxies/BaseUpgradeabilityProxy.sol\":{\"keccak256\":\"0x589e802a4e6d5e25ca9cabafa59689cd93a040282b1365896624b3b7c056aa46\",\"urls\":[\"bzz-raw://460dc8e7d20d982194e3b47127987f7feefb0412e3753a9dfcee30793c5cc1f3\",\"dweb:/ipfs/QmfWfWJe1HTt6YT3B1zm6BwFhG69jKCLVQvvB4xeDjauiK\"]},\"/Users/arnaudschenk/dev/AZTEC/packages/protocol/contracts/Proxies/Proxy.sol\":{\"keccak256\":\"0x26604c0c793b2ba5e43fc286b08c5dc44134382070cae7c00320569e6eebb00f\",\"urls\":[\"bzz-raw://335cddd262c1946505ea8be4ea3063e10311f5bb03e02186e56b15ffdb69a07d\",\"dweb:/ipfs/QmUWUZSkZAMbgENFEaWpfdTfohRj1xBuoztbwZbr4cpq8Y\"]},\"/Users/arnaudschenk/dev/AZTEC/packages/protocol/contracts/Proxies/UpgradeabilityProxy.sol\":{\"keccak256\":\"0xcae491a455d3b9589230ec1a89995de20774348417434fbf03eae3808f6871c8\",\"urls\":[\"bzz-raw://d9477f25b47183ec275887b9f7e66f75f85f31a9a62de1efb731eaddaf380eef\",\"dweb:/ipfs/QmaRfCJGqNzWQ72ZxQXkXeTURDy8nJBzb6ujASBP8S1pKh\"]},\"/Users/arnaudschenk/dev/AZTEC/packages/protocol/contracts/interfaces/IAZTEC.sol\":{\"keccak256\":\"0x4b6c78ca2bfb273a598a733a6615e71e65d42fa8d16ca0a9a4fab67e50694f7a\",\"urls\":[\"bzz-raw://a980b158fb7a6627ba05b7e9065a6949a10db9016e18f487a6835d401a405958\",\"dweb:/ipfs/QmScpcDZHdGzfs6Meu1LR3M5qCbxNPxfEhVZs7owk7v9QU\"]},\"/Users/arnaudschenk/dev/AZTEC/packages/protocol/contracts/interfaces/IERC20Mintable.sol\":{\"keccak256\":\"0x7d7f8652b6dcb20b8be054607d7001cc37a419f11eb0ce6f70b2b78d2cd1fa24\",\"urls\":[\"bzz-raw://9ed244f29c73b2addf0d020e3dd7b078213705d31fc3cd24a21709178c88018a\",\"dweb:/ipfs/QmeeXBPAH9HeaUds2NCo3tB6GSxarYsWZKejrCeN4aJpm3\"]},\"/Users/arnaudschenk/dev/AZTEC/packages/protocol/contracts/interfaces/IERC20Permit.sol\":{\"keccak256\":\"0x716d2d602413f10f8c97d326a83f328701449e96e126af72cf9e1ff58b775557\",\"urls\":[\"bzz-raw://1f8353b74167dc12c09b69bd2fd6acf2902f330b95febe1c6ab6e4a1e4076ae8\",\"dweb:/ipfs/QmXVyzuHb2MYNuNuudqu5X6zS6W2mPdwABqxx65E9SCX9y\"]},\"/Users/arnaudschenk/dev/AZTEC/packages/protocol/contracts/interfaces/IZkAsset.sol\":{\"keccak256\":\"0x5e47e595bb978242f8b79b4a73a17e3bd11820c6390c265f5738da4ccab1fc99\",\"urls\":[\"bzz-raw://f5952f333fcc143e089c16616b7f4607ed9cbdd3f851afa9a3f7949a01a6ea56\",\"dweb:/ipfs/QmWAK5fAksUJ5fGvkkrUKyrii94PeEmRZKHogxq3UJVUrT\"]},\"/Users/arnaudschenk/dev/AZTEC/packages/protocol/contracts/interfaces/ProxyAdmin.sol\":{\"keccak256\":\"0xecaaf23385bd3d4b4a3bb1c01cb8c95ad3a2eabf0ad1e205c6b059503fab1326\",\"urls\":[\"bzz-raw://1059318da874f2e197430c9f1e16a385d0504b2cae3e2ffa20000f13daf159fe\",\"dweb:/ipfs/QmZs4R8ihhXfdqfbyUquMWRVHdkR7jNC77LXKeDSAfcYoR\"]},\"/Users/arnaudschenk/dev/AZTEC/packages/protocol/contracts/libs/LibEIP712.sol\":{\"keccak256\":\"0xa263735824ef3adee0859f96de2ff3968762ebe5003b5ef886d837c81004651f\",\"urls\":[\"bzz-raw://df693bd6da50a0ce174b3d83c4e6b9f55db4d52bc00354bbf9d6f6d37475584f\",\"dweb:/ipfs/QmZRgpG2bFX86qK1YpW8mbfYUA4DP6gCP3C862TmTd3gBe\"]},\"/Users/arnaudschenk/dev/AZTEC/packages/protocol/contracts/libs/NoteUtils.sol\":{\"keccak256\":\"0xe1f4cb0e01304169106f6114a4044eabfde25beaf4f8b2362823391a55474548\",\"urls\":[\"bzz-raw://a5a45ce057e7c30e82f2dcb3af8c9b61a5ff6e4092430c36958698b8ff5c5df1\",\"dweb:/ipfs/QmeCW5rErow3E153DBAdM5SrpS6EiF62c52iD3m6Mtk5zj\"]},\"/Users/arnaudschenk/dev/AZTEC/packages/protocol/contracts/libs/ProofUtils.sol\":{\"keccak256\":\"0xd4a54fd4d28ae3ad84b8970c2b88398661d6c379cdabaac5e2d27337acba19ff\",\"urls\":[\"bzz-raw://ce53cd8592b739ee9d50009c3c8f762cbebfdef3f27ccc6397463d3be94cf650\",\"dweb:/ipfs/QmQok9trFyJdM2iDMKC5WtmCGdCETNZhrooaDaR6CLxSqH\"]},\"/Users/arnaudschenk/dev/AZTEC/packages/protocol/contracts/libs/SafeMath8.sol\":{\"keccak256\":\"0x42879ebd1a00fcec905ce8030509827e886ef4f076debbd59da82751663eeba9\",\"urls\":[\"bzz-raw://e5d79c0c36584c0b5fb3430d91bee35625df995c2b6ea1a013b19f29a513e625\",\"dweb:/ipfs/QmWoFytXA9sJ9zSHV28ZVK8JvJok2bMJSHXHu2xABRKdcc\"]},\"/Users/arnaudschenk/dev/AZTEC/packages/protocol/contracts/libs/VersioningUtils.sol\":{\"keccak256\":\"0x4c01443b87571701902f5162901f57de7b4f08ddad8993083eb5ae9660fc7438\",\"urls\":[\"bzz-raw://e780ecdac3d971fa7e7982d76da6e5a745cc20f8122602414892085ee4d628f1\",\"dweb:/ipfs/QmeDejLSNvGL2C59TXNoHunejNFKRxbm9pzpij1Xte1eKU\"]},\"@openzeppelin/contracts-ethereum-package/contracts/GSN/Context.sol\":{\"keccak256\":\"0x3491510fa4862af1a43f6c860d9cf7392240196540cd3c0eea79d374d419c5a1\",\"urls\":[\"bzz-raw://3e51386d74eb723d3acaaddafce1dd0b4082ad4c10ddba6b9fc154aad2930d02\",\"dweb:/ipfs/QmcA8Huap1c7YjdVjx5TGasxKNMLgsa3XyLvQUaMa1nMt8\"]},\"@openzeppelin/contracts-ethereum-package/contracts/GSN/GSNRecipient.sol\":{\"keccak256\":\"0x0a588a73a5be70b4b84acd7ff4a076fe1332b66d158b4327080997ea63c18ac2\",\"urls\":[\"bzz-raw://edab637a74e0f7ff9e3f8ae174ca9333060065c946602079cf30e9f4abe97962\",\"dweb:/ipfs/QmVUf6azDNAnypzGM5msYK3FuZbZx9GQBLUD59a1HvCfrx\"]},\"@openzeppelin/contracts-ethereum-package/contracts/GSN/IRelayHub.sol\":{\"keccak256\":\"0x224fe9fb0a2437a3d0776644854caf12cb9675f48bd116af78a74e68242b1c92\",\"urls\":[\"bzz-raw://292be3a5c00fa2e21d979b6a17fb1d7a8278f531cec9d5e5343618f493002baf\",\"dweb:/ipfs/QmQRhe5YQDm3V3NJCmZTkX4yUgQKCiug9TvX9e2PyDTwKJ\"]},\"@openzeppelin/contracts-ethereum-package/contracts/GSN/IRelayRecipient.sol\":{\"keccak256\":\"0x121c7803c1ed2dda5208f37a4f920f371ac7e352c7011e537b502be9298e49ca\",\"urls\":[\"bzz-raw://a486ad48e5c683bd9a5aca52befe142aea955a765d93ab846bf419924f4688d0\",\"dweb:/ipfs/QmZYiRmLJSqMFv8yzwUPfu7KUuUJmXwF8HcWEs1UC3oRW1\"]},\"@openzeppelin/contracts-ethereum-package/contracts/cryptography/ECDSA.sol\":{\"keccak256\":\"0xc89ea7e48ba477b1781b24ae963442fff1bb2af33b6178dad679a3fa2f5ab2de\",\"urls\":[\"bzz-raw://b736ddad8143f8f1cd13c20809d4ebce5f5a8c7725081b0b703294078bd506d1\",\"dweb:/ipfs/QmdhTWCXFCuwG9JaPMjwnhkQoDj9su8R7KMPNvD5z9KeWD\"]},\"@openzeppelin/upgrades/contracts/Initializable.sol\":{\"keccak256\":\"0x9bfec92e36234ecc99b5d37230acb6cd1f99560233753162204104a4897e8721\",\"urls\":[\"bzz-raw://5cf7c208583d4d046d75bd99f5507412ab01cce9dd9f802ce9768a416d93ea2f\",\"dweb:/ipfs/QmcQS1BBMPpVEkXP3qzwSjxHNrqDek8YeR7xbVWDC9ApC7\"]},\"openzeppelin-solidity/contracts/GSN/Context.sol\":{\"keccak256\":\"0x90a3995645af7562d84b9d69363ffa5ae7217714ab61e951bf7bc450f40e4061\",\"urls\":[\"bzz-raw://216ef9d6b614db4eb46970b4e84903f2534a45572dd30a79f0041f1a5830f436\",\"dweb:/ipfs/QmNPrJ4MWKUAWzKXpUqeyKRUfosaoANZAqXgvepdrCwZAG\"]},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"openzeppelin-solidity/contracts/ownership/Ownable.sol\":{\"keccak256\":\"0x6fb9d7889769d7cc161225f9ef7a90e468ba9788b253816f8d8b6894d3472c24\",\"urls\":[\"bzz-raw://cf4c00fc3c37cc5acf0c82ec6fd97bab67d72c2567fdc0ebf023d9c09b30a08e\",\"dweb:/ipfs/Qmb7TChG6DsEDX7LooJ4vmxot19f7VXX8S1zUGPeJTWbwZ\"]},\"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xb15af804e2bc97db51e4e103f13de9fe13f87e6b835d7a88c897966c0e58506e\",\"urls\":[\"bzz-raw://1e8cff8437557fc915a3bed968fcd8f2df9809599e665ef69c2c9ce628548055\",\"dweb:/ipfs/QmP5spYP8vs2jvLF8zNrXUbqB79hMsoEvMHiLcBxerWKcm\"]},\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe5bb0f57cff3e299f360052ba50f1ea0fff046df2be070b6943e0e3c3fdad8a9\",\"urls\":[\"bzz-raw://59fd025151435da35faa8093a5c7a17de02de9d08ad27275c5cdf05050820d91\",\"dweb:/ipfs/QmQMvwEcPhoRXzbXyrdoeRtvLoifUW9Qh7Luho7bmUPRkc\"]},\"openzeppelin-solidity/contracts/utils/Address.sol\":{\"keccak256\":\"0x1a8e5072509c5ea7365eb1d48030b9be865140c8fb779968da0a459a0e174a11\",\"urls\":[\"bzz-raw://03335b7b07c7c8c8d613cfdd8ec39a0b5ec133ee510bf2fe6cc5a496767bef4b\",\"dweb:/ipfs/Qmebp4nzPja645c9yXSdJkGq96oU3am3LUnG2K3R7XxyKf\"]}},\"version\":1}", + "bytecode": "0x6301343aaa6036556301343b0f603b556301343b1c603d556301343b71603e557f454950373132446f6d61696e280000000000000000000000000000000000000060a09081527f737472696e67206e616d652c000000000000000000000000000000000000000060ad527f737472696e672076657273696f6e2c000000000000000000000000000000000060b9527f6164647265737320766572696679696e67436f6e74726163740000000000000060c8527f290000000000000000000000000000000000000000000000000000000000000060e152604260808181529120601960e2527f415a5445435f43525950544f4752415048595f454e47494e4500000000000000610102526001610122527f3100000000000000000000000000000000000000000000000000000000000000610142526101829081527fc8066e2c715ce196630b273cd256d8959d5b9fefc55e9e6d999fb0f08bb7f75f6101a2527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66101c252306101e2526101628290526102026040522060355561351a806101a76000396000f3fe608060405234801561001057600080fd5b50600436106101c35760003560e01c806383947ea0116100f9578063d0da38ab11610097578063e0b28d2211610071578063e0b28d2214610dab578063e306f77914610dd1578063e308d6ff14610dd9578063f6cf6ab314610e0b576101c3565b8063d0da38ab14610bd0578063df92462514610d27578063e06e0e2214610d2f576101c3565b8063900cf0cf116100d3578063900cf0cf146108be578063ad61ccd5146108c6578063bb2fa91b14610943578063c52b2ff314610b0a576101c3565b806383947ea0146107415780638500e1f8146108ae5780638e526d9b146108b6576101c3565b8063485cc95511610166578063733276a911610140578063733276a9146106a957806374e861d6146106b157806380274db7146106b95780638129fc1c14610739576101c3565b8063485cc9551461049a57806349518b28146104c85780635a3c6a62146104d0576101c3565b80631220e2ff116101a25780631220e2ff1461022157806318cb65e61461022b5780633d6bb32c1461037f5780633d7d0988146103c1576101c3565b80625bf732146101c857806308ae900a146101e857806309146c7c146101f0575b600080fd5b6101d0610e13565b6040805162ffffff9092168252519081900360200190f35b6101d0610e1a565b61020d6004803603602081101561020657600080fd5b5035610e21565b604080519115158252519081900360200190f35b610229610e36565b005b610229600480360360a081101561024157600080fd5b62ffffff823516916001600160a01b0360208201351691810190606081016040820135600160201b81111561027557600080fd5b82018360208201111561028757600080fd5b803590602001918460018302840111600160201b831117156102a857600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092956001600160a01b03853516959094909350604081019250602001359050600160201b81111561030b57600080fd5b82018360208201111561031d57600080fd5b803590602001918460018302840111600160201b8311171561033e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610e55945050505050565b6103a56004803603602081101561039557600080fd5b50356001600160a01b031661124a565b604080516001600160a01b039092168252519081900360200190f35b610229600480360360e08110156103d757600080fd5b6001600160a01b0382358116926020810135821692604082013592606083013515159260808101359260a08201359092169181019060e0810160c0820135600160201b81111561042657600080fd5b82018360208201111561043857600080fd5b803590602001918460018302840111600160201b8311171561045957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611265945050505050565b610229600480360360408110156104b057600080fd5b506001600160a01b038135811691602001351661131c565b6101d06113e4565b610229600480360360c08110156104e657600080fd5b62ffffff823516916001600160a01b0360208201351691810190606081016040820135600160201b81111561051a57600080fd5b82018360208201111561052c57600080fd5b803590602001918460018302840111600160201b8311171561054d57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092956001600160a01b03853516959094909350604081019250602001359050600160201b8111156105b057600080fd5b8201836020820111156105c257600080fd5b803590602001918460018302840111600160201b831117156105e357600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561063557600080fd5b82018360208201111561064757600080fd5b803590602001918460018302840111600160201b8311171561066857600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506113eb945050505050565b610229611938565b6103a5611960565b610727600480360360208110156106cf57600080fd5b810190602081018135600160201b8111156106e957600080fd5b8201836020820111156106fb57600080fd5b803590602001918460018302840111600160201b8311171561071c57600080fd5b509092509050611970565b60408051918252519081900360200190f35b610229611a11565b61082f600480360361012081101561075857600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b81111561078b57600080fd5b82018360208201111561079d57600080fd5b803590602001918460018302840111600160201b831117156107be57600080fd5b9193909282359260208101359260408201359260608301359260a081019060800135600160201b8111156107f157600080fd5b82018360208201111561080357600080fd5b803590602001918460018302840111600160201b8311171561082457600080fd5b919350915035611acb565b6040518083815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561087257818101518382015260200161085a565b50505050905090810190601f16801561089f5780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b6101d0611d47565b6101d0611d4e565b610727611d55565b6108ce611d5b565b6040805160208082528351818301528351919283929083019185019080838360005b838110156109085781810151838201526020016108f0565b50505050905090810190601f1680156109355780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610229600480360360a081101561095957600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b81111561098c57600080fd5b82018360208201111561099e57600080fd5b803590602001918460018302840111600160201b831117156109bf57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115610a1157600080fd5b820183602082011115610a2357600080fd5b803590602001918460018302840111600160201b83111715610a4457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115610a9657600080fd5b820183602082011115610aa857600080fd5b803590602001918460018302840111600160201b83111715610ac957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611d7a945050505050565b610229600480360360a0811015610b2057600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b811115610b5a57600080fd5b820183602082011115610b6c57600080fd5b803590602001918460018302840111600160201b83111715610b8d57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250612109915050565b6102296004803603610100811015610be757600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b811115610c2157600080fd5b820183602082011115610c3357600080fd5b803590602001918460018302840111600160201b83111715610c5457600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092958435959094909350604081019250602001359050600160201b811115610cae57600080fd5b820183602082011115610cc057600080fd5b803590602001918460018302840111600160201b83111715610ce157600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050823593505050602001356126d6565b6101d0612776565b61022960048036036080811015610d4557600080fd5b810190602081018135600160201b811115610d5f57600080fd5b820183602082011115610d7157600080fd5b803590602001918460018302840111600160201b83111715610d9257600080fd5b919350915080351515906020810135906040013561277d565b6108ce60048036036020811015610dc157600080fd5b50356001600160a01b031661281f565b6107276128ba565b61022960048036036060811015610def57600080fd5b506001600160a01b0381351690602081013590604001356128c0565b6103a5612939565b6201010181565b6201040381565b60396020526000908152604090205460ff1681565b610e5373d216153c06e857cd7f72665e0af1d7d82172f494612948565b565b603a5460405163a2866ea360e01b815262ffffff871660048201908152306024830181905260606044840181815288516064860152885191956001600160a01b03169463a2866ea3948c94938b93919260840190602085019080838360005b83811015610ecc578181015183820152602001610eb4565b50505050905090810190601f168015610ef95780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b158015610f1a57600080fd5b505af1158015610f2e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610f5757600080fd5b8101908080516040519392919084600160201b821115610f7657600080fd5b908301906020820185811115610f8b57600080fd5b8251600160201b811182820188101715610fa457600080fd5b82525081516020918201929091019080838360005b83811015610fd1578181015183820152602001610fb9565b50505050905090810190601f168015610ffe5780820380516001836020036101000a031916815260200191505b506040525050509050815160001461116057604051630530182d60e11b815262ffffff8716600482019081526001600160a01b03858116604484015260016064840181905260a060248501908152855160a48601528551928a1694630a60305a948c9488948b9490938b9392608482019160c40190602089019080838360005b8381101561109657818101518382015260200161107e565b50505050905090810190601f1680156110c35780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b838110156110f65781810151838201526020016110de565b50505050905090810190601f1680156111235780820380516001836020036101000a031916815260200191505b50975050505050505050600060405180830381600087803b15801561114757600080fd5b505af115801561115b573d6000803e3d6000fd5b505050505b6001600160a01b03851663cdfea90e8761118184600063ffffffff612a4816565b604080516001600160e01b031960e086901b16815262ffffff8416600482019081526024820192835283516044830152835190929160640190602085019080838360005b838110156111dd5781810151838201526020016111c5565b50505050905090810190601f16801561120a5780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b15801561122a57600080fd5b505af115801561123e573d6000803e3d6000fd5b50505050505050505050565b6038602052600090815260409020546001600160a01b031681565b6020810151604080830151604184015182516323f2ebc360e21b81526001600160a01b038b811660048301528781166024830152604482018b905260648201899052891515608483015260ff831660a483015260c4820186905260e48201849052935192939192918c1691638fcbaf0c916101048082019260009290919082900301818387803b1580156112f857600080fd5b505af115801561130c573d6000803e3d6000fd5b5050505050505050505050505050565b600054610100900460ff16806113355750611335612a9f565b80611343575060005460ff16155b61137e5760405162461bcd60e51b815260040180806020018281038252602e8152602001806133a3602e913960400191505060405180910390fd5b600054610100900460ff161580156113a9576000805460ff1961ff0019909116610100171660011790555b603a80546001600160a01b0319166001600160a01b0385161790556113cd82612aa5565b80156113df576000805461ff00191690555b505050565b6201040281565b603a5460405163a2866ea360e01b815262ffffff881660048201908152306024830181905260606044840181815289516064860152895191956001600160a01b03169463a2866ea3948d94938c93919260840190602085019080838360005b8381101561146257818101518382015260200161144a565b50505050905090810190601f16801561148f5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b1580156114b057600080fd5b505af11580156114c4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156114ed57600080fd5b8101908080516040519392919084600160201b82111561150c57600080fd5b90830190602082018581111561152157600080fd5b8251600160201b81118282018810171561153a57600080fd5b82525081516020918201929091019080838360005b8381101561156757818101518382015260200161154f565b50505050905090810190601f1680156115945780820380516001836020036101000a031916815260200191505b50604052505050905082516000146116f657604051630530182d60e11b815262ffffff8816600482019081526001600160a01b03868116604484015260016064840181905260a060248501908152855160a48601528551928b1694630a60305a948d9488948c9490938c9392608482019160c40190602089019080838360005b8381101561162c578181015183820152602001611614565b50505050905090810190601f1680156116595780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561168c578181015183820152602001611674565b50505050905090810190601f1680156116b95780820380516001836020036101000a031916815260200191505b50975050505050505050600060405180830381600087803b1580156116dd57600080fd5b505af11580156116f1573d6000803e3d6000fd5b505050505b81511561184d57604051630530182d60e11b815262ffffff8816600482019081526001600160a01b03868116604484015260016064840181905260a060248501908152855160a48601528551928b1694630a60305a948d9488948c9490938b9392608482019160c40190602089019080838360005b8381101561178357818101518382015260200161176b565b50505050905090810190601f1680156117b05780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b838110156117e35781810151838201526020016117cb565b50505050905090810190601f1680156118105780820380516001836020036101000a031916815260200191505b50975050505050505050600060405180830381600087803b15801561183457600080fd5b505af1158015611848573d6000803e3d6000fd5b505050505b6001600160a01b03861663cdfea90e8861186e84600063ffffffff612a4816565b604080516001600160e01b031960e086901b16815262ffffff8416600482019081526024820192835283516044830152835190929160640190602085019080838360005b838110156118ca5781810151838201526020016118b2565b50505050905090810190601f1680156118f75780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b15801561191757600080fd5b505af115801561192b573d6000803e3d6000fd5b5050505050505050505050565b603c80546001600160a01b031916735323b6bbd3421983323b3f4f0b11c2d6d3bce1d8179055565b6033546001600160a01b03165b90565b600061197a611960565b6001600160a01b0316336001600160a01b0316146119c95760405162461bcd60e51b81526004018080602001828103825260248152602001806134586024913960400191505060405180910390fd5b611a0883838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612bb092505050565b90505b92915050565b600054610100900460ff1680611a2a5750611a2a612a9f565b80611a38575060005460ff16155b611a735760405162461bcd60e51b815260040180806020018281038252602e8152602001806133a3602e913960400191505060405180910390fd5b600054610100900460ff16158015611a9e576000805460ff1961ff0019909116610100171660011790555b6033546001600160a01b0316611ab657611ab6610e36565b8015611ac8576000805461ff00191690555b50565b600060606000606086866040811015611ae357600080fd5b81359190810190604081016020820135600160201b811115611b0457600080fd5b820183602082011115611b1657600080fd5b803590602001918460018302840111600160201b83111715611b3757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050509150915060608f8f8f8f8f8f8f8f611b9a611960565b308c604051602001808c6001600160a01b03166001600160a01b031660601b81526014018b6001600160a01b03166001600160a01b031660601b81526014018a8a808284379190910198895250506020808801969096526040808801959095526060808801949094526bffffffffffffffffffffffff1992841b83166080880152921b16609485015260a8808501919091528151808503909101815260c8840190915260e88301828152895161010885015289519198508997509550859450610128909201925085019080838360005b83811015611c82578181015183820152602001611c6a565b50505050905090810190601f168015611caf5780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152919052603c54855160208701209198506001600160a01b03169350611cf59250859150611ce990612bb6565b9063ffffffff612c0716565b6001600160a01b03161415611d2d5782421115611d2457611d1860015b85612ceb565b94509450505050611d37565b611d1884612cf4565b611d186000611d12565b9b509b9950505050505050505050565b6201040181565b6201020181565b603e5481565b6040805180820190915260058152640312e302e360dc1b602082015290565b6000816040516020018082805190602001908083835b60208310611daf5780518252601f199092019160209182019101611d90565b51815160209384036101000a60001901801990921691161790526040805192909401828103601f190183528452815191810191909120600081815260399092529290205491945050600160ff909116151514159150611e579050576040805162461bcd60e51b815260206004820152601f60248201527f7369676e61747572652068617320616c7265616479206265656e207573656400604482015290519081900360640190fd5b6000818152603960209081526040808320805460ff1916600117905580516060810182526001600160a01b03808b16825292810188905291881690820152611ea890611ea290612cf9565b84612efd565b845160208601209091506001600160a01b03888116911614611efb5760405162461bcd60e51b81526004018080602001828103825260218152602001806134376021913960400191505060405180910390fd5b806001600160a01b0316876001600160a01b031614611f61576040805162461bcd60e51b815260206004820152601a60248201527f7369676e6572206d75737420626520746865206163636f756e74000000000000604482015290519081900360640190fd5b6001600160a01b03871660009081526037602090815260409091208651611f8a9288019061321c565b506001600160a01b0387811660008181526038602090815260409182902080546001600160a01b0319168b861617905581519283529284169282019290925281517f95a39d922be29576604d782638b30fccbff80d85c69a650415d8b560270ec9a0929181900390910190a1866001600160a01b03167f6943ea2c7fa944e0014e912e815bb331b63af36341f53622fce2f97d26a928e28686604051808060200180602001838103835285818151815260200191508051906020019080838360005b8381101561206457818101518382015260200161204c565b50505050905090810190601f1680156120915780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b838110156120c45781810151838201526020016120ac565b50505050905090810190601f1680156120f15780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a250505050505050565b603a5460405163a2866ea360e01b81526201010160048201818152306024840181905260606044850181815288516064870152885191966001600160a01b03169563a2866ea395948a9390929160840190602085019080838360005b8381101561217d578181015183820152602001612165565b50505050905090810190601f1680156121aa5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b1580156121cb57600080fd5b505af11580156121df573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561220857600080fd5b8101908080516040519392919084600160201b82111561222757600080fd5b90830190602082018581111561223c57600080fd5b8251600160201b81118282018810171561225557600080fd5b82525081516020918201929091019080838360005b8381101561228257818101518382015260200161226a565b50505050905090810190601f1680156122af5780820380516001836020036101000a031916815260200191505b5060405250505090506122c0613045565b6001600160a01b0316856001600160a01b0316146123ed576122e0613045565b6001600160a01b03868116600090815260386020526040902054811691161461233a5760405162461bcd60e51b81526004018080602001828103825260368152602001806132b56036913960400191505060405180910390fd5b606061235561235083600063ffffffff612a4816565b613070565b505091505060006123658261309a565b905060005b818110156123e957600061238c612387858463ffffffff612a4816565b6130a1565b50509050886001600160a01b0316816001600160a01b0316146123e05760405162461bcd60e51b81526004018080602001828103825260488152602001806132eb6048913960600191505060405180910390fd5b5060010161236a565b5050505b603a5460408051633e5c75df60e21b81526001600160a01b0389811660048301529151600093929092169163f971d77c9160248082019261010092909190829003018186803b15801561243f57600080fd5b505afa158015612453573d6000803e3d6000fd5b505050506040513d61010081101561246a57600080fd5b5051604080516323b872dd60e01b81526001600160a01b0389811660048301523060248301526044820187905291519293508392918316916323b872dd916064808201926020929091908290030181600087803b1580156124ca57600080fd5b505af11580156124de573d6000803e3d6000fd5b505050506040513d60208110156124f457600080fd5b5050603a546040805163095ea7b360e01b81526001600160a01b0392831660048201526024810187905290519183169163095ea7b3916044808201926020929091908290030181600087803b15801561254c57600080fd5b505af1158015612560573d6000803e3d6000fd5b505050506040513d602081101561257657600080fd5b5050603a546040805163e308d6ff60e01b81526001600160a01b038b81166004830152602482018a9052604482018890529151919092169163e308d6ff91606480830192600092919082900301818387803b1580156125d457600080fd5b505af11580156125e8573d6000803e3d6000fd5b5050506001600160a01b038916905063cdfea90e6201010161260b866000612a48565b604080516001600160e01b031960e086901b16815262ffffff8416600482019081526024820192835283516044830152835190929160640190602085019080838360005b8381101561266757818101518382015260200161264f565b50505050905090810190601f1680156126945780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b1580156126b457600080fd5b505af11580156126c8573d6000803e3d6000fd5b505050505050505050505050565b603a5460408051633e5c75df60e21b81526001600160a01b038b811660048301529151600093929092169163f971d77c9160248082019261010092909190829003018186803b15801561272857600080fd5b505afa15801561273c573d6000803e3d6000fd5b505050506040513d61010081101561275357600080fd5b50519050600130612769838b878588868c611265565b61192b8b8b8b8b8b612109565b6201030181565b612785611960565b6001600160a01b0316336001600160a01b0316146127d45760405162461bcd60e51b81526004018080602001828103825260248152602001806134586024913960400191505060405180910390fd5b61281885858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508792508691508590506130bf565b5050505050565b60376020908152600091825260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845290918301828280156128b25780601f10612887576101008083540402835291602001916128b2565b820191906000526020600020905b81548152906001019060200180831161289557829003601f168201915b505050505081565b60355481565b603a546040805163e308d6ff60e01b81526001600160a01b03868116600483015260248201869052604482018590529151919092169163e308d6ff91606480830192600092919082900301818387803b15801561291c57600080fd5b505af1158015612930573d6000803e3d6000fd5b50505050505050565b603c546001600160a01b031681565b6033546001600160a01b039081169082166129945760405162461bcd60e51b815260040180806020018281038252602e815260200180613333602e913960400191505060405180910390fd5b806001600160a01b0316826001600160a01b031614156129e55760405162461bcd60e51b815260040180806020018281038252602d8152602001806133d1602d913960400191505060405180910390fd5b816001600160a01b0316816001600160a01b03167fb9f84b8e65164b14439ae3620df0a4d8786d896996c0282b683f9d8c08f046e860405160405180910390a350603380546001600160a01b0319166001600160a01b0392909216919091179055565b602082810151908202830160400151830190821080612a985760405162461bcd60e51b81526004018080602001828103825260228152602001806134c46022913960400191505060405180910390fd5b5092915050565b303b1590565b600054610100900460ff1680612abe5750612abe612a9f565b80612acc575060005460ff16155b612b075760405162461bcd60e51b815260040180806020018281038252602e8152602001806133a3602e913960400191505060405180910390fd5b600054610100900460ff16158015612b32576000805460ff1961ff0019909116610100171660011790555b6001600160a01b038216612b775760405162461bcd60e51b81526004018080602001828103825260398152602001806133fe6039913960400191505060405180910390fd5b603480546001600160a01b0319166001600160a01b038416179055612b9a611a11565b8015612bac576000805461ff00191690555b5050565b50600090565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b60008151604114612c1a57506000611a0b565b60208201516040830151606084015160001a6fa2a8918ca85bafe22016d0b997e4df60600160ff1b03821115612c565760009350505050611a0b565b8060ff16601b14158015612c6e57508060ff16601c14155b15612c7f5760009350505050611a0b565b6040805160008152602080820180845289905260ff8416828401526060820186905260808201859052915160019260a0808401939192601f1981019281900390910190855afa158015612cd6573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b600b9190910191565b600091565b600080604051806080016040528060428152602001613361604291396040516020018082805190602001908083835b60208310612d475780518252601f199092019160209182019101612d28565b51815160001960209485036101000a0190811690199190911617905260408051601f19959093018381039590950183528481528251928201929092206e4163636f756e74526567697374727960881b8552825194859003600f018520601960f91b8652835195869003600101862086840192909252858401526060850152306080808601919091528251808603909101815260a08501808452815191909201206101208501909252604880825291965086955093509161347c915060c001396040516020018082805190602001908083835b60208310612e385780518252601f199092019160209182019101612e19565b51815160209384036101000a60001901801990921691161790526040805192909401828103601f190183528085528251928201929092208a518b8301518051908401209b860151848401929092526001600160a01b0390811684870152606084019b909b52999099166080808301919091528351808303909101815260a0820184528051908a012061190160f01b60c083015260c282019690965260e28082019690965282518082039096018652610102019091525050815191909401209392505050565b6000808251848452606084015160408501518160f81c9150604086015160608701526020860151604087015281602087015260208660808860015afa601c8314601b84141760418514166fa2a8918ca85bafe22016d0b997e4df60600160ff1b038310161693508551871460008114612f7557612f7a565b865195505b5050508352808015612f9457506001600160a01b03821615155b612a98576001600160a01b038216612ff3576040805162461bcd60e51b815260206004820152601a60248201527f7369676e657220616464726573732063616e6e6f742062652030000000000000604482015290519081900360640190fd5b80612a98576040805162461bcd60e51b815260206004820152601960248201527f7369676e6174757265207265636f76657279206661696c656400000000000000604482015290519081900360640190fd5b6033546000906001600160a01b0316331461306157503361196d565b6130696131cf565b905061196d565b60208101516040820151606083015160808401519284019491909301926001600160a01b03169190565b6020015190565b604081015160608201516001600160a01b0390911692909160800190565b60608480602001905160208110156130d657600080fd5b8101908080516040519392919084600160201b8211156130f557600080fd5b90830190602082018581111561310a57600080fd5b8251600160201b81118282018810171561312357600080fd5b82525081516020918201929091019080838360005b83811015613150578181015183820152602001613138565b50505050905090810190601f16801561317d5780820380516001836020036101000a031916815260200191505b50604052505050905083151581805190602001207f2f708c980c8415108d54566eeeb78f5c2ddf6e1fab619607c30c001b127be075856040518082815260200191505060405180910390a35050505050565b600060606000368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050503601516001600160a01b031692915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061325d57805160ff191683800117855561328a565b8280016001018555821561328a579182015b8281111561328a57825182559160200191906001019061326f565b5061329692915061329a565b5090565b61196d91905b8082111561329657600081556001016132a056fe53656e64657220686173206e6f207065726d697373696f6e20746f206465706f736974206f6e206f776e6572277320626568616c662e43616e6e6f74206465706f736974206e6f746520746f206f74686572206163636f756e742069662073656e646572206973206e6f74207468652073616d65206173206f776e65722e47534e526563697069656e743a206e65772052656c617948756220697320746865207a65726f2061646472657373454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c6164647265737320766572696679696e67436f6e747261637429436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a656447534e526563697069656e743a206e65772052656c6179487562206973207468652063757272656e74206f6e6547534e526563697069656e745369676e61747572653a2074727573746564207369676e657220697320746865207a65726f20616464726573736164647265737320646f6573206e6f74206d61746368207075626c6963206b657947534e526563697069656e743a2063616c6c6572206973206e6f742052656c6179487562415a5445434163636f756e742861646472657373206163636f756e742c6279746573206c696e6b65645075626c69634b65792c6164647265737320415a5445436164647265737329415a54454320617272617920696e646578206973206f7574206f6620626f756e6473a265627a7a72315820ac47ab09ff53a6ea145926d97109eae936e386db6ac53d8f859a2af44edbb9a064736f6c63430005110032", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101c35760003560e01c806383947ea0116100f9578063d0da38ab11610097578063e0b28d2211610071578063e0b28d2214610dab578063e306f77914610dd1578063e308d6ff14610dd9578063f6cf6ab314610e0b576101c3565b8063d0da38ab14610bd0578063df92462514610d27578063e06e0e2214610d2f576101c3565b8063900cf0cf116100d3578063900cf0cf146108be578063ad61ccd5146108c6578063bb2fa91b14610943578063c52b2ff314610b0a576101c3565b806383947ea0146107415780638500e1f8146108ae5780638e526d9b146108b6576101c3565b8063485cc95511610166578063733276a911610140578063733276a9146106a957806374e861d6146106b157806380274db7146106b95780638129fc1c14610739576101c3565b8063485cc9551461049a57806349518b28146104c85780635a3c6a62146104d0576101c3565b80631220e2ff116101a25780631220e2ff1461022157806318cb65e61461022b5780633d6bb32c1461037f5780633d7d0988146103c1576101c3565b80625bf732146101c857806308ae900a146101e857806309146c7c146101f0575b600080fd5b6101d0610e13565b6040805162ffffff9092168252519081900360200190f35b6101d0610e1a565b61020d6004803603602081101561020657600080fd5b5035610e21565b604080519115158252519081900360200190f35b610229610e36565b005b610229600480360360a081101561024157600080fd5b62ffffff823516916001600160a01b0360208201351691810190606081016040820135600160201b81111561027557600080fd5b82018360208201111561028757600080fd5b803590602001918460018302840111600160201b831117156102a857600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092956001600160a01b03853516959094909350604081019250602001359050600160201b81111561030b57600080fd5b82018360208201111561031d57600080fd5b803590602001918460018302840111600160201b8311171561033e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610e55945050505050565b6103a56004803603602081101561039557600080fd5b50356001600160a01b031661124a565b604080516001600160a01b039092168252519081900360200190f35b610229600480360360e08110156103d757600080fd5b6001600160a01b0382358116926020810135821692604082013592606083013515159260808101359260a08201359092169181019060e0810160c0820135600160201b81111561042657600080fd5b82018360208201111561043857600080fd5b803590602001918460018302840111600160201b8311171561045957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611265945050505050565b610229600480360360408110156104b057600080fd5b506001600160a01b038135811691602001351661131c565b6101d06113e4565b610229600480360360c08110156104e657600080fd5b62ffffff823516916001600160a01b0360208201351691810190606081016040820135600160201b81111561051a57600080fd5b82018360208201111561052c57600080fd5b803590602001918460018302840111600160201b8311171561054d57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092956001600160a01b03853516959094909350604081019250602001359050600160201b8111156105b057600080fd5b8201836020820111156105c257600080fd5b803590602001918460018302840111600160201b831117156105e357600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561063557600080fd5b82018360208201111561064757600080fd5b803590602001918460018302840111600160201b8311171561066857600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506113eb945050505050565b610229611938565b6103a5611960565b610727600480360360208110156106cf57600080fd5b810190602081018135600160201b8111156106e957600080fd5b8201836020820111156106fb57600080fd5b803590602001918460018302840111600160201b8311171561071c57600080fd5b509092509050611970565b60408051918252519081900360200190f35b610229611a11565b61082f600480360361012081101561075857600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b81111561078b57600080fd5b82018360208201111561079d57600080fd5b803590602001918460018302840111600160201b831117156107be57600080fd5b9193909282359260208101359260408201359260608301359260a081019060800135600160201b8111156107f157600080fd5b82018360208201111561080357600080fd5b803590602001918460018302840111600160201b8311171561082457600080fd5b919350915035611acb565b6040518083815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561087257818101518382015260200161085a565b50505050905090810190601f16801561089f5780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b6101d0611d47565b6101d0611d4e565b610727611d55565b6108ce611d5b565b6040805160208082528351818301528351919283929083019185019080838360005b838110156109085781810151838201526020016108f0565b50505050905090810190601f1680156109355780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610229600480360360a081101561095957600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b81111561098c57600080fd5b82018360208201111561099e57600080fd5b803590602001918460018302840111600160201b831117156109bf57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115610a1157600080fd5b820183602082011115610a2357600080fd5b803590602001918460018302840111600160201b83111715610a4457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115610a9657600080fd5b820183602082011115610aa857600080fd5b803590602001918460018302840111600160201b83111715610ac957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611d7a945050505050565b610229600480360360a0811015610b2057600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b811115610b5a57600080fd5b820183602082011115610b6c57600080fd5b803590602001918460018302840111600160201b83111715610b8d57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250612109915050565b6102296004803603610100811015610be757600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b811115610c2157600080fd5b820183602082011115610c3357600080fd5b803590602001918460018302840111600160201b83111715610c5457600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092958435959094909350604081019250602001359050600160201b811115610cae57600080fd5b820183602082011115610cc057600080fd5b803590602001918460018302840111600160201b83111715610ce157600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050823593505050602001356126d6565b6101d0612776565b61022960048036036080811015610d4557600080fd5b810190602081018135600160201b811115610d5f57600080fd5b820183602082011115610d7157600080fd5b803590602001918460018302840111600160201b83111715610d9257600080fd5b919350915080351515906020810135906040013561277d565b6108ce60048036036020811015610dc157600080fd5b50356001600160a01b031661281f565b6107276128ba565b61022960048036036060811015610def57600080fd5b506001600160a01b0381351690602081013590604001356128c0565b6103a5612939565b6201010181565b6201040381565b60396020526000908152604090205460ff1681565b610e5373d216153c06e857cd7f72665e0af1d7d82172f494612948565b565b603a5460405163a2866ea360e01b815262ffffff871660048201908152306024830181905260606044840181815288516064860152885191956001600160a01b03169463a2866ea3948c94938b93919260840190602085019080838360005b83811015610ecc578181015183820152602001610eb4565b50505050905090810190601f168015610ef95780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b158015610f1a57600080fd5b505af1158015610f2e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610f5757600080fd5b8101908080516040519392919084600160201b821115610f7657600080fd5b908301906020820185811115610f8b57600080fd5b8251600160201b811182820188101715610fa457600080fd5b82525081516020918201929091019080838360005b83811015610fd1578181015183820152602001610fb9565b50505050905090810190601f168015610ffe5780820380516001836020036101000a031916815260200191505b506040525050509050815160001461116057604051630530182d60e11b815262ffffff8716600482019081526001600160a01b03858116604484015260016064840181905260a060248501908152855160a48601528551928a1694630a60305a948c9488948b9490938b9392608482019160c40190602089019080838360005b8381101561109657818101518382015260200161107e565b50505050905090810190601f1680156110c35780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b838110156110f65781810151838201526020016110de565b50505050905090810190601f1680156111235780820380516001836020036101000a031916815260200191505b50975050505050505050600060405180830381600087803b15801561114757600080fd5b505af115801561115b573d6000803e3d6000fd5b505050505b6001600160a01b03851663cdfea90e8761118184600063ffffffff612a4816565b604080516001600160e01b031960e086901b16815262ffffff8416600482019081526024820192835283516044830152835190929160640190602085019080838360005b838110156111dd5781810151838201526020016111c5565b50505050905090810190601f16801561120a5780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b15801561122a57600080fd5b505af115801561123e573d6000803e3d6000fd5b50505050505050505050565b6038602052600090815260409020546001600160a01b031681565b6020810151604080830151604184015182516323f2ebc360e21b81526001600160a01b038b811660048301528781166024830152604482018b905260648201899052891515608483015260ff831660a483015260c4820186905260e48201849052935192939192918c1691638fcbaf0c916101048082019260009290919082900301818387803b1580156112f857600080fd5b505af115801561130c573d6000803e3d6000fd5b5050505050505050505050505050565b600054610100900460ff16806113355750611335612a9f565b80611343575060005460ff16155b61137e5760405162461bcd60e51b815260040180806020018281038252602e8152602001806133a3602e913960400191505060405180910390fd5b600054610100900460ff161580156113a9576000805460ff1961ff0019909116610100171660011790555b603a80546001600160a01b0319166001600160a01b0385161790556113cd82612aa5565b80156113df576000805461ff00191690555b505050565b6201040281565b603a5460405163a2866ea360e01b815262ffffff881660048201908152306024830181905260606044840181815289516064860152895191956001600160a01b03169463a2866ea3948d94938c93919260840190602085019080838360005b8381101561146257818101518382015260200161144a565b50505050905090810190601f16801561148f5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b1580156114b057600080fd5b505af11580156114c4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156114ed57600080fd5b8101908080516040519392919084600160201b82111561150c57600080fd5b90830190602082018581111561152157600080fd5b8251600160201b81118282018810171561153a57600080fd5b82525081516020918201929091019080838360005b8381101561156757818101518382015260200161154f565b50505050905090810190601f1680156115945780820380516001836020036101000a031916815260200191505b50604052505050905082516000146116f657604051630530182d60e11b815262ffffff8816600482019081526001600160a01b03868116604484015260016064840181905260a060248501908152855160a48601528551928b1694630a60305a948d9488948c9490938c9392608482019160c40190602089019080838360005b8381101561162c578181015183820152602001611614565b50505050905090810190601f1680156116595780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561168c578181015183820152602001611674565b50505050905090810190601f1680156116b95780820380516001836020036101000a031916815260200191505b50975050505050505050600060405180830381600087803b1580156116dd57600080fd5b505af11580156116f1573d6000803e3d6000fd5b505050505b81511561184d57604051630530182d60e11b815262ffffff8816600482019081526001600160a01b03868116604484015260016064840181905260a060248501908152855160a48601528551928b1694630a60305a948d9488948c9490938b9392608482019160c40190602089019080838360005b8381101561178357818101518382015260200161176b565b50505050905090810190601f1680156117b05780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b838110156117e35781810151838201526020016117cb565b50505050905090810190601f1680156118105780820380516001836020036101000a031916815260200191505b50975050505050505050600060405180830381600087803b15801561183457600080fd5b505af1158015611848573d6000803e3d6000fd5b505050505b6001600160a01b03861663cdfea90e8861186e84600063ffffffff612a4816565b604080516001600160e01b031960e086901b16815262ffffff8416600482019081526024820192835283516044830152835190929160640190602085019080838360005b838110156118ca5781810151838201526020016118b2565b50505050905090810190601f1680156118f75780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b15801561191757600080fd5b505af115801561192b573d6000803e3d6000fd5b5050505050505050505050565b603c80546001600160a01b031916735323b6bbd3421983323b3f4f0b11c2d6d3bce1d8179055565b6033546001600160a01b03165b90565b600061197a611960565b6001600160a01b0316336001600160a01b0316146119c95760405162461bcd60e51b81526004018080602001828103825260248152602001806134586024913960400191505060405180910390fd5b611a0883838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612bb092505050565b90505b92915050565b600054610100900460ff1680611a2a5750611a2a612a9f565b80611a38575060005460ff16155b611a735760405162461bcd60e51b815260040180806020018281038252602e8152602001806133a3602e913960400191505060405180910390fd5b600054610100900460ff16158015611a9e576000805460ff1961ff0019909116610100171660011790555b6033546001600160a01b0316611ab657611ab6610e36565b8015611ac8576000805461ff00191690555b50565b600060606000606086866040811015611ae357600080fd5b81359190810190604081016020820135600160201b811115611b0457600080fd5b820183602082011115611b1657600080fd5b803590602001918460018302840111600160201b83111715611b3757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050509150915060608f8f8f8f8f8f8f8f611b9a611960565b308c604051602001808c6001600160a01b03166001600160a01b031660601b81526014018b6001600160a01b03166001600160a01b031660601b81526014018a8a808284379190910198895250506020808801969096526040808801959095526060808801949094526bffffffffffffffffffffffff1992841b83166080880152921b16609485015260a8808501919091528151808503909101815260c8840190915260e88301828152895161010885015289519198508997509550859450610128909201925085019080838360005b83811015611c82578181015183820152602001611c6a565b50505050905090810190601f168015611caf5780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152919052603c54855160208701209198506001600160a01b03169350611cf59250859150611ce990612bb6565b9063ffffffff612c0716565b6001600160a01b03161415611d2d5782421115611d2457611d1860015b85612ceb565b94509450505050611d37565b611d1884612cf4565b611d186000611d12565b9b509b9950505050505050505050565b6201040181565b6201020181565b603e5481565b6040805180820190915260058152640312e302e360dc1b602082015290565b6000816040516020018082805190602001908083835b60208310611daf5780518252601f199092019160209182019101611d90565b51815160209384036101000a60001901801990921691161790526040805192909401828103601f190183528452815191810191909120600081815260399092529290205491945050600160ff909116151514159150611e579050576040805162461bcd60e51b815260206004820152601f60248201527f7369676e61747572652068617320616c7265616479206265656e207573656400604482015290519081900360640190fd5b6000818152603960209081526040808320805460ff1916600117905580516060810182526001600160a01b03808b16825292810188905291881690820152611ea890611ea290612cf9565b84612efd565b845160208601209091506001600160a01b03888116911614611efb5760405162461bcd60e51b81526004018080602001828103825260218152602001806134376021913960400191505060405180910390fd5b806001600160a01b0316876001600160a01b031614611f61576040805162461bcd60e51b815260206004820152601a60248201527f7369676e6572206d75737420626520746865206163636f756e74000000000000604482015290519081900360640190fd5b6001600160a01b03871660009081526037602090815260409091208651611f8a9288019061321c565b506001600160a01b0387811660008181526038602090815260409182902080546001600160a01b0319168b861617905581519283529284169282019290925281517f95a39d922be29576604d782638b30fccbff80d85c69a650415d8b560270ec9a0929181900390910190a1866001600160a01b03167f6943ea2c7fa944e0014e912e815bb331b63af36341f53622fce2f97d26a928e28686604051808060200180602001838103835285818151815260200191508051906020019080838360005b8381101561206457818101518382015260200161204c565b50505050905090810190601f1680156120915780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b838110156120c45781810151838201526020016120ac565b50505050905090810190601f1680156120f15780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a250505050505050565b603a5460405163a2866ea360e01b81526201010160048201818152306024840181905260606044850181815288516064870152885191966001600160a01b03169563a2866ea395948a9390929160840190602085019080838360005b8381101561217d578181015183820152602001612165565b50505050905090810190601f1680156121aa5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b1580156121cb57600080fd5b505af11580156121df573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561220857600080fd5b8101908080516040519392919084600160201b82111561222757600080fd5b90830190602082018581111561223c57600080fd5b8251600160201b81118282018810171561225557600080fd5b82525081516020918201929091019080838360005b8381101561228257818101518382015260200161226a565b50505050905090810190601f1680156122af5780820380516001836020036101000a031916815260200191505b5060405250505090506122c0613045565b6001600160a01b0316856001600160a01b0316146123ed576122e0613045565b6001600160a01b03868116600090815260386020526040902054811691161461233a5760405162461bcd60e51b81526004018080602001828103825260368152602001806132b56036913960400191505060405180910390fd5b606061235561235083600063ffffffff612a4816565b613070565b505091505060006123658261309a565b905060005b818110156123e957600061238c612387858463ffffffff612a4816565b6130a1565b50509050886001600160a01b0316816001600160a01b0316146123e05760405162461bcd60e51b81526004018080602001828103825260488152602001806132eb6048913960600191505060405180910390fd5b5060010161236a565b5050505b603a5460408051633e5c75df60e21b81526001600160a01b0389811660048301529151600093929092169163f971d77c9160248082019261010092909190829003018186803b15801561243f57600080fd5b505afa158015612453573d6000803e3d6000fd5b505050506040513d61010081101561246a57600080fd5b5051604080516323b872dd60e01b81526001600160a01b0389811660048301523060248301526044820187905291519293508392918316916323b872dd916064808201926020929091908290030181600087803b1580156124ca57600080fd5b505af11580156124de573d6000803e3d6000fd5b505050506040513d60208110156124f457600080fd5b5050603a546040805163095ea7b360e01b81526001600160a01b0392831660048201526024810187905290519183169163095ea7b3916044808201926020929091908290030181600087803b15801561254c57600080fd5b505af1158015612560573d6000803e3d6000fd5b505050506040513d602081101561257657600080fd5b5050603a546040805163e308d6ff60e01b81526001600160a01b038b81166004830152602482018a9052604482018890529151919092169163e308d6ff91606480830192600092919082900301818387803b1580156125d457600080fd5b505af11580156125e8573d6000803e3d6000fd5b5050506001600160a01b038916905063cdfea90e6201010161260b866000612a48565b604080516001600160e01b031960e086901b16815262ffffff8416600482019081526024820192835283516044830152835190929160640190602085019080838360005b8381101561266757818101518382015260200161264f565b50505050905090810190601f1680156126945780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b1580156126b457600080fd5b505af11580156126c8573d6000803e3d6000fd5b505050505050505050505050565b603a5460408051633e5c75df60e21b81526001600160a01b038b811660048301529151600093929092169163f971d77c9160248082019261010092909190829003018186803b15801561272857600080fd5b505afa15801561273c573d6000803e3d6000fd5b505050506040513d61010081101561275357600080fd5b50519050600130612769838b878588868c611265565b61192b8b8b8b8b8b612109565b6201030181565b612785611960565b6001600160a01b0316336001600160a01b0316146127d45760405162461bcd60e51b81526004018080602001828103825260248152602001806134586024913960400191505060405180910390fd5b61281885858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508792508691508590506130bf565b5050505050565b60376020908152600091825260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845290918301828280156128b25780601f10612887576101008083540402835291602001916128b2565b820191906000526020600020905b81548152906001019060200180831161289557829003601f168201915b505050505081565b60355481565b603a546040805163e308d6ff60e01b81526001600160a01b03868116600483015260248201869052604482018590529151919092169163e308d6ff91606480830192600092919082900301818387803b15801561291c57600080fd5b505af1158015612930573d6000803e3d6000fd5b50505050505050565b603c546001600160a01b031681565b6033546001600160a01b039081169082166129945760405162461bcd60e51b815260040180806020018281038252602e815260200180613333602e913960400191505060405180910390fd5b806001600160a01b0316826001600160a01b031614156129e55760405162461bcd60e51b815260040180806020018281038252602d8152602001806133d1602d913960400191505060405180910390fd5b816001600160a01b0316816001600160a01b03167fb9f84b8e65164b14439ae3620df0a4d8786d896996c0282b683f9d8c08f046e860405160405180910390a350603380546001600160a01b0319166001600160a01b0392909216919091179055565b602082810151908202830160400151830190821080612a985760405162461bcd60e51b81526004018080602001828103825260228152602001806134c46022913960400191505060405180910390fd5b5092915050565b303b1590565b600054610100900460ff1680612abe5750612abe612a9f565b80612acc575060005460ff16155b612b075760405162461bcd60e51b815260040180806020018281038252602e8152602001806133a3602e913960400191505060405180910390fd5b600054610100900460ff16158015612b32576000805460ff1961ff0019909116610100171660011790555b6001600160a01b038216612b775760405162461bcd60e51b81526004018080602001828103825260398152602001806133fe6039913960400191505060405180910390fd5b603480546001600160a01b0319166001600160a01b038416179055612b9a611a11565b8015612bac576000805461ff00191690555b5050565b50600090565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b60008151604114612c1a57506000611a0b565b60208201516040830151606084015160001a6fa2a8918ca85bafe22016d0b997e4df60600160ff1b03821115612c565760009350505050611a0b565b8060ff16601b14158015612c6e57508060ff16601c14155b15612c7f5760009350505050611a0b565b6040805160008152602080820180845289905260ff8416828401526060820186905260808201859052915160019260a0808401939192601f1981019281900390910190855afa158015612cd6573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b600b9190910191565b600091565b600080604051806080016040528060428152602001613361604291396040516020018082805190602001908083835b60208310612d475780518252601f199092019160209182019101612d28565b51815160001960209485036101000a0190811690199190911617905260408051601f19959093018381039590950183528481528251928201929092206e4163636f756e74526567697374727960881b8552825194859003600f018520601960f91b8652835195869003600101862086840192909252858401526060850152306080808601919091528251808603909101815260a08501808452815191909201206101208501909252604880825291965086955093509161347c915060c001396040516020018082805190602001908083835b60208310612e385780518252601f199092019160209182019101612e19565b51815160209384036101000a60001901801990921691161790526040805192909401828103601f190183528085528251928201929092208a518b8301518051908401209b860151848401929092526001600160a01b0390811684870152606084019b909b52999099166080808301919091528351808303909101815260a0820184528051908a012061190160f01b60c083015260c282019690965260e28082019690965282518082039096018652610102019091525050815191909401209392505050565b6000808251848452606084015160408501518160f81c9150604086015160608701526020860151604087015281602087015260208660808860015afa601c8314601b84141760418514166fa2a8918ca85bafe22016d0b997e4df60600160ff1b038310161693508551871460008114612f7557612f7a565b865195505b5050508352808015612f9457506001600160a01b03821615155b612a98576001600160a01b038216612ff3576040805162461bcd60e51b815260206004820152601a60248201527f7369676e657220616464726573732063616e6e6f742062652030000000000000604482015290519081900360640190fd5b80612a98576040805162461bcd60e51b815260206004820152601960248201527f7369676e6174757265207265636f76657279206661696c656400000000000000604482015290519081900360640190fd5b6033546000906001600160a01b0316331461306157503361196d565b6130696131cf565b905061196d565b60208101516040820151606083015160808401519284019491909301926001600160a01b03169190565b6020015190565b604081015160608201516001600160a01b0390911692909160800190565b60608480602001905160208110156130d657600080fd5b8101908080516040519392919084600160201b8211156130f557600080fd5b90830190602082018581111561310a57600080fd5b8251600160201b81118282018810171561312357600080fd5b82525081516020918201929091019080838360005b83811015613150578181015183820152602001613138565b50505050905090810190601f16801561317d5780820380516001836020036101000a031916815260200191505b50604052505050905083151581805190602001207f2f708c980c8415108d54566eeeb78f5c2ddf6e1fab619607c30c001b127be075856040518082815260200191505060405180910390a35050505050565b600060606000368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050503601516001600160a01b031692915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061325d57805160ff191683800117855561328a565b8280016001018555821561328a579182015b8281111561328a57825182559160200191906001019061326f565b5061329692915061329a565b5090565b61196d91905b8082111561329657600081556001016132a056fe53656e64657220686173206e6f207065726d697373696f6e20746f206465706f736974206f6e206f776e6572277320626568616c662e43616e6e6f74206465706f736974206e6f746520746f206f74686572206163636f756e742069662073656e646572206973206e6f74207468652073616d65206173206f776e65722e47534e526563697069656e743a206e65772052656c617948756220697320746865207a65726f2061646472657373454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c6164647265737320766572696679696e67436f6e747261637429436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a656447534e526563697069656e743a206e65772052656c6179487562206973207468652063757272656e74206f6e6547534e526563697069656e745369676e61747572653a2074727573746564207369676e657220697320746865207a65726f20616464726573736164647265737320646f6573206e6f74206d61746368207075626c6963206b657947534e526563697069656e743a2063616c6c6572206973206e6f742052656c6179487562415a5445434163636f756e742861646472657373206163636f756e742c6279746573206c696e6b65645075626c69634b65792c6164647265737320415a5445436164647265737329415a54454320617272617920696e646578206973206f7574206f6620626f756e6473a265627a7a72315820ac47ab09ff53a6ea145926d97109eae936e386db6ac53d8f859a2af44edbb9a064736f6c63430005110032", + "sourceMap": "1630:8:34:-;1607:31;;1168:8:35;1145:31;;1387:8:36;1364:31;;1075:8:37;1052:31;;1086:160:76;;;;;;;;;;;;;;;;;22:32:-1;806:1615:37;6:49:-1;;;1076:171:76;;1086:160;;1558:18;;;;1086:160;1558:18;1608:21;;;;1469:199;;;;1542:36;1469:199;;1592:39;1469:199;;1653:4;1469:199;;1608:21;6:49:-1;;;1469:199:76;806:1615:37;1469:199:76;1459:210;1438:18;:231;806:1615:37;;;;;;", + "deployedSourceMap": "806:1615:37:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;806:1615:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1006:47:61;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1665:49;;;:::i;1764:44:34:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1764:44:34;;:::i;:::-;;;;;;;;;;;;;;;;;;923:114:114;;;:::i;:::-;;6272:551:34;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;6272:551:34;;;;;-1:-1:-1;;;;;6272:551:34;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6272:551:34;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6272:551:34;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6272:551:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;6272:551:34;;-1:-1:-1;;;;;6272:551:34;;;;;;;;-1:-1:-1;6272:551:34;;;;-1:-1:-1;6272:551:34;;;;-1:-1:-1;;;;5:28;;2:2;;;46:1;43;36:12;2:2;6272:551:34;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6272:551:34;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6272:551:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;6272:551:34;;-1:-1:-1;6272:551:34;;-1:-1:-1;;;;;6272:551:34:i;1698:60::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1698:60:34;-1:-1:-1;;;;;1698:60:34;;:::i;:::-;;;;-1:-1:-1;;;;;1698:60:34;;;;;;;;;;;;;;3858:542:36;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;3858:542:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;3858:542:36;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3858:542:36;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;3858:542:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;3858:542:36;;-1:-1:-1;3858:542:36;;-1:-1:-1;;;;;3858:542:36:i;3066:220:34:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3066:220:34;;;;;;;;;;:::i;1492:50:61:-;;;:::i;1665:754:37:-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;1665:754:37;;;;;-1:-1:-1;;;;;1665:754:37;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;1665:754:37;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1665:754:37;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1665:754:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1665:754:37;;-1:-1:-1;;;;;1665:754:37;;;;;;;;-1:-1:-1;1665:754:37;;;;-1:-1:-1;1665:754:37;;;;-1:-1:-1;;;;5:28;;2:2;;;46:1;43;36:12;2:2;1665:754:37;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1665:754:37;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1665:754:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1665:754:37;;;;;;;;-1:-1:-1;1665:754:37;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;1665:754:37;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1665:754:37;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1665:754:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1665:754:37;;-1:-1:-1;1665:754:37;;-1:-1:-1;;;;;1665:754:37:i;1393:102:35:-;;;:::i;1679:85:114:-;;;:::i;5256:208::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5256:208:114;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;5256:208:114;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5256:208:114;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;5256:208:114;;-1:-1:-1;5256:208:114;-1:-1:-1;5256:208:114;:::i;:::-;;;;;;;;;;;;;;;;786:131;;;:::i;1774:1448:35:-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;1774:1448:35;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;1774:1448:35;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1774:1448:35;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1774:1448:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;1774:1448:35;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1774:1448:35;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1774:1448:35;;-1:-1:-1;1774:1448:35;-1:-1:-1;1774:1448:35;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1774:1448:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1833:45:61;;;:::i;1172:41::-;;;:::i;1052:31:37:-;;;:::i;2910:227:114:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2910:227:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4720:1073:34;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;4720:1073:34;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;4720:1073:34;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4720:1073:34;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;4720:1073:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;4720:1073:34;;;;;;;;-1:-1:-1;4720:1073:34;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;4720:1073:34;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4720:1073:34;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;4720:1073:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;4720:1073:34;;;;;;;;-1:-1:-1;4720:1073:34;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;4720:1073:34;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4720:1073:34;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;4720:1073:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;4720:1073:34;;-1:-1:-1;4720:1073:34;;-1:-1:-1;;;;;4720:1073:34:i;7276:1528::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;7276:1528:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;7276:1528:34;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7276:1528:34;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;7276:1528:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;7276:1528:34;;-1:-1:-1;;7276:1528:34;;;-1:-1:-1;7276:1528:34;;-1:-1:-1;;7276:1528:34:i;2334:640:36:-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;2334:640:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;2334:640:36;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2334:640:36;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2334:640:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;2334:640:36;;;;;;;;;-1:-1:-1;2334:640:36;;;;-1:-1:-1;2334:640:36;;;;-1:-1:-1;;;;5:28;;2:2;;;46:1;43;36:12;2:2;2334:640:36;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2334:640:36;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2334:640:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;2334:640:36;;-1:-1:-1;;2334:640:36;;;-1:-1:-1;;;2334:640:36;;;;:::i;1332:41:61:-;;;:::i;6093:274:114:-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;6093:274:114;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6093:274:114;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6093:274:114;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6093:274:114;;-1:-1:-1;6093:274:114;-1:-1:-1;6093:274:114;;;;;;;;;;;;;;:::i;1645:47:34:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1645:47:34;-1:-1:-1;;;;;1645:47:34;;:::i;1354:33:76:-;;;:::i;9163:160:34:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;9163:160:34;;;;;;;;;;;;;:::i;1281:24:35:-;;;:::i;1006:47:61:-;1048:5;1006:47;:::o;1665:49::-;1709:5;1665:49;:::o;1764:44:34:-;;;;;;;;;;;;;;;:::o;923:114:114:-;970:60;987:42;970:16;:60::i;:::-;923:114::o;6272:551:34:-;6511:3;;:54;;-1:-1:-1;;;6511:54:34;;;;;;;;;;;6547:4;6511:54;;;;;;6483:25;6511:54;;;;;;;;;;;;;;6483:25;;-1:-1:-1;;;;;6511:3:34;;:17;;6529:8;;6547:4;6554:10;;6511:54;;;;;;;;;;;;:3;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;6511:54:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6511:54:34;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6511:54:34;;;;;;39:16:-1;36:1;17:17;2:54;101:4;6511:54:34;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;6511:54:34;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;6511:54:34;;420:4:-1;411:14;;;;6511:54:34;;;;;411:14:-1;6511:54:34;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;6511:54:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6483:82;;6579:15;:22;6605:1;6579:27;6576:151;;6622:94;;-1:-1:-1;;;6622:94:34;;;;;;;;;;;-1:-1:-1;;;;;6622:94:34;;;;;;;6694:4;6622:94;;;;;;;;;;;;;;;;;;;;;:37;;;;;;6660:8;;6670:12;;6684:8;;6694:4;;6700:15;;6622:94;;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;6622:94:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6622:94:34;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;6622:94:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6622:94:34;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6622:94:34;;;;6576:151;-1:-1:-1;;;;;6736:49:34;;;6786:8;6796:19;:12;6813:1;6796:19;:16;:19;:::i;:::-;6736:80;;;-1:-1:-1;;;;;;6736:80:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;6736:80:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6736:80:34;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6736:80:34;;;;6272:551;;;;;;:::o;1698:60::-;;;;;;;;;;;;-1:-1:-1;;;;;1698:60:34;;:::o;3858:542:36:-;4188:4;4173:20;;4167:27;4233:4;4218:20;;;4212:27;4278:4;4263:20;;4257:27;4304:89;;-1:-1:-1;;;4304:89:36;;-1:-1:-1;;;;;4304:89:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4212:27;;4257;;4304:39;;;;;;:89;;;;;4083:9;;4304:89;;;;;;;;4083:9;4304:39;:89;;;5:2:-1;;;;30:1;27;20:12;5:2;4304:89:36;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4304:89:36;;;;3858:542;;;;;;;;;;:::o;3066:220:34:-;1024:12:118;;;;;;;;:31;;;1040:15;:13;:15::i;:::-;1024:47;;;-1:-1:-1;1060:11:118;;;;1059:12;1024:47;1016:106;;;;-1:-1:-1;;;1016:106:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1129:19;1152:12;;;;;;1151:13;1170:80;;;;1198:12;:19;;-1:-1:-1;;;;1198:19:118;;;;;1225:18;1213:4;1225:18;;;1170:80;3170:3:34;:32;;-1:-1:-1;;;;;;3170:32:34;-1:-1:-1;;;;;3170:32:34;;;;;3212:67;3254:24;3212:41;:67::i;:::-;1268:14:118;1264:55;;;1307:5;1292:20;;-1:-1:-1;;1292:20:118;;;1264:55;3066:220:34;;;:::o;1492:50:61:-;1537:5;1492:50;:::o;1665:754:37:-;1944:3;;:54;;-1:-1:-1;;;1944:54:37;;;;;;;;;;;1980:4;1944:54;;;;;;1916:25;1944:54;;;;;;;;;;;;;;1916:25;;-1:-1:-1;;;;;1944:3:37;;:17;;1962:8;;1980:4;1987:10;;1944:54;;;;;;;;;;;;:3;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1944:54:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1944:54:37;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1944:54:37;;;;;;39:16:-1;36:1;17:17;2:54;101:4;1944:54:37;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;1944:54:37;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;1944:54:37;;420:4:-1;411:14;;;;1944:54:37;;;;;411:14:-1;1944:54:37;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1944:54:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1916:82;;2012:15;:22;2038:1;2012:27;2009:151;;2055:94;;-1:-1:-1;;;2055:94:37;;;;;;;;;;;-1:-1:-1;;;;;2055:94:37;;;;;;;2127:4;2055:94;;;;;;;;;;;;;;;;;;;;;:37;;;;;;2093:8;;2103:12;;2117:8;;2127:4;;2133:15;;2055:94;;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2055:94:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2055:94:37;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2055:94:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2055:94:37;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2055:94:37;;;;2009:151;2172:23;;:28;2169:153;;2216:95;;-1:-1:-1;;;2216:95:37;;;;;;;;;;;-1:-1:-1;;;;;2216:95:37;;;;;;;2288:4;2216:95;;;;;;;;;;;;;;;;;;;;;:37;;;;;;2254:8;;2264:12;;2278:8;;2288:4;;2294:16;;2216:95;;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2216:95:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2216:95:37;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2216:95:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2216:95:37;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2216:95:37;;;;2169:153;-1:-1:-1;;;;;2332:49:37;;;2382:8;2392:19;:12;2409:1;2392:19;:16;:19;:::i;:::-;2332:80;;;-1:-1:-1;;;;;;2332:80:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2332:80:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2332:80:37;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2332:80:37;;;;1665:754;;;;;;;:::o;1393:102:35:-;1434:9;:54;;-1:-1:-1;;;;;;1434:54:35;1446:42;1434:54;;;1393:102::o;1679:85:114:-;1748:9;;-1:-1:-1;;;;;1748:9:114;1679:85;;:::o;5256:208::-;5322:7;5363:12;:10;:12::i;:::-;-1:-1:-1;;;;;5349:26:114;:10;-1:-1:-1;;;;;5349:26:114;;5341:75;;;;-1:-1:-1;;;5341:75:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5433:24;5449:7;;5433:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;5433:15:114;;-1:-1:-1;;;5433:24:114:i;:::-;5426:31;;5256:208;;;;;:::o;786:131::-;1024:12:118;;;;;;;;:31;;;1040:15;:13;:15::i;:::-;1024:47;;;-1:-1:-1;1060:11:118;;;;1059:12;1024:47;1016:106;;;;-1:-1:-1;;;1016:106:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1129:19;1152:12;;;;;;1151:13;1170:80;;;;1198:12;:19;;-1:-1:-1;;;;1198:19:118;;;;;1225:18;1213:4;1225:18;;;1170:80;841:9:114;;-1:-1:-1;;;;;841:9:114;837:74;;880:20;:18;:20::i;:::-;1268:14:118;1264:55;;;1307:5;1292:20;;-1:-1:-1;;1292:20:118;;;1264:55;786:131:114;:::o;1774:1448:35:-;2100:7;2109:20;2159;2193:22;2239:12;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2228:42:35;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;2228:42:35;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2228:42:35;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2228:42:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;2228:42:35;;;;;;;;;;;;;;2145:125;;;;2281:17;2331:5;2350:4;2368:15;;2397:14;2425:8;2447;2469:5;2520:12;:10;:12::i;:::-;2596:4;2658:12;2301:426;;;;;;-1:-1:-1;;;;;2301:426:35;-1:-1:-1;;;;;2301:426:35;;;;;;;;-1:-1:-1;;;;;2301:426:35;-1:-1:-1;;;;;2301:426:35;;;;;;;;;30:3:-1;22:6;14;1:33;45:16;;;;2301:426:35;;;-1:-1:-1;;2301:426:35;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2301:426:35;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;2301:426:35;;;;;;2747:21;;;;;;;;;;;;;;2301:426;;-1:-1:-1;2758:9:35;;-1:-1:-1;2747:21:35;-1:-1:-1;2747:21:35;;-1:-1:-1;2747:21:35;;;;;-1:-1:-1;2747:21:35;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2747:21:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2747:21:35;;;-1:-1:-1;;26:21;;;22:32;6:49;;2747:21:35;;;2846:9;;2783:15;;49:4:-1;2783:15:35;;;2747:21;;-1:-1:-1;;;;;;2846:9:35;;-1:-1:-1;2783:59:35;;-1:-1:-1;2832:9:35;;-1:-1:-1;2783:40:35;;:38;:40::i;:::-;:48;:59;:48;:59;:::i;:::-;-1:-1:-1;;;;;2783:72:35;;2779:437;;;2894:12;2876:15;:30;2872:163;;;2933:87;2960:49;2952:58;3012:7;2933:18;:87::i;:::-;2926:94;;;;;;;;;2872:163;3055:28;3075:7;3055:19;:28::i;2779:437::-;3121:84;3148:46;3140:55;;1774:1448;;;;;;;;;;;;;;;:::o;1833:45:61:-;1873:5;1833:45;:::o;1172:41::-;1208:5;1172:41;:::o;1052:31:37:-;;;;:::o;2910:227:114:-;3116:14;;;;;;;;;;;;-1:-1:-1;;;3116:14:114;;;;2910:227;:::o;4720:1073:34:-;4985:21;5036:10;5019:28;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;5019:28:34;;;;;;;26:21:-1;;;-1:-1;;22:32;6:49;;5019:28:34;;5009:39;;;;;;;;;-1:-1:-1;5066:27:34;;;:12;:27;;;;;;;5009:39;;-1:-1:-1;;274:1;5066:27:34;;;;:35;;;;;-1:-1:-1;5058:79:34;;-1:-1:-1;5058:79:34;;;;-1:-1:-1;;;5058:79:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;5147:27;;;;:12;:27;;;;;;;;:34;;-1:-1:-1;;5147:34:34;5177:4;5147:34;;;5256:55;;;;;;;-1:-1:-1;;;;;5256:55:34;;;;;;;;;;;;;;;;;;5209:137;;5239:73;;:16;:73::i;:::-;5326:10;5209:16;:137::i;:::-;5400:29;;;;;;5192:154;;-1:-1:-1;;;;;;5364:68:34;;;;;;5356:126;;;;-1:-1:-1;;;5356:126:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5512:6;-1:-1:-1;;;;;5500:18:34;:8;-1:-1:-1;;;;;5500:18:34;;5492:57;;;;;-1:-1:-1;;;5492:57:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5559:24:34;;;;;;:14;:24;;;;;;;;:43;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;5612:35:34;;;;;;;:25;:35;;;;;;;;;:51;;-1:-1:-1;;;;;;5612:51:34;;;;;;;5679:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;5739:8;-1:-1:-1;;;;;5721:65:34;;5749:16;5767:18;5721:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;5721:65:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5721:65:34;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;5721:65:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4720:1073;;;;;;;:::o;7276:1528::-;7485:3;;:108;;-1:-1:-1;;;7485:108:34;;1048:5:61;7485:108:34;;;;;;7554:4;7485:108;;;;;;7457:25;7485:108;;;;;;;;;;;;;;7457:25;;-1:-1:-1;;;;;7485:3:34;;:17;;1048:5:61;7573:10:34;;7485:108;;;;;;;;;;;;;:3;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7485:108:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7485:108:34;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7485:108:34;;;;;;39:16:-1;36:1;17:17;2:54;101:4;7485:108:34;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;7485:108:34;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;7485:108:34;;420:4:-1;411:14;;;;7485:108:34;;;;;411:14:-1;7485:108:34;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7485:108:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7457:136;;7618:12;:10;:12::i;:::-;-1:-1:-1;;;;;7608:22:34;:6;-1:-1:-1;;;;;7608:22:34;;7604:680;;7708:12;:10;:12::i;:::-;-1:-1:-1;;;;;7671:33:34;;;;;;;:25;:33;;;;;;;;:49;;;7646:162;;;;-1:-1:-1;;;7646:162:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7838:29;7899:40;:19;:12;7916:1;7899:19;:16;:19;:::i;:::-;:38;:40::i;:::-;7823:116;;;;;7953:21;7977:28;:16;:26;:28::i;:::-;7953:52;-1:-1:-1;8024:9:34;8019:255;8043:13;8039:1;:17;8019:255;;;8085:13;8104:37;:23;:16;8125:1;8104:23;:20;:23;:::i;:::-;:35;:37::i;:::-;8084:57;;;;8176:6;-1:-1:-1;;;;;8167:15:34;:5;-1:-1:-1;;;;;8167:15:34;;8159:100;;;;-1:-1:-1;;;8159:100:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8063:1:34;8058:6;8019:255;;;;7604:680;;;8332:3;;:31;;;-1:-1:-1;;;8332:31:34;;-1:-1:-1;;;;;8332:31:34;;;;;;;;;8295:26;;8332:3;;;;;:15;;:31;;;;;:3;;:31;;;;;;;;:3;:31;;;5:2:-1;;;;30:1;27;20:12;5:2;8332:31:34;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8332:31:34;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;8332:31:34;;8447:101;;-1:-1:-1;;;8447:101:34;;-1:-1:-1;;;;;8447:101:34;;;;;;;8513:4;8447:101;;;;;;;;;;;;8332:31;;-1:-1:-1;8332:31:34;;8447:24;;;;;;:101;;;;;8332:31;;8447:101;;;;;;;;8373:26;8447:24;:101;;;5:2:-1;;;;30:1;27;20:12;5:2;8447:101:34;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8447:101:34;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;8587:3:34;;8559:41;;;-1:-1:-1;;;8559:41:34;;-1:-1:-1;;;;;8587:3:34;;;8559:41;;;;;;;;;;;;:19;;;;;;:41;;;;;8447:101;;8559:41;;;;;;;;8587:3;8559:19;:41;;;5:2:-1;;;;30:1;27;20:12;5:2;8559:41:34;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8559:41:34;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;8611:3:34;;:53;;;-1:-1:-1;;;8611:53:34;;-1:-1:-1;;;;;8611:53:34;;;;;;;;;;;;;;;;;;;;;:3;;;;;:17;;:53;;;;;:3;;:53;;;;;;;:3;;:53;;;5:2:-1;;;;30:1;27;20:12;5:2;8611:53:34;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;;;;;;;8675:49:34;;;-1:-1:-1;8675:49:34;1048:5:61;8768:19:34;:12;8785:1;8768:16;:19::i;:::-;8675:122;;;-1:-1:-1;;;;;;8675:122:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;8675:122:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8675:122:34;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8675:122:34;;;;7276:1528;;;;;;;;:::o;2334:640:36:-;2637:3;;:31;;;-1:-1:-1;;;2637:31:36;;-1:-1:-1;;;;;2637:31:36;;;;;;;;;2600:26;;2637:3;;;;;:15;;:31;;;;;:3;;:31;;;;;;;;:3;:31;;;5:2:-1;;;;30:1;27;20:12;5:2;2637:31:36;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2637:31:36;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;2637:31:36;;-1:-1:-1;2754:4:36;2794;2809:78;2637:31;2836:6;2844:5;2754:4;2860:6;2794:4;2877:9;2809:6;:78::i;:::-;2898:69;2912:14;2928:6;2936:10;2948;2960:6;2898:13;:69::i;1332:41:61:-;1368:5;1332:41;:::o;6093:274:114:-;6238:12;:10;:12::i;:::-;-1:-1:-1;;;;;6224:26:114;:10;-1:-1:-1;;;;;6224:26:114;;6216:75;;;;-1:-1:-1;;;6216:75:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6301:59;6318:7;;6301:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;6327:7:114;;-1:-1:-1;6336:12:114;;-1:-1:-1;6350:9:114;;-1:-1:-1;6301:16:114;:59::i;:::-;6093:274;;;;;:::o;1645:47:34:-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1645:47:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1354:33:76:-;;;;:::o;9163:160:34:-;9263:3;;:53;;;-1:-1:-1;;;9263:53:34;;-1:-1:-1;;;;;9263:53:34;;;;;;;;;;;;;;;;;;;;;:3;;;;;:17;;:53;;;;;:3;;:53;;;;;;;:3;;:53;;;5:2:-1;;;;30:1;27;20:12;5:2;9263:53:34;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9263:53:34;;;;9163:160;;;:::o;1281:24:35:-;;;-1:-1:-1;;;;;1281:24:35;;:::o;2169:395:114:-;2261:9;;-1:-1:-1;;;;;2261:9:114;;;;2288:25;;2280:84;;;;-1:-1:-1;;;2280:84:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2397:15;-1:-1:-1;;;;;2382:30:114;:11;-1:-1:-1;;;;;2382:30:114;;;2374:88;;;;-1:-1:-1;;;2374:88:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2511:11;-1:-1:-1;;;;;2478:45:114;2494:15;-1:-1:-1;;;;;2478:45:114;;;;;;;;;;;-1:-1:-1;2534:9:114;:23;;-1:-1:-1;;;;;;2534:23:114;-1:-1:-1;;;;;2534:23:114;;;;;;;;;;2169:395::o;1976:1130:79:-;2274:4;2248:31;;;2242:38;2923:13;;;2837:121;;2892:4;2837:121;2810:166;2789:239;;;2202:92;;;3047:52;;;;-1:-1:-1;;;3047:52:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1976:1130;;;;;:::o;1409:498:118:-;1820:4;1864:17;1895:7;1409:498;:::o;1727:254:33:-;1024:12:118;;;;;;;;:31;;;1040:15;:13;:15::i;:::-;1024:47;;;-1:-1:-1;1060:11:118;;;;1059:12;1024:47;1016:106;;;;-1:-1:-1;;;1016:106:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1129:19;1152:12;;;;;;1151:13;1170:80;;;;1198:12;:19;;-1:-1:-1;;;;1198:19:118;;;;;1225:18;1213:4;1225:18;;;1170:80;-1:-1:-1;;;;;1809:27:33;;1801:97;;;;-1:-1:-1;;;1801:97:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1908:14;:30;;-1:-1:-1;;;;;;1908:30:33;-1:-1:-1;;;;;1908:30:33;;;;;1949:25;:23;:25::i;:::-;1268:14:118;1264:55;;;1307:5;1292:20;;-1:-1:-1;;1292:20:118;;;1264:55;1727:254:33;;:::o;3875:130::-;-1:-1:-1;3932:7:33;;3875:130::o;3381:265:117:-;3580:58;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;3580:58:117;;;;;;;3570:69;;;;;;3381:265::o;1226:1891::-;1304:7;1365:9;:16;1385:2;1365:22;1361:72;;-1:-1:-1;1419:1:117;1403:19;;1361:72;1783:4;1768:20;;1762:27;1828:4;1813:20;;1807:27;1881:4;1866:20;;1860:27;1499:9;1852:36;-1:-1:-1;;;;;2786:79:117;;2782:127;;;2896:1;2881:17;;;;;;;2782:127;2923:1;:7;;2928:2;2923:7;;:18;;;;;2934:1;:7;;2939:2;2934:7;;2923:18;2919:66;;;2972:1;2957:17;;;;;;;2919:66;3086:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3086:24:117;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;3086:24:117;;-1:-1:-1;;3086:24:117;;;1226:1891;-1:-1:-1;;;;;;;1226:1891:117:o;2112:183:33:-;1462:2;2245:33;;;;;2112:183::o;7247:153:114:-;7321:7;;7247:153::o;3539:630:34:-;3623:7;3642:24;2248:13;;;;;;;;;;;;;;;;;2231:31;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;-1:-1;;263:2;259:12;;;254:3;250:22;246:30;340:21;;;311:9;;295:26;;;;377:20;365:33;;2231:31:34;;;-1:-1:-1;;2231:31:34;;;;26:21:-1;;;22:32;;;;6:49;;2231:31:34;;;2221:42;;;;;;;;;-1:-1:-1;;;3739:28:34;;;;;;;;;;;;-1:-1:-1;;;3781:14:34;;;;;;;;274:1:-1;3781:14:34;;;3679:153;;;;;;;;;;;;;;;3817:4;3679:153;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;3679:153:34;;;;;;3669:164;;;;;;;2342:14;;;;;;;;;;3669:164;;-1:-1:-1;3669:164:34;;-1:-1:-1;3679:153:34;-1:-1:-1;2342:14:34;;;-1:-1:-1;2342:14:34;;;2325:32;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;2325:32:34;;;;;;;26:21:-1;;;-1:-1;;22:32;6:49;;2325:32:34;;;2315:43;;;;;;;;;4019:21;;4074:29;;;;4058:47;;;;;;4123:26;;;;3955:204;;;;;;;-1:-1:-1;;;;;3955:204:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;3955:204:34;;;;;3945:215;;;;;;-1:-1:-1;;;3861:300:34;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;3861:300:34;;;;;-1:-1:-1;;3851:311:34;;;;;;;;3539:630;-1:-1:-1;;;3539:630:34:o;3139:3212:76:-;3253:15;3280:11;3750:10;3744:17;3837:8;3825:10;3818:28;4028:4;4016:10;4012:21;4006:28;4078:4;4066:10;4062:21;4056:28;4111:1;4106:3;4102:11;4097:16;;4903:4;4891:10;4887:21;4881:28;4874:4;4862:10;4858:21;4851:59;5011:4;4999:10;4995:21;4989:28;4982:4;4970:10;4966:21;4959:59;5097:1;5090:4;5078:10;5074:21;5067:32;5701:4;5689:10;5683:4;5671:10;5665:4;5660:3;5649:57;5531:2;5528:1;5525:9;5520:2;5517:1;5514:9;5511:24;5425:4;5413:10;5410:20;5320:237;-1:-1:-1;;;;;5228:1:76;5225:73;5143:432;5122:598;5112:608;;5854:10;5848:17;5838:8;5835:31;5884:1;5879:67;;;;5828:118;;5879:67;5921:10;5915:17;5904:28;;5828:118;-1:-1:-1;;;5959:30:76;;6162:6;:35;;;;-1:-1:-1;;;;;;6173:23:76;;;;6162:35;6156:189;;-1:-1:-1;;;;;6222:23:76;;6214:62;;;;;-1:-1:-1;;;6214:62:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;6298:6;6290:44;;;;;-1:-1:-1;;;6290:44:76;;;;;;;;;;;;;;;;;;;;;;;;;;;4087:210:114;4177:9;;4132:15;;-1:-1:-1;;;;;4177:9:114;4163:10;:23;4159:132;;-1:-1:-1;4209:10:114;4202:17;;4159:132;4257:23;:21;:23::i;:::-;4250:30;;;;3767:948:79;4404:4;4386:23;;4380:30;4481:4;4463:23;;4457:30;3854:23;4543;;4537:30;4693:4;4675:23;;4669:30;4362:49;;;;4439;;;;;-1:-1:-1;;;;;4516:125:79;;4669:30;3994:715::o;1393:325::-;1696:4;1670:31;1664:38;;1513:199::o;5520:683::-;6018:4;6007:16;;6001:23;5654:21;6129:16;;6123:23;-1:-1:-1;;;;;5980:118:79;;;;6123:23;;6182:4;6171:16;;5701:496::o;9731:271:34:-;9854:24;9893:7;9882:28;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9882:28:34;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;9882:28:34;;420:4:-1;411:14;;;;9882:28:34;;;;;411:14:-1;9882:28:34;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;9882:28:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9853:57;;9973:7;9925:70;;9959:11;9949:22;;;;;;9925:70;9982:12;9925:70;;;;;;;;;;;;;;;;;;9731:271;;;;;:::o;8191:1250:114:-;8246:22;9053:18;9074:8;;9053:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;;;;9108:8:114;9339:17;9333:24;-1:-1:-1;;;;;9329:73:114;;8191:1250;-1:-1:-1;;8191:1250:114:o;806:1615:37:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;806:1615:37;;;-1:-1:-1;806:1615:37;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;", + "source": "pragma solidity >=0.5.0 <0.6.0;\n\nimport \"../20200220/Behaviour20200220.sol\";\nimport \"../../../interfaces/IERC20Permit.sol\";\n\n/**\n * @title Behaviour20200305 implementation\n * @author AZTEC\n * \n * Copyright 2020 Spilsbury Holdings Ltd \n *\n * Licensed under the GNU Lesser General Public Licence, Version 3.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * along with this program. If not, see .\n **/\ncontract Behaviour20200305 is Behaviour20200220 {\n /**\n * @dev epoch number, used for version control in upgradeability. The naming convention is based on the\n * date on which the contract was created, in the format: YYYYMMDD\n */\n uint256 public epoch = 20200305;\n\n /**\n * @dev Perform a confidential transfer, mediated by a smart contracrt\n * @param _proofId - uint24 proofId\n * @param _registryOwner - address of the note registry owner\n * @param _proofData - data generated from proof construction, which is used to validate the proof\n * @param _spender - address that will be spending the notes\n * @param _proofSignature - EIP712 signature used to approve/revoke permission for the proof\n * @param _proofSignature2 - EIP712 signature with be s bit flipped for replay protection of ZkDai\n * to be spent\n */\n function confidentialTransferFrom(\n uint24 _proofId,\n address _registryOwner,\n bytes memory _proofData,\n address _spender,\n bytes memory _proofSignature,\n bytes memory _proofSignature2\n ) public {\n\n bytes memory proofOutputs = ace.validateProof(_proofId, address(this), _proofData);\n\n if(_proofSignature.length != 0) {\n IZkAsset(_registryOwner).approveProof(_proofId, proofOutputs, _spender, true, _proofSignature);\n }\n if(_proofSignature2.length != 0) {\n IZkAsset(_registryOwner).approveProof(_proofId, proofOutputs, _spender, true, _proofSignature2);\n }\n\n IZkAsset(_registryOwner).confidentialTransferFrom(_proofId, proofOutputs.get(0));\n }\n}\n\n", + "sourcePath": "/Users/arnaudschenk/dev/AZTEC/packages/protocol/contracts/AccountRegistry/epochs/20200305/Behaviour20200305.sol", + "ast": { + "absolutePath": "/Users/arnaudschenk/dev/AZTEC/packages/protocol/contracts/AccountRegistry/epochs/20200305/Behaviour20200305.sol", + "exportedSymbols": { + "Behaviour20200305": [ + 4354 + ] + }, + "id": 4355, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4274, + "literals": [ + "solidity", + ">=", + "0.5", + ".0", + "<", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:31:37" + }, + { + "absolutePath": "/Users/arnaudschenk/dev/AZTEC/packages/protocol/contracts/AccountRegistry/epochs/20200220/Behaviour20200220.sol", + "file": "../20200220/Behaviour20200220.sol", + "id": 4275, + "nodeType": "ImportDirective", + "scope": 4355, + "sourceUnit": 4273, + "src": "33:43:37", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/arnaudschenk/dev/AZTEC/packages/protocol/contracts/interfaces/IERC20Permit.sol", + "file": "../../../interfaces/IERC20Permit.sol", + "id": 4276, + "nodeType": "ImportDirective", + "scope": 4355, + "sourceUnit": 8668, + "src": "77:46:37", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 4277, + "name": "Behaviour20200220", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4272, + "src": "836:17:37", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Behaviour20200220_$4272", + "typeString": "contract Behaviour20200220" + } + }, + "id": 4278, + "nodeType": "InheritanceSpecifier", + "src": "836:17:37" + } + ], + "contractDependencies": [ + 3547, + 4041, + 4163, + 4272, + 8488, + 9699, + 11855, + 12213, + 12517, + 12667 + ], + "contractKind": "contract", + "documentation": "@title Behaviour20200305 implementation\n@author AZTEC\n\n * Copyright 2020 Spilsbury Holdings Ltd \n * Licensed under the GNU Lesser General Public Licence, Version 3.0 (the \"License\");\nyou may not use this file except in compliance with the License.\n * This program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\nGNU Lesser General Public License for more details.\n * You should have received a copy of the GNU Lesser General Public License\nalong with this program. If not, see .*", + "fullyImplemented": true, + "id": 4354, + "linearizedBaseContracts": [ + 4354, + 4272, + 4163, + 4041, + 9699, + 8488, + 3547, + 12213, + 11855, + 12517, + 12667 + ], + "name": "Behaviour20200305", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 4281, + "name": "epoch", + "nodeType": "VariableDeclaration", + "scope": 4354, + "src": "1052:31:37", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4279, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1052:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "3230323030333035", + "id": 4280, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1075:8:37", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_20200305_by_1", + "typeString": "int_const 20200305" + }, + "value": "20200305" + }, + "visibility": "public" + }, + { + "body": { + "id": 4352, + "nodeType": "Block", + "src": "1905:514:37", + "statements": [ + { + "assignments": [ + 4297 + ], + "declarations": [ + { + "constant": false, + "id": 4297, + "name": "proofOutputs", + "nodeType": "VariableDeclaration", + "scope": 4352, + "src": "1916:25:37", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4296, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1916:5:37", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 4306, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4300, + "name": "_proofId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4283, + "src": "1962:8:37", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4302, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13723, + "src": "1980:4:37", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Behaviour20200305_$4354", + "typeString": "contract Behaviour20200305" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Behaviour20200305_$4354", + "typeString": "contract Behaviour20200305" + } + ], + "id": 4301, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1972:7:37", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 4303, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1972:13:37", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4304, + "name": "_proofData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4287, + "src": "1987:10:37", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 4298, + "name": "ace", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3635, + "src": "1944:3:37", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ACE_$624", + "typeString": "contract ACE" + } + }, + "id": 4299, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "validateProof", + "nodeType": "MemberAccess", + "referencedDeclaration": 318, + "src": "1944:17:37", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint24_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (uint24,address,bytes memory) external returns (bytes memory)" + } + }, + "id": 4305, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1944:54:37", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1916:82:37" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4310, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4307, + "name": "_proofSignature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4291, + "src": "2012:15:37", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 4308, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2012:22:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 4309, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2038:1:37", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2012:27:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 4323, + "nodeType": "IfStatement", + "src": "2009:151:37", + "trueBody": { + "id": 4322, + "nodeType": "Block", + "src": "2041:119:37", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4315, + "name": "_proofId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4283, + "src": "2093:8:37", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + { + "argumentTypes": null, + "id": 4316, + "name": "proofOutputs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4297, + "src": "2103:12:37", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 4317, + "name": "_spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4289, + "src": "2117:8:37", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "hexValue": "74727565", + "id": 4318, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2127:4:37", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + { + "argumentTypes": null, + "id": 4319, + "name": "_proofSignature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4291, + "src": "2133:15:37", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4312, + "name": "_registryOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4285, + "src": "2064:14:37", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4311, + "name": "IZkAsset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8774, + "src": "2055:8:37", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IZkAsset_$8774_$", + "typeString": "type(contract IZkAsset)" + } + }, + "id": 4313, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2055:24:37", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IZkAsset_$8774", + "typeString": "contract IZkAsset" + } + }, + "id": 4314, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "approveProof", + "nodeType": "MemberAccess", + "referencedDeclaration": 8682, + "src": "2055:37:37", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint24_$_t_bytes_memory_ptr_$_t_address_$_t_bool_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (uint24,bytes memory,address,bool,bytes memory) external" + } + }, + "id": 4320, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2055:94:37", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4321, + "nodeType": "ExpressionStatement", + "src": "2055:94:37" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4327, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4324, + "name": "_proofSignature2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4293, + "src": "2172:16:37", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 4325, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2172:23:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 4326, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2199:1:37", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2172:28:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 4340, + "nodeType": "IfStatement", + "src": "2169:153:37", + "trueBody": { + "id": 4339, + "nodeType": "Block", + "src": "2202:120:37", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4332, + "name": "_proofId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4283, + "src": "2254:8:37", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + { + "argumentTypes": null, + "id": 4333, + "name": "proofOutputs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4297, + "src": "2264:12:37", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 4334, + "name": "_spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4289, + "src": "2278:8:37", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "hexValue": "74727565", + "id": 4335, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2288:4:37", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + { + "argumentTypes": null, + "id": 4336, + "name": "_proofSignature2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4293, + "src": "2294:16:37", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4329, + "name": "_registryOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4285, + "src": "2225:14:37", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4328, + "name": "IZkAsset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8774, + "src": "2216:8:37", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IZkAsset_$8774_$", + "typeString": "type(contract IZkAsset)" + } + }, + "id": 4330, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2216:24:37", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IZkAsset_$8774", + "typeString": "contract IZkAsset" + } + }, + "id": 4331, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "approveProof", + "nodeType": "MemberAccess", + "referencedDeclaration": 8682, + "src": "2216:37:37", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint24_$_t_bytes_memory_ptr_$_t_address_$_t_bool_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (uint24,bytes memory,address,bool,bytes memory) external" + } + }, + "id": 4337, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2216:95:37", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4338, + "nodeType": "ExpressionStatement", + "src": "2216:95:37" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4345, + "name": "_proofId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4283, + "src": "2382:8:37", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 4348, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2409:1:37", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "expression": { + "argumentTypes": null, + "id": 4346, + "name": "proofOutputs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4297, + "src": "2392:12:37", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 4347, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "get", + "nodeType": "MemberAccess", + "referencedDeclaration": 9771, + "src": "2392:16:37", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,uint256) pure returns (bytes memory)" + } + }, + "id": 4349, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2392:19:37", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4342, + "name": "_registryOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4285, + "src": "2341:14:37", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4341, + "name": "IZkAsset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8774, + "src": "2332:8:37", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IZkAsset_$8774_$", + "typeString": "type(contract IZkAsset)" + } + }, + "id": 4343, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2332:24:37", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IZkAsset_$8774", + "typeString": "contract IZkAsset" + } + }, + "id": 4344, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "confidentialTransferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 8700, + "src": "2332:49:37", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint24_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (uint24,bytes memory) external" + } + }, + "id": 4350, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2332:80:37", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4351, + "nodeType": "ExpressionStatement", + "src": "2332:80:37" + } + ] + }, + "documentation": "@dev Perform a confidential transfer, mediated by a smart contracrt\n@param _proofId - uint24 proofId\n@param _registryOwner - address of the note registry owner\n@param _proofData - data generated from proof construction, which is used to validate the proof\n@param _spender - address that will be spending the notes\n@param _proofSignature - EIP712 signature used to approve/revoke permission for the proof\n@param _proofSignature2 - EIP712 signature with be s bit flipped for replay protection of ZkDai\nto be spent", + "id": 4353, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "confidentialTransferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4294, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4283, + "name": "_proofId", + "nodeType": "VariableDeclaration", + "scope": 4353, + "src": "1708:15:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 4282, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "1708:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4285, + "name": "_registryOwner", + "nodeType": "VariableDeclaration", + "scope": 4353, + "src": "1733:22:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4284, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1733:7:37", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4287, + "name": "_proofData", + "nodeType": "VariableDeclaration", + "scope": 4353, + "src": "1765:23:37", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4286, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1765:5:37", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4289, + "name": "_spender", + "nodeType": "VariableDeclaration", + "scope": 4353, + "src": "1798:16:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4288, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1798:7:37", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4291, + "name": "_proofSignature", + "nodeType": "VariableDeclaration", + "scope": 4353, + "src": "1824:28:37", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4290, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1824:5:37", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4293, + "name": "_proofSignature2", + "nodeType": "VariableDeclaration", + "scope": 4353, + "src": "1862:29:37", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4292, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1862:5:37", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1698:199:37" + }, + "returnParameters": { + "id": 4295, + "nodeType": "ParameterList", + "parameters": [], + "src": "1905:0:37" + }, + "scope": 4354, + "src": "1665:754:37", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 4355, + "src": "806:1615:37" + } + ], + "src": "0:2423:37" + }, + "legacyAST": { + "absolutePath": "/Users/arnaudschenk/dev/AZTEC/packages/protocol/contracts/AccountRegistry/epochs/20200305/Behaviour20200305.sol", + "exportedSymbols": { + "Behaviour20200305": [ + 4354 + ] + }, + "id": 4355, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4274, + "literals": [ + "solidity", + ">=", + "0.5", + ".0", + "<", + "0.6", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "0:31:37" + }, + { + "absolutePath": "/Users/arnaudschenk/dev/AZTEC/packages/protocol/contracts/AccountRegistry/epochs/20200220/Behaviour20200220.sol", + "file": "../20200220/Behaviour20200220.sol", + "id": 4275, + "nodeType": "ImportDirective", + "scope": 4355, + "sourceUnit": 4273, + "src": "33:43:37", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/arnaudschenk/dev/AZTEC/packages/protocol/contracts/interfaces/IERC20Permit.sol", + "file": "../../../interfaces/IERC20Permit.sol", + "id": 4276, + "nodeType": "ImportDirective", + "scope": 4355, + "sourceUnit": 8668, + "src": "77:46:37", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 4277, + "name": "Behaviour20200220", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4272, + "src": "836:17:37", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Behaviour20200220_$4272", + "typeString": "contract Behaviour20200220" + } + }, + "id": 4278, + "nodeType": "InheritanceSpecifier", + "src": "836:17:37" + } + ], + "contractDependencies": [ + 3547, + 4041, + 4163, + 4272, + 8488, + 9699, + 11855, + 12213, + 12517, + 12667 + ], + "contractKind": "contract", + "documentation": "@title Behaviour20200305 implementation\n@author AZTEC\n\n * Copyright 2020 Spilsbury Holdings Ltd \n * Licensed under the GNU Lesser General Public Licence, Version 3.0 (the \"License\");\nyou may not use this file except in compliance with the License.\n * This program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\nGNU Lesser General Public License for more details.\n * You should have received a copy of the GNU Lesser General Public License\nalong with this program. If not, see .*", + "fullyImplemented": true, + "id": 4354, + "linearizedBaseContracts": [ + 4354, + 4272, + 4163, + 4041, + 9699, + 8488, + 3547, + 12213, + 11855, + 12517, + 12667 + ], + "name": "Behaviour20200305", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 4281, + "name": "epoch", + "nodeType": "VariableDeclaration", + "scope": 4354, + "src": "1052:31:37", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4279, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1052:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "3230323030333035", + "id": 4280, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1075:8:37", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_20200305_by_1", + "typeString": "int_const 20200305" + }, + "value": "20200305" + }, + "visibility": "public" + }, + { + "body": { + "id": 4352, + "nodeType": "Block", + "src": "1905:514:37", + "statements": [ + { + "assignments": [ + 4297 + ], + "declarations": [ + { + "constant": false, + "id": 4297, + "name": "proofOutputs", + "nodeType": "VariableDeclaration", + "scope": 4352, + "src": "1916:25:37", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4296, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1916:5:37", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 4306, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4300, + "name": "_proofId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4283, + "src": "1962:8:37", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4302, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13723, + "src": "1980:4:37", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Behaviour20200305_$4354", + "typeString": "contract Behaviour20200305" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Behaviour20200305_$4354", + "typeString": "contract Behaviour20200305" + } + ], + "id": 4301, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1972:7:37", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 4303, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1972:13:37", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4304, + "name": "_proofData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4287, + "src": "1987:10:37", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 4298, + "name": "ace", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3635, + "src": "1944:3:37", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ACE_$624", + "typeString": "contract ACE" + } + }, + "id": 4299, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "validateProof", + "nodeType": "MemberAccess", + "referencedDeclaration": 318, + "src": "1944:17:37", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint24_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (uint24,address,bytes memory) external returns (bytes memory)" + } + }, + "id": 4305, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1944:54:37", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1916:82:37" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4310, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4307, + "name": "_proofSignature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4291, + "src": "2012:15:37", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 4308, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2012:22:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 4309, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2038:1:37", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2012:27:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 4323, + "nodeType": "IfStatement", + "src": "2009:151:37", + "trueBody": { + "id": 4322, + "nodeType": "Block", + "src": "2041:119:37", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4315, + "name": "_proofId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4283, + "src": "2093:8:37", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + { + "argumentTypes": null, + "id": 4316, + "name": "proofOutputs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4297, + "src": "2103:12:37", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 4317, + "name": "_spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4289, + "src": "2117:8:37", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "hexValue": "74727565", + "id": 4318, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2127:4:37", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + { + "argumentTypes": null, + "id": 4319, + "name": "_proofSignature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4291, + "src": "2133:15:37", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4312, + "name": "_registryOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4285, + "src": "2064:14:37", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4311, + "name": "IZkAsset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8774, + "src": "2055:8:37", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IZkAsset_$8774_$", + "typeString": "type(contract IZkAsset)" + } + }, + "id": 4313, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2055:24:37", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IZkAsset_$8774", + "typeString": "contract IZkAsset" + } + }, + "id": 4314, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "approveProof", + "nodeType": "MemberAccess", + "referencedDeclaration": 8682, + "src": "2055:37:37", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint24_$_t_bytes_memory_ptr_$_t_address_$_t_bool_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (uint24,bytes memory,address,bool,bytes memory) external" + } + }, + "id": 4320, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2055:94:37", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4321, + "nodeType": "ExpressionStatement", + "src": "2055:94:37" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4327, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4324, + "name": "_proofSignature2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4293, + "src": "2172:16:37", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 4325, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2172:23:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 4326, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2199:1:37", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2172:28:37", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 4340, + "nodeType": "IfStatement", + "src": "2169:153:37", + "trueBody": { + "id": 4339, + "nodeType": "Block", + "src": "2202:120:37", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4332, + "name": "_proofId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4283, + "src": "2254:8:37", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + { + "argumentTypes": null, + "id": 4333, + "name": "proofOutputs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4297, + "src": "2264:12:37", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 4334, + "name": "_spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4289, + "src": "2278:8:37", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "hexValue": "74727565", + "id": 4335, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2288:4:37", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + { + "argumentTypes": null, + "id": 4336, + "name": "_proofSignature2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4293, + "src": "2294:16:37", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4329, + "name": "_registryOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4285, + "src": "2225:14:37", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4328, + "name": "IZkAsset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8774, + "src": "2216:8:37", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IZkAsset_$8774_$", + "typeString": "type(contract IZkAsset)" + } + }, + "id": 4330, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2216:24:37", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IZkAsset_$8774", + "typeString": "contract IZkAsset" + } + }, + "id": 4331, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "approveProof", + "nodeType": "MemberAccess", + "referencedDeclaration": 8682, + "src": "2216:37:37", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint24_$_t_bytes_memory_ptr_$_t_address_$_t_bool_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (uint24,bytes memory,address,bool,bytes memory) external" + } + }, + "id": 4337, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2216:95:37", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4338, + "nodeType": "ExpressionStatement", + "src": "2216:95:37" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4345, + "name": "_proofId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4283, + "src": "2382:8:37", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 4348, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2409:1:37", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "expression": { + "argumentTypes": null, + "id": 4346, + "name": "proofOutputs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4297, + "src": "2392:12:37", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 4347, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "get", + "nodeType": "MemberAccess", + "referencedDeclaration": 9771, + "src": "2392:16:37", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,uint256) pure returns (bytes memory)" + } + }, + "id": 4349, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2392:19:37", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4342, + "name": "_registryOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4285, + "src": "2341:14:37", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4341, + "name": "IZkAsset", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8774, + "src": "2332:8:37", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IZkAsset_$8774_$", + "typeString": "type(contract IZkAsset)" + } + }, + "id": 4343, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2332:24:37", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IZkAsset_$8774", + "typeString": "contract IZkAsset" + } + }, + "id": 4344, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "confidentialTransferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 8700, + "src": "2332:49:37", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint24_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (uint24,bytes memory) external" + } + }, + "id": 4350, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2332:80:37", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4351, + "nodeType": "ExpressionStatement", + "src": "2332:80:37" + } + ] + }, + "documentation": "@dev Perform a confidential transfer, mediated by a smart contracrt\n@param _proofId - uint24 proofId\n@param _registryOwner - address of the note registry owner\n@param _proofData - data generated from proof construction, which is used to validate the proof\n@param _spender - address that will be spending the notes\n@param _proofSignature - EIP712 signature used to approve/revoke permission for the proof\n@param _proofSignature2 - EIP712 signature with be s bit flipped for replay protection of ZkDai\nto be spent", + "id": 4353, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "confidentialTransferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4294, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4283, + "name": "_proofId", + "nodeType": "VariableDeclaration", + "scope": 4353, + "src": "1708:15:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 4282, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "1708:6:37", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4285, + "name": "_registryOwner", + "nodeType": "VariableDeclaration", + "scope": 4353, + "src": "1733:22:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4284, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1733:7:37", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4287, + "name": "_proofData", + "nodeType": "VariableDeclaration", + "scope": 4353, + "src": "1765:23:37", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4286, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1765:5:37", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4289, + "name": "_spender", + "nodeType": "VariableDeclaration", + "scope": 4353, + "src": "1798:16:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4288, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1798:7:37", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4291, + "name": "_proofSignature", + "nodeType": "VariableDeclaration", + "scope": 4353, + "src": "1824:28:37", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4290, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1824:5:37", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4293, + "name": "_proofSignature2", + "nodeType": "VariableDeclaration", + "scope": 4353, + "src": "1862:29:37", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4292, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1862:5:37", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1698:199:37" + }, + "returnParameters": { + "id": 4295, + "nodeType": "ParameterList", + "parameters": [], + "src": "1905:0:37" + }, + "scope": 4354, + "src": "1665:754:37", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 4355, + "src": "806:1615:37" + } + ], + "src": "0:2423:37" + }, + "compiler": { + "name": "solc", + "version": "0.5.17+commit.d19bba13.Emscripten.clang" + }, + "networks": { + "1584539219122": { + "events": { + "0x95a39d922be29576604d782638b30fccbff80d85c69a650415d8b560270ec9a0": { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "accountAddress", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "signerAddress", + "type": "address" + } + ], + "name": "Addresses", + "type": "event" + }, + "0x2f708c980c8415108d54566eeeb78f5c2ddf6e1fab619607c30c001b127be075": { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "signatureHash", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bool", + "name": "success", + "type": "bool" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "actualCharge", + "type": "uint256" + } + ], + "name": "GSNTransactionProcessed", + "type": "event" + }, + "0x6943ea2c7fa944e0014e912e815bb331b63af36341f53622fce2f97d26a928e2": { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "linkedPublicKey", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "spendingPublicKey", + "type": "bytes" + } + ], + "name": "RegisterExtension", + "type": "event" + }, + "0xb9f84b8e65164b14439ae3620df0a4d8786d896996c0282b683f9d8c08f046e8": { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldRelayHub", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newRelayHub", + "type": "address" + } + ], + "name": "RelayHubChanged", + "type": "event" + } + }, + "links": {}, + "address": "0x1EF80B0D5e066334594B2fB47f5211530Bb25bEb", + "transactionHash": "0xd4468ef3a7cf0b3d68c6552da4d94b344120f1bc164edf3bb391187b9c633f2a" + } + }, + "schemaVersion": "3.0.23", + "updatedAt": "2020-03-18T13:47:44.064Z", + "networkType": "ethereum", + "devdoc": { + "author": "AZTEC * Copyright 2020 Spilsbury Holdings Ltd * Licensed under the GNU Lesser General Public Licence, Version 3.0 (the \"License\"); you may not use this file except in compliance with the License. * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. * You should have received a copy of the GNU Lesser General Public License along with this program. If not, see .*", + "methods": { + "acceptRelayedCall(address,address,bytes,uint256,uint256,uint256,uint256,bytes,uint256)": { + "details": "Overwrite the accceptRelayedCall() method of Behaviour20200106.sol, to allow it to be used with an updated GSN signer address. Method used to ensure that only transactions with a trusted signature can be relayed through the GSN." + }, + "confidentialTransferFrom(uint24,address,bytes,address,bytes)": { + "details": "Perform a confidential transfer, mediated by a smart contracrt", + "params": { + "_proofData": "- data generated from proof construction, which is used to validate the proof", + "_proofId": "- uint24 proofId", + "_proofSignature": "- EIP712 signature used to approve/revoke permission for the proof to be spent", + "_registryOwner": "- address of the note registry owner", + "_spender": "- address that will be spending the notes" + } + }, + "confidentialTransferFrom(uint24,address,bytes,address,bytes,bytes)": { + "details": "Perform a confidential transfer, mediated by a smart contracrt", + "params": { + "_proofData": "- data generated from proof construction, which is used to validate the proof", + "_proofId": "- uint24 proofId", + "_proofSignature": "- EIP712 signature used to approve/revoke permission for the proof", + "_proofSignature2": "- EIP712 signature with be s bit flipped for replay protection of ZkDai to be spent", + "_registryOwner": "- address of the note registry owner", + "_spender": "- address that will be spending the notes" + } + }, + "deposit(address,address,bytes32,bytes,uint256)": { + "details": "Deposit ERC20 tokens into zero-knowledge notes in a transaction mediated via the GSN. Called by a user", + "params": { + "_owner": "- owner of the ERC20s being deposited", + "_proofData": "- cryptographic data associated with the zero-knowledge proof", + "_proofHash": "- hash of the zero-knowledge deposit proof", + "_registryOwner": "- owner of the zkAsset", + "_value": "- number of ERC20s being deposited" + } + }, + "deposit(address,address,bytes32,bytes,uint256,bytes,uint256,uint256)": { + "details": "This deposit() implementation performs the standard AccountRegistry deposit functionality, but it is also specifically compatible with the DAI permit() function. The permit() function removes the need for a user to send a seperate approval() transaction beforehand in order to approve another address to spend DAI on their behalf. ", + "params": { + "_owner": "- owner of the ERC20s being deposited", + "_proofData": "- cryptographic data associated with the zero-knowledge proof", + "_proofHash": "- hash of the zero-knowledge deposit proof", + "_registryOwner": "- owner of the zkAsset", + "_value": "- number of ERC20s being deposited", + "expiry": "- unix timestamp up to which the permit is valid", + "nonce": "- permit nonce used for signature replay protection", + "signature": "- EIP712 signature supplied to permit() for granting approval" + } + }, + "getHubAddr()": { + "details": "Returns the address of the {IRelayHub} contract for this recipient." + }, + "initialize(address,address)": { + "details": "Initialize the contract and set up it's state. An initialize function rather than a constructor is used to make this compatible with the upgradeability pattern", + "params": { + "_aceAddress": "- address of the AZTEC Cryptography Engine", + "_trustedGSNSignerAddress": "- address which will produce signature to approve relayed GSN calls" + } + }, + "permit(address,address,uint256,bool,uint256,address,bytes)": { + "details": "Call linkedToken.permit(), to grant an address approval to spend linkedToken tokens on holder's behalf. Makes use of the new DAI permit() method. Permissioning is performed by signature verification. * Method exposed to give user agency over revoking/approving, setting expiry, spender etc. ", + "params": { + "allowed": "- bool representing whether approval is being granted or revoked", + "expiry": "- period of time for which the approval is valid", + "holder": "- owner of the ERC20 tokens, which are being approved to be spent by the spender", + "linkedTokenAddress": "- address of the linkedToken", + "nonce": "- permit nonce used for signature replay protection", + "signature": "- EIP712 signature supplied to permit() for granting approval", + "spender": "- address being approved to spend " + } + }, + "postRelayedCall(bytes,bool,uint256,bytes32)": { + "details": "See `IRelayRecipient.postRelayedCall`. * This function should not be overriden directly, use `_postRelayedCall` instead. * * Requirements: * - the caller must be the `RelayHub` contract." + }, + "preRelayedCall(bytes)": { + "details": "See `IRelayRecipient.preRelayedCall`. * This function should not be overriden directly, use `_preRelayedCall` instead. * * Requirements: * - the caller must be the `RelayHub` contract." + }, + "publicApprove(address,bytes32,uint256)": { + "details": "Approve a registry to spend up to a number of tokens, for a particular proof", + "params": { + "_proofHash": "- hash of the proof which is being approved to result in the spending of tokens", + "_registryOwner": "- address that is being approved to spend the tokens", + "_value": "- numer of tokens spending is approved up to" + } + }, + "registerAZTECExtension(address,address,bytes,bytes,bytes)": { + "details": "Registers a linkedPublicKey to an Ethereum address, if a valid signature is provided or the sender is the ethereum address in question", + "params": { + "_account": "- address to which the linkedPublicKey is being registered", + "_linkedPublicKey": "- an additional public key which the sender wishes to link to the _account", + "_signature": "- an EIP712 compatible signature of the account & linkedPublicKey", + "_spendingPublicKey": "- the Ethereum public key associated with the Ethereum address" + } + }, + "relayHubVersion()": { + "details": "Returns the version string of the {IRelayHub} for which this recipient implementation was built. If {_upgradeRelayHub} is used, the new {IRelayHub} instance should be compatible with this version." + }, + "setGSNSigner()": { + "details": "Set the GSN signer address for this behaviour contract" + } + }, + "title": "Behaviour20200305 implementation" + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/packages/contract-artifacts/src/index.js b/packages/contract-artifacts/src/index.js index 70a1f676d..dc3dab728 100644 --- a/packages/contract-artifacts/src/index.js +++ b/packages/contract-artifacts/src/index.js @@ -4,6 +4,7 @@ const AccountRegistryManager = require('../artifacts/AccountRegistryManager'); const Behaviour20200106 = require('../artifacts/Behaviour20200106'); const Behaviour20200207 = require('../artifacts/Behaviour20200207'); const Behaviour20200220 = require('../artifacts/Behaviour20200220'); +const Behaviour20200305 = require('../artifacts/Behaviour20200305'); const Dividend = require('../artifacts/Dividend'); const DividendABIEncoder = require('../artifacts/DividendABIEncoder'); const DividendInterface = require('../artifacts/DividendInterface'); @@ -52,6 +53,7 @@ module.exports = { Behaviour20200106, Behaviour20200207, Behaviour20200220, + Behaviour20200305, Dividend, DividendABIEncoder, DividendInterface, diff --git a/packages/extension/src/config/contracts/contracts.js b/packages/extension/src/config/contracts/contracts.js index 35ec8d803..de754a37c 100644 --- a/packages/extension/src/config/contracts/contracts.js +++ b/packages/extension/src/config/contracts/contracts.js @@ -1,6 +1,6 @@ export default { AccountRegistry: { - name: 'Behaviour20200106', + name: 'Behaviour20200305', events: { registerExtension: 'RegisterExtension', },