{ "contractName": "TornadoRouter", "abi": [ { "inputs": [ { "internalType": "address", "name": "_governanceProxyAddress", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "sender", "type": "address" }, { "indexed": false, "internalType": "bytes", "name": "encryptedNote", "type": "bytes" } ], "name": "EncryptedNote", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "newInstanceRegistryProxyAddress", "type": "address" } ], "name": "InstanceRegistryUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "newRelayerRegistryProxyAddress", "type": "address" } ], "name": "RelayerRegistryUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "TokenApproved", "type": "event" }, { "inputs": [ { "internalType": "contract IERC20", "name": "_token", "type": "address" }, { "internalType": "address", "name": "_spender", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "approveTokenForInstance", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes[]", "name": "_encryptedNotes", "type": "bytes[]" } ], "name": "backupNotes", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "contract ITornadoInstance", "name": "_tornado", "type": "address" }, { "internalType": "bytes32", "name": "_commitment", "type": "bytes32" }, { "internalType": "bytes", "name": "_encryptedNote", "type": "bytes" } ], "name": "deposit", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "governanceProxyAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_instanceRegistryAddress", "type": "address" }, { "internalType": "address", "name": "_relayerRegistryAddress", "type": "address" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "instanceRegistry", "outputs": [ { "internalType": "contract InstanceRegistry", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "relayerRegistry", "outputs": [ { "internalType": "contract RelayerRegistry", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "contract IERC20", "name": "_token", "type": "address" }, { "internalType": "address payable", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "rescueTokens", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_newInstanceRegistryProxyAddress", "type": "address" } ], "name": "setInstanceRegistry", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_newRelayerRegistryProxyAddress", "type": "address" } ], "name": "setRelayerRegistry", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "version", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "contract ITornadoInstance", "name": "_tornado", "type": "address" }, { "internalType": "bytes", "name": "_proof", "type": "bytes" }, { "internalType": "bytes32", "name": "_root", "type": "bytes32" }, { "internalType": "bytes32", "name": "_nullifierHash", "type": "bytes32" }, { "internalType": "address payable", "name": "_recipient", "type": "address" }, { "internalType": "address payable", "name": "_relayer", "type": "address" }, { "internalType": "uint256", "name": "_fee", "type": "uint256" }, { "internalType": "uint256", "name": "_refund", "type": "uint256" } ], "name": "withdraw", "outputs": [], "stateMutability": "payable", "type": "function" } ], "bytecode": { "object": "0x60a060405234801561001057600080fd5b506040516115b03803806115b083398101604081905261002f91610044565b60601b6001600160601b031916608052610072565b600060208284031215610055578081fd5b81516001600160a01b038116811461006b578182fd5b9392505050565b60805160601c61150d6100a3600039806103f1528061042d5280610647528061086d5280610907525061150d6000f3fe6080604052600436106100975760003560e01c806313d98d131461009c57806336a3874b146100b15780634655478f146100dc57806347ff589d146100f1578063485cc955146101065780634b704c971461012657806354fd4d50146101465780636485ba2a1461016857806364cb281114610188578063b438689f146101a8578063baaa2169146101bb578063cea9d26f146101db575b600080fd5b6100af6100aa366004610f3f565b6101fb565b005b3480156100bd57600080fd5b506100c66103da565b6040516100d39190611096565b60405180910390f35b3480156100e857600080fd5b506100c66103ef565b3480156100fd57600080fd5b506100c6610413565b34801561011257600080fd5b506100af610121366004610dc0565b610422565b34801561013257600080fd5b506100af610141366004610ec2565b610530565b34801561015257600080fd5b5061015b6105ba565b6040516100d39190611193565b34801561017457600080fd5b506100af610183366004610df8565b6105e5565b34801561019457600080fd5b506100af6101a3366004610da4565b61063c565b6100af6101b6366004610f98565b6106da565b3480156101c757600080fd5b506100af6101d6366004610da4565b610862565b3480156101e757600080fd5b506100af6101f6366004610e82565b6108fc565b60008054604051636695ad4960e11b815282918291620100009091046001600160a01b03169063cd2b5a9290610235908a90600401611096565b60806040518083038186803b15801561024d57600080fd5b505afa158015610261573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102859190610ed6565b93509350509250806102b25760405162461bcd60e51b81526004016102a9906111fd565b60405180910390fd5b8115610340576103403330896001600160a01b0316638bca6d166040518163ffffffff1660e01b815260040160206040518083038186803b1580156102f657600080fd5b505afa15801561030a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061032e9190611038565b6001600160a01b038716929190610a90565b60405163b214faa560e01b81526001600160a01b0388169063b214faa590349061036e908a90600401611124565b6000604051808303818588803b15801561038757600080fd5b505af115801561039b573d6000803e3d6000fd5b5050505050336001600160a01b03166000805160206114b883398151915286866040516103c992919061112d565b60405180910390a250505050505050565b6000546201000090046001600160a01b031681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6001546001600160a01b031681565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461046a5760405162461bcd60e51b81526004016102a9906111c6565b600054610100900460ff16806104835750610483610aee565b80610491575060005460ff16155b6104ad5760405162461bcd60e51b81526004016102a990611240565b600054610100900460ff161580156104d8576000805460ff1961ff0019909116610100171660011790555b6000805462010000600160b01b031916620100006001600160a01b038681169190910291909117909155600180546001600160a01b031916918416919091179055801561052b576000805461ff00191690555b505050565b6000546201000090046001600160a01b031633146105605760405162461bcd60e51b81526004016102a9906113de565b6105746001600160a01b0384168383610af4565b816001600160a01b03167fab1e93ce08cc196e636fe318c052f82163b40e499a90a0fdb38912ecd5beae11826040516105ad9190611124565b60405180910390a2505050565b6040805180820190915260118152703b1916b7b930b1b63296b6b0b730b3b2b960791b602082015290565b60005b8181101561052b57336000805160206114b883398151915284848481811061060c57fe5b905060200281019061061e9190611421565b60405161062c92919061112d565b60405180910390a26001016105e8565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106845760405162461bcd60e51b81526004016102a9906111c6565b600180546001600160a01b0319166001600160a01b0383161790556040517fd3c0577a88b56268da0350a01cb491fb15be69982729d9cb066a0603d1fc54b8906106cf908390611096565b60405180910390a150565b60008054604051636695ad4960e11b8152620100009091046001600160a01b03169063cd2b5a9290610710908d90600401611096565b60806040518083038186803b15801561072857600080fd5b505afa15801561073c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107609190610ed6565b9350505050806107825760405162461bcd60e51b81526004016102a9906111fd565b600154604051631168473b60e21b81526001600160a01b03909116906345a11cec906107b690339088908f906004016110aa565b600060405180830381600087803b1580156107d057600080fd5b505af11580156107e4573d6000803e3d6000fd5b50506040516310d056db60e11b81526001600160a01b038d1692506321a0adb691503490610824908d908d908d908d908d908d908d908d90600401611141565b6000604051808303818588803b15801561083d57600080fd5b505af1158015610851573d6000803e3d6000fd5b505050505050505050505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108aa5760405162461bcd60e51b81526004016102a9906111c6565b6000805462010000600160b01b031916620100006001600160a01b038416021790556040517fcea779b12676b53bc3062b0064b8a14145a271c42db27627a1895a67324f64cb906106cf908390611096565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109445760405162461bcd60e51b81526004016102a9906111c6565b6001600160a01b03821661096a5760405162461bcd60e51b81526004016102a9906112c5565b6001600160a01b0383166109c6574760006109858284610bb7565b6040519091506001600160a01b0385169082156108fc029083906000818181858888f193505050501580156109be573d6000803e3d6000fd5b50505061052b565b6040516370a0823160e01b81526000906001600160a01b038516906370a08231906109f5903090600401611096565b60206040518083038186803b158015610a0d57600080fd5b505afa158015610a21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a459190611038565b90506000610a538284610bb7565b905060008111610a755760405162461bcd60e51b81526004016102a990611351565b610a896001600160a01b0386168583610bcf565b5050505050565b610ae8846323b872dd60e01b858585604051602401610ab1939291906110e7565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610bee565b50505050565b303b1590565b801580610b7c5750604051636eb1769f60e11b81526001600160a01b0384169063dd62ed3e90610b2a90309086906004016110cd565b60206040518083038186803b158015610b4257600080fd5b505afa158015610b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7a9190611038565b155b610b985760405162461bcd60e51b81526004016102a990611388565b61052b8363095ea7b360e01b8484604051602401610ab192919061110b565b6000818310610bc65781610bc8565b825b9392505050565b61052b8363a9059cbb60e01b8484604051602401610ab192919061110b565b6060610c43826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610c7d9092919063ffffffff16565b80519091501561052b5780806020019051810190610c619190610e66565b61052b5760405162461bcd60e51b81526004016102a990611307565b6060610c8c8484600085610c94565b949350505050565b6060610c9f85610d58565b610cbb5760405162461bcd60e51b81526004016102a99061128e565b60006060866001600160a01b03168587604051610cd8919061107a565b60006040518083038185875af1925050503d8060008114610d15576040519150601f19603f3d011682016040523d82523d6000602084013e610d1a565b606091505b50915091508115610d2e579150610c8c9050565b805115610d3e5780518082602001fd5b8360405162461bcd60e51b81526004016102a99190611193565b3b151590565b60008083601f840112610d6f578182fd5b5081356001600160401b03811115610d85578182fd5b602083019150836020828501011115610d9d57600080fd5b9250929050565b600060208284031215610db5578081fd5b8135610bc881611491565b60008060408385031215610dd2578081fd5b8235610ddd81611491565b91506020830135610ded81611491565b809150509250929050565b60008060208385031215610e0a578182fd5b82356001600160401b0380821115610e20578384fd5b818501915085601f830112610e33578384fd5b813581811115610e41578485fd5b8660208083028501011115610e54578485fd5b60209290920196919550909350505050565b600060208284031215610e77578081fd5b8151610bc8816114a9565b600080600060608486031215610e96578081fd5b8335610ea181611491565b92506020840135610eb181611491565b929592945050506040919091013590565b600080600060608486031215610e96578283fd5b60008060008060808587031215610eeb578081fd5b8451610ef681611491565b60208601519094506001600160501b0381168114610f12578182fd5b6040860151909350610f23816114a9565b6060860151909250610f34816114a9565b939692955090935050565b60008060008060608587031215610f54578384fd5b8435610f5f81611491565b93506020850135925060408501356001600160401b03811115610f80578283fd5b610f8c87828801610d5e565b95989497509550505050565b60008060008060008060008060006101008a8c031215610fb6578485fd5b8935610fc181611491565b985060208a01356001600160401b03811115610fdb578586fd5b610fe78c828d01610d5e565b90995097505060408a0135955060608a0135945060808a013561100981611491565b935060a08a013561101981611491565b8093505060c08a0135915060e08a013590509295985092959850929598565b600060208284031215611049578081fd5b5051919050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b6000825161108c818460208701611465565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0393841681529183166020830152909116604082015260600190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b90815260200190565b600060208252610c8c602083018486611050565b600060e0825261115560e083018a8c611050565b60208301989098525060408101959095526001600160a01b03938416606086015291909216608084015260a083019190915260c09091015292915050565b60006020825282518060208401526111b2816040850160208701611465565b601f01601f19169190910160400192915050565b6020808252601d908201527f546f726e61646f526f757465723a206f6e6c79476f7665726e616e6365000000604082015260600190565b60208082526023908201527f546f726e61646f526f757465723a20696e7374616e6365206e6f7420656e61626040820152621b195960ea1b606082015260800190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b60208082526022908201527f544f524e3a2063616e206e6f742073656e6420746f207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b6020808252601e908201527f544f524e3a20747279696e6720746f2073656e6420302062616c616e63650000604082015260600190565b60208082526036908201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60408201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b606082015260800190565b60208082526023908201527f546f726e61646f526f757465723a206f6e6c79496e7374616e6365526567697360408201526274727960e81b606082015260800190565b6000808335601e19843603018112611437578283fd5b8301803591506001600160401b03821115611450578283fd5b602001915036819003821315610d9d57600080fd5b60005b83811015611480578181015183820152602001611468565b83811115610ae85750506000910152565b6001600160a01b03811681146114a657600080fd5b50565b80151581146114a657600080fdfefa28df43db3553771f7209dcef046f3bdfea15870ab625dcda30ac58b82b4008a2646970667358221220526b6f98f0226b043a554c9a0c6eb190a453d379dbf6d0b0804bec30140c148764736f6c634300060c0033", "sourceMap": "938:4825:67:-:0;;;1841:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1903:48;;-1:-1:-1;;;;;;1903:48:67;;;938:4825;;146:263:-1;;261:2;249:9;240:7;236:23;232:32;229:2;;;-1:-1;;267:12;229:2;83:13;;-1:-1;;;;;576:54;;701:35;;691:2;;-1:-1;;740:12;691:2;319:74;223:186;-1:-1;;;223:186::o;:::-;938:4825:67;;;;;;;;;;;", "linkReferences": {} }, "deployedBytecode": { "object": "0x6080604052600436106100975760003560e01c806313d98d131461009c57806336a3874b146100b15780634655478f146100dc57806347ff589d146100f1578063485cc955146101065780634b704c971461012657806354fd4d50146101465780636485ba2a1461016857806364cb281114610188578063b438689f146101a8578063baaa2169146101bb578063cea9d26f146101db575b600080fd5b6100af6100aa366004610f3f565b6101fb565b005b3480156100bd57600080fd5b506100c66103da565b6040516100d39190611096565b60405180910390f35b3480156100e857600080fd5b506100c66103ef565b3480156100fd57600080fd5b506100c6610413565b34801561011257600080fd5b506100af610121366004610dc0565b610422565b34801561013257600080fd5b506100af610141366004610ec2565b610530565b34801561015257600080fd5b5061015b6105ba565b6040516100d39190611193565b34801561017457600080fd5b506100af610183366004610df8565b6105e5565b34801561019457600080fd5b506100af6101a3366004610da4565b61063c565b6100af6101b6366004610f98565b6106da565b3480156101c757600080fd5b506100af6101d6366004610da4565b610862565b3480156101e757600080fd5b506100af6101f6366004610e82565b6108fc565b60008054604051636695ad4960e11b815282918291620100009091046001600160a01b03169063cd2b5a9290610235908a90600401611096565b60806040518083038186803b15801561024d57600080fd5b505afa158015610261573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102859190610ed6565b93509350509250806102b25760405162461bcd60e51b81526004016102a9906111fd565b60405180910390fd5b8115610340576103403330896001600160a01b0316638bca6d166040518163ffffffff1660e01b815260040160206040518083038186803b1580156102f657600080fd5b505afa15801561030a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061032e9190611038565b6001600160a01b038716929190610a90565b60405163b214faa560e01b81526001600160a01b0388169063b214faa590349061036e908a90600401611124565b6000604051808303818588803b15801561038757600080fd5b505af115801561039b573d6000803e3d6000fd5b5050505050336001600160a01b03166000805160206114b883398151915286866040516103c992919061112d565b60405180910390a250505050505050565b6000546201000090046001600160a01b031681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6001546001600160a01b031681565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461046a5760405162461bcd60e51b81526004016102a9906111c6565b600054610100900460ff16806104835750610483610aee565b80610491575060005460ff16155b6104ad5760405162461bcd60e51b81526004016102a990611240565b600054610100900460ff161580156104d8576000805460ff1961ff0019909116610100171660011790555b6000805462010000600160b01b031916620100006001600160a01b038681169190910291909117909155600180546001600160a01b031916918416919091179055801561052b576000805461ff00191690555b505050565b6000546201000090046001600160a01b031633146105605760405162461bcd60e51b81526004016102a9906113de565b6105746001600160a01b0384168383610af4565b816001600160a01b03167fab1e93ce08cc196e636fe318c052f82163b40e499a90a0fdb38912ecd5beae11826040516105ad9190611124565b60405180910390a2505050565b6040805180820190915260118152703b1916b7b930b1b63296b6b0b730b3b2b960791b602082015290565b60005b8181101561052b57336000805160206114b883398151915284848481811061060c57fe5b905060200281019061061e9190611421565b60405161062c92919061112d565b60405180910390a26001016105e8565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106845760405162461bcd60e51b81526004016102a9906111c6565b600180546001600160a01b0319166001600160a01b0383161790556040517fd3c0577a88b56268da0350a01cb491fb15be69982729d9cb066a0603d1fc54b8906106cf908390611096565b60405180910390a150565b60008054604051636695ad4960e11b8152620100009091046001600160a01b03169063cd2b5a9290610710908d90600401611096565b60806040518083038186803b15801561072857600080fd5b505afa15801561073c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107609190610ed6565b9350505050806107825760405162461bcd60e51b81526004016102a9906111fd565b600154604051631168473b60e21b81526001600160a01b03909116906345a11cec906107b690339088908f906004016110aa565b600060405180830381600087803b1580156107d057600080fd5b505af11580156107e4573d6000803e3d6000fd5b50506040516310d056db60e11b81526001600160a01b038d1692506321a0adb691503490610824908d908d908d908d908d908d908d908d90600401611141565b6000604051808303818588803b15801561083d57600080fd5b505af1158015610851573d6000803e3d6000fd5b505050505050505050505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108aa5760405162461bcd60e51b81526004016102a9906111c6565b6000805462010000600160b01b031916620100006001600160a01b038416021790556040517fcea779b12676b53bc3062b0064b8a14145a271c42db27627a1895a67324f64cb906106cf908390611096565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109445760405162461bcd60e51b81526004016102a9906111c6565b6001600160a01b03821661096a5760405162461bcd60e51b81526004016102a9906112c5565b6001600160a01b0383166109c6574760006109858284610bb7565b6040519091506001600160a01b0385169082156108fc029083906000818181858888f193505050501580156109be573d6000803e3d6000fd5b50505061052b565b6040516370a0823160e01b81526000906001600160a01b038516906370a08231906109f5903090600401611096565b60206040518083038186803b158015610a0d57600080fd5b505afa158015610a21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a459190611038565b90506000610a538284610bb7565b905060008111610a755760405162461bcd60e51b81526004016102a990611351565b610a896001600160a01b0386168583610bcf565b5050505050565b610ae8846323b872dd60e01b858585604051602401610ab1939291906110e7565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610bee565b50505050565b303b1590565b801580610b7c5750604051636eb1769f60e11b81526001600160a01b0384169063dd62ed3e90610b2a90309086906004016110cd565b60206040518083038186803b158015610b4257600080fd5b505afa158015610b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7a9190611038565b155b610b985760405162461bcd60e51b81526004016102a990611388565b61052b8363095ea7b360e01b8484604051602401610ab192919061110b565b6000818310610bc65781610bc8565b825b9392505050565b61052b8363a9059cbb60e01b8484604051602401610ab192919061110b565b6060610c43826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610c7d9092919063ffffffff16565b80519091501561052b5780806020019051810190610c619190610e66565b61052b5760405162461bcd60e51b81526004016102a990611307565b6060610c8c8484600085610c94565b949350505050565b6060610c9f85610d58565b610cbb5760405162461bcd60e51b81526004016102a99061128e565b60006060866001600160a01b03168587604051610cd8919061107a565b60006040518083038185875af1925050503d8060008114610d15576040519150601f19603f3d011682016040523d82523d6000602084013e610d1a565b606091505b50915091508115610d2e579150610c8c9050565b805115610d3e5780518082602001fd5b8360405162461bcd60e51b81526004016102a99190611193565b3b151590565b60008083601f840112610d6f578182fd5b5081356001600160401b03811115610d85578182fd5b602083019150836020828501011115610d9d57600080fd5b9250929050565b600060208284031215610db5578081fd5b8135610bc881611491565b60008060408385031215610dd2578081fd5b8235610ddd81611491565b91506020830135610ded81611491565b809150509250929050565b60008060208385031215610e0a578182fd5b82356001600160401b0380821115610e20578384fd5b818501915085601f830112610e33578384fd5b813581811115610e41578485fd5b8660208083028501011115610e54578485fd5b60209290920196919550909350505050565b600060208284031215610e77578081fd5b8151610bc8816114a9565b600080600060608486031215610e96578081fd5b8335610ea181611491565b92506020840135610eb181611491565b929592945050506040919091013590565b600080600060608486031215610e96578283fd5b60008060008060808587031215610eeb578081fd5b8451610ef681611491565b60208601519094506001600160501b0381168114610f12578182fd5b6040860151909350610f23816114a9565b6060860151909250610f34816114a9565b939692955090935050565b60008060008060608587031215610f54578384fd5b8435610f5f81611491565b93506020850135925060408501356001600160401b03811115610f80578283fd5b610f8c87828801610d5e565b95989497509550505050565b60008060008060008060008060006101008a8c031215610fb6578485fd5b8935610fc181611491565b985060208a01356001600160401b03811115610fdb578586fd5b610fe78c828d01610d5e565b90995097505060408a0135955060608a0135945060808a013561100981611491565b935060a08a013561101981611491565b8093505060c08a0135915060e08a013590509295985092959850929598565b600060208284031215611049578081fd5b5051919050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b6000825161108c818460208701611465565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0393841681529183166020830152909116604082015260600190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b90815260200190565b600060208252610c8c602083018486611050565b600060e0825261115560e083018a8c611050565b60208301989098525060408101959095526001600160a01b03938416606086015291909216608084015260a083019190915260c09091015292915050565b60006020825282518060208401526111b2816040850160208701611465565b601f01601f19169190910160400192915050565b6020808252601d908201527f546f726e61646f526f757465723a206f6e6c79476f7665726e616e6365000000604082015260600190565b60208082526023908201527f546f726e61646f526f757465723a20696e7374616e6365206e6f7420656e61626040820152621b195960ea1b606082015260800190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b60208082526022908201527f544f524e3a2063616e206e6f742073656e6420746f207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b6020808252601e908201527f544f524e3a20747279696e6720746f2073656e6420302062616c616e63650000604082015260600190565b60208082526036908201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60408201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b606082015260800190565b60208082526023908201527f546f726e61646f526f757465723a206f6e6c79496e7374616e6365526567697360408201526274727960e81b606082015260800190565b6000808335601e19843603018112611437578283fd5b8301803591506001600160401b03821115611450578283fd5b602001915036819003821315610d9d57600080fd5b60005b83811015611480578181015183820152602001611468565b83811115610ae85750506000910152565b6001600160a01b03811681146114a657600080fd5b50565b80151581146114a657600080fdfefa28df43db3553771f7209dcef046f3bdfea15870ab625dcda30ac58b82b4008a2646970667358221220526b6f98f0226b043a554c9a0c6eb190a453d379dbf6d0b0804bec30140c148764736f6c634300060c0033", "sourceMap": "938:4825:67:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2558:558;;;;;;:::i;:::-;;:::i;:::-;;1250:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1159:47;;;;;;;;;;;;;:::i;1333:38::-;;;;;;;;;;;;;:::i;2255:297::-;;;;;;;;;;-1:-1:-1;2255:297:67;;;;;:::i;:::-;;:::i;4815:234::-;;;;;;;;;;-1:-1:-1;4815:234:67;;;;;:::i;:::-;;:::i;5655:106::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;3761:214::-;;;;;;;;;;-1:-1:-1;3761:214:67;;;;;:::i;:::-;;:::i;5314:246::-;;;;;;;;;;-1:-1:-1;5314:246:67;;;;;:::i;:::-;;:::i;3122:633::-;;;;;;:::i;:::-;;:::i;5055:253::-;;;;;;;;;;-1:-1:-1;5055:253:67;;;;;:::i;:::-;;:::i;3981:739::-;;;;;;;;;;-1:-1:-1;3981:739:67;;;;;:::i;:::-;;:::i;2558:558::-;2716:12;2763:16;;:39;;-1:-1:-1;;;2763:39:67;;2716:12;;;;2763:16;;;;-1:-1:-1;;;;;2763:16:67;;:29;;:39;;2793:8;;2763:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2715:87;;;;;;;2821:9;2813:57;;;;-1:-1:-1;;;2813:57:67;;;;;;;:::i;:::-;;;;;;;;;2885:7;2881:112;;;2908:74;2931:10;2951:4;2958:8;-1:-1:-1;;;;;2958:21:67;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2908:22:67;;;;:74;:22;:74::i;:::-;3003:49;;-1:-1:-1;;;3003:49:67;;-1:-1:-1;;;;;3003:16:67;;;-1:-1:-1;;3028:9:67;;3003:49;;3040:11;;3003:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3082:10:67;;-1:-1:-1;;;;;;;;;;;;;;3094:14:67;;3068:41;;;;;;;:::i;:::-;;;;;;;;2558:558;;;;;;;:::o;1250:40::-;;;;;;-1:-1:-1;;;;;1250:40:67;;:::o;1159:47::-;;;:::o;1333:38::-;;;-1:-1:-1;;;;;1333:38:67;;:::o;2255:297::-;2175:22;-1:-1:-1;;;;;2161:36:67;:10;:36;2153:78;;;;-1:-1:-1;;;2153:78:67;;;;;;;:::i;:::-;1426:13:21::1;::::0;::::1;::::0;::::1;;;::::0;:33:::1;;;1443:16;:14;:16::i;:::-;1426:50;;;-1:-1:-1::0;1464:12:21::1;::::0;::::1;;1463:13;1426:50;1418:109;;;::::0;-1:-1:-1;;;1418:109:21;;::::1;::::0;::::1;;;:::i;:::-;1538:19;1561:13:::0;::::1;::::0;::::1;;;1560:14;1584:98:::0;::::1;;;1618:13;:20:::0;;-1:-1:-1;;;;1618:20:21;;::::1;;;1652:19;1634:4;1652:19;::::0;;1584:98:::1;2416:16:67::2;:61:::0;;-1:-1:-1;;;;;;2416:61:67::2;-1:-1:-1::0;;;;;;2416:61:67;;::::2;::::0;;;::::2;::::0;;;::::2;::::0;;;-1:-1:-1;2487:58:67;;-1:-1:-1;;;;;;2487:58:67::2;::::0;;::::2;::::0;;;::::2;::::0;;1704:66:21;::::1;;;1754:5;1738:21:::0;;-1:-1:-1;;1738:21:21::1;::::0;;1704:66:::1;2241:1:67;2255:297:::0;;:::o;4815:234::-;2036:16;;;;;-1:-1:-1;;;;;2036:16:67;2014:10;:39;2006:87;;;;-1:-1:-1;;;2006:87:67;;;;;;;:::i;:::-;4958:37:::1;-1:-1:-1::0;;;;;4958:18:67;::::1;4977:8:::0;4987:7;4958:18:::1;:37::i;:::-;5010:32;::::0;-1:-1:-1;;;;;5010:32:67;::::1;::::0;::::1;::::0;::::1;::::0;5034:7;;5010:32:::1;:::i;:::-;;;;;;;;4815:234:::0;;;:::o;5655:106::-;5728:26;;;;;;;;;;;;-1:-1:-1;;;5728:26:67;;;;;5655:106::o;3761:214::-;3846:9;3841:128;3861:26;;;3841:128;;;3927:10;-1:-1:-1;;;;;;;;;;;3939:15:67;;3955:1;3939:18;;;;;;;;;;;;;;;;;;:::i;:::-;3913:45;;;;;;;:::i;:::-;;;;;;;;3889:3;;3841:128;;5314:246;2175:22;-1:-1:-1;;;;;2161:36:67;:10;:36;2153:78;;;;-1:-1:-1;;;2153:78:67;;;;;;;:::i;:::-;5417:15:::1;:66:::0;;-1:-1:-1;;;;;;5417:66:67::1;-1:-1:-1::0;;;;;5417:66:67;::::1;;::::0;;5498:55:::1;::::0;::::1;::::0;::::1;::::0;5417:66;;5498:55:::1;:::i;:::-;;;;;;;;5314:246:::0;:::o;3122:633::-;3422:14;3440:16;;:39;;-1:-1:-1;;;3440:39:67;;:16;;;;-1:-1:-1;;;;;3440:16:67;;:29;;:39;;3470:8;;3440:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3417:62;;;;;3498:9;3490:57;;;;-1:-1:-1;;;3490:57:67;;;;;;;:::i;:::-;3558:15;;:52;;-1:-1:-1;;;3558:52:67;;-1:-1:-1;;;;;3558:15:67;;;;:20;;:52;;3579:10;;3591:8;;3601;;3558:52;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3621:127:67;;-1:-1:-1;;;3621:127:67;;-1:-1:-1;;;;;3621:17:67;;;-1:-1:-1;3621:17:67;;-1:-1:-1;3647:9:67;;3621:127;;3672:6;;;;3680:5;;3687:14;;3703:10;;3715:8;;3725:4;;3731:7;;3621:127;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3122:633;;;;;;;;;;:::o;5055:253::-;2175:22;-1:-1:-1;;;;;2161:36:67;:10;:36;2153:78;;;;-1:-1:-1;;;2153:78:67;;;;;;;:::i;:::-;5160:16:::1;:69:::0;;-1:-1:-1;;;;;;5160:69:67::1;-1:-1:-1::0;;;;;;5160:69:67;::::1;;;::::0;;5244:57:::1;::::0;::::1;::::0;::::1;::::0;5160:69;;5244:57:::1;:::i;3981:739::-:0;2175:22;-1:-1:-1;;;;;2161:36:67;:10;:36;2153:78;;;;-1:-1:-1;;;2153:78:67;;;;;;;:::i;:::-;-1:-1:-1;;;;;4132:17:67;::::1;4124:64;;;::::0;-1:-1:-1;;;4124:64:67;;::::1;::::0;::::1;;;:::i;:::-;-1:-1:-1::0;;;;;4203:19:67;::::1;4199:515;;4286:21;4263:20;4339:31;4286:21:::0;4362:7;4339:8:::1;:31::i;:::-;4384:21;::::0;4321:49;;-1:-1:-1;;;;;;4384:12:67;::::1;::::0;:21:::1;::::0;::::1;;::::0;4321:49;;4384:21:::1;::::0;;;4321:49;4384:12;:21;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;4199:515;;;;;4494:31;::::0;-1:-1:-1;;;4494:31:67;;4471:20:::1;::::0;-1:-1:-1;;;;;4494:16:67;::::1;::::0;-1:-1:-1;;4494:31:67::1;::::0;4519:4:::1;::::0;4494:31:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4471:54;;4539:15;4557:31;4566:12;4580:7;4557:8;:31::i;:::-;4539:49;;4620:1;4610:7;:11;4602:54;;;::::0;-1:-1:-1;;;4602:54:67;;::::1;::::0;::::1;;;:::i;:::-;4670:33;-1:-1:-1::0;;;;;4670:19:67;::::1;4690:3:::0;4695:7;4670:19:::1;:33::i;:::-;4199:515;;3981:739:::0;;;:::o;877:203:28:-;977:96;997:5;1027:27;;;1056:4;1062:2;1066:5;1004:68;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1004:68:28;;;;;;;;;;;;;;-1:-1:-1;;;;;1004:68:28;-1:-1:-1;;;;;;1004:68:28;;;;;;;;;;;977:19;:96::i;:::-;877:203;;;;:::o;1866:593:21:-;2302:4;2410:17;2445:7;1866:593;:::o;1340:613:28:-;1705:10;;;1704:62;;-1:-1:-1;1721:39:28;;-1:-1:-1;;;1721:39:28;;-1:-1:-1;;;;;1721:15:28;;;;;:39;;1745:4;;1752:7;;1721:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:44;1704:62;1696:150;;;;-1:-1:-1;;;1696:150:28;;;;;;;:::i;:::-;1856:90;1876:5;1906:22;;;1930:7;1939:5;1883:62;;;;;;;;;:::i;391:104:19:-;449:7;479:1;475;:5;:13;;487:1;475:13;;;483:1;475:13;468:20;391:104;-1:-1:-1;;;391:104:19:o;696:175:28:-;778:86;798:5;828:23;;;853:2;857:5;805:58;;;;;;;;;:::i;2959:751::-;3404:69;;;;;;;;;;;;;;;;;;3378:23;;3404:69;;-1:-1:-1;;;;;3404:27:28;;;3432:4;;3404:27;:69::i;:::-;3487:17;;3378:95;;-1:-1:-1;3487:21:28;3483:221;;3627:10;3616:30;;;;;;;;;;;;:::i;:::-;3608:85;;;;-1:-1:-1;;;3608:85:28;;;;;;;:::i;3573:194:29:-;3676:12;3707:53;3730:6;3738:4;3744:1;3747:12;3707:22;:53::i;:::-;3700:60;3573:194;-1:-1:-1;;;;3573:194:29:o;4920:958::-;5050:12;5082:18;5093:6;5082:10;:18::i;:::-;5074:60;;;;-1:-1:-1;;;5074:60:29;;;;;;;:::i;:::-;5205:12;5219:23;5246:6;-1:-1:-1;;;;;5246:11:29;5266:8;5277:4;5246:36;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5204:78;;;;5296:7;5292:580;;;5326:10;-1:-1:-1;5319:17:29;;-1:-1:-1;5319:17:29;5292:580;5437:17;;:21;5433:429;;5695:10;5689:17;5755:15;5742:10;5738:2;5734:19;5727:44;5644:145;5827:20;;-1:-1:-1;;;5827:20:29;;;;5834:12;;5827:20;;;:::i;718:413::-;1078:20;1116:8;;;718:413::o;968:336:-1:-;;;1082:3;1075:4;1067:6;1063:17;1059:27;1049:2;;-1:-1;;1090:12;1049:2;-1:-1;1120:20;;-1:-1;;;;;1149:30;;1146:2;;;-1:-1;;1182:12;1146:2;1226:4;1218:6;1214:17;1202:29;;1277:3;1226:4;1257:17;1218:6;1243:32;;1240:41;1237:2;;;1294:1;;1284:12;1237:2;1042:262;;;;;:::o;2260:241::-;;2364:2;2352:9;2343:7;2339:23;2335:32;2332:2;;;-1:-1;;2370:12;2332:2;85:6;72:20;97:33;124:5;97:33;:::i;2508:366::-;;;2629:2;2617:9;2608:7;2604:23;2600:32;2597:2;;;-1:-1;;2635:12;2597:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;2687:63;-1:-1;2787:2;2826:22;;72:20;97:33;72:20;97:33;:::i;:::-;2795:63;;;;2591:283;;;;;:::o;2881:419::-;;;3031:2;3019:9;3010:7;3006:23;3002:32;2999:2;;;-1:-1;;3037:12;2999:2;3082:31;;-1:-1;;;;;3122:30;;;3119:2;;;-1:-1;;3155:12;3119:2;3267:6;3256:9;3252:22;;;452:3;445:4;437:6;433:17;429:27;419:2;;-1:-1;;460:12;419:2;503:6;490:20;3133:18;522:6;519:30;516:2;;;-1:-1;;552:12;516:2;647:3;3031:2;;631:6;627:17;588:6;613:32;;610:41;607:2;;;-1:-1;;654:12;607:2;3031;584:17;;;;;3175:109;;-1:-1;2993:307;;-1:-1;;;;2993:307::o;3307:257::-;;3419:2;3407:9;3398:7;3394:23;3390:32;3387:2;;;-1:-1;;3425:12;3387:2;763:6;757:13;775:30;799:5;775:30;:::i;3571:539::-;;;;3733:2;3721:9;3712:7;3708:23;3704:32;3701:2;;;-1:-1;;3739:12;3701:2;1408:6;1395:20;1420:49;1463:5;1420:49;:::i;:::-;3791:79;-1:-1;3907:2;3954:22;;217:20;242:41;217:20;242:41;:::i;:::-;3695:415;;3915:71;;-1:-1;;;4023:2;4062:22;;;;1910:20;;3695:415::o;4117:523::-;;;;4271:2;4259:9;4250:7;4246:23;4242:32;4239:2;;;-1:-1;;4277:12;4647:690;;;;;4822:3;4810:9;4801:7;4797:23;4793:33;4790:2;;;-1:-1;;4829:12;4790:2;1581:6;1575:13;1593:49;1636:5;1593:49;:::i;:::-;5008:2;5057:22;;2198:13;4881:90;;-1:-1;;;;;;24355:34;;27296;;27286:2;;-1:-1;;27334:12;27286:2;5126;5173:22;;757:13;5016:73;;-1:-1;775:30;757:13;775:30;:::i;:::-;5242:2;5289:22;;757:13;5134:71;;-1:-1;775:30;757:13;775:30;:::i;:::-;4784:553;;;;-1:-1;4784:553;;-1:-1;;4784:553::o;5344:667::-;;;;;5527:2;5515:9;5506:7;5502:23;5498:32;5495:2;;;-1:-1;;5533:12;5495:2;1760:6;1747:20;1772:59;1825:5;1772:59;:::i;:::-;5585:89;-1:-1;5711:2;5750:22;;884:20;;-1:-1;5847:2;5832:18;;5819:32;-1:-1;;;;;5860:30;;5857:2;;;-1:-1;;5893:12;5857:2;5931:64;5987:7;5978:6;5967:9;5963:22;5931:64;:::i;:::-;5489:522;;;;-1:-1;5913:82;-1:-1;;;;5489:522::o;6018:1329::-;;;;;;;;;;6302:3;6290:9;6281:7;6277:23;6273:33;6270:2;;;-1:-1;;6309:12;6270:2;1760:6;1747:20;1772:59;1825:5;1772:59;:::i;:::-;6361:89;-1:-1;6515:2;6500:18;;6487:32;-1:-1;;;;;6528:30;;6525:2;;;-1:-1;;6561:12;6525:2;6599:64;6655:7;6646:6;6635:9;6631:22;6599:64;:::i;:::-;6581:82;;-1:-1;6581:82;-1:-1;;6700:2;6739:22;;884:20;;-1:-1;6808:2;6847:22;;884:20;;-1:-1;6916:3;6964:22;;217:20;242:41;217:20;242:41;:::i;:::-;6925:71;-1:-1;7033:3;7081:22;;217:20;242:41;217:20;242:41;:::i;:::-;7042:71;;;;7150:3;7194:9;7190:22;1910:20;7159:63;;7259:3;7303:9;7299:22;1910:20;7268:63;;6264:1083;;;;;;;;;;;:::o;7354:263::-;;7469:2;7457:9;7448:7;7444:23;7440:32;7437:2;;;-1:-1;;7475:12;7437:2;-1:-1;2058:13;;7431:186;-1:-1;7431:186::o;8180:297::-;;23093:6;23088:3;23081:19;25822:6;25817:3;23130:4;23125:3;23121:14;25799:30;-1:-1;23130:4;25869:6;23125:3;25860:16;;25853:27;23130:4;26255:7;;26259:2;8463:6;26239:14;26235:28;23125:3;8432:39;;8425:46;;8280:197;;;;;:::o;13212:271::-;;8645:5;22808:12;8756:52;8801:6;8796:3;8789:4;8782:5;8778:16;8756:52;:::i;:::-;8820:16;;;;;13346:137;-1:-1;;13346:137::o;13490:222::-;-1:-1;;;;;24149:54;;;;7860:45;;13617:2;13602:18;;13588:124::o;13719:528::-;-1:-1;;;;;24149:54;;;7703:58;;24149:54;;;14124:2;14109:18;;7703:58;24149:54;;;14233:2;14218:18;;8945:76;13944:2;13929:18;;13915:332::o;14254:333::-;-1:-1;;;;;24149:54;;;7860:45;;24149:54;;14573:2;14558:18;;7860:45;14409:2;14394:18;;14380:207::o;14594:444::-;-1:-1;;;;;24149:54;;;7860:45;;24149:54;;;;14941:2;14926:18;;7860:45;15024:2;15009:18;;8108:37;;;;14777:2;14762:18;;14748:290::o;15045:333::-;-1:-1;;;;;24149:54;;;;7860:45;;15364:2;15349:18;;8108:37;15200:2;15185:18;;15171:207::o;15385:222::-;8108:37;;;15512:2;15497:18;;15483:124::o;15614:326::-;;15769:2;15790:17;15783:47;15844:86;15769:2;15758:9;15754:18;15916:6;15908;15844:86;:::i;15947:1060::-;;16302:3;16324:17;16317:47;16378:86;16302:3;16291:9;16287:19;16450:6;16442;16378:86;:::i;:::-;16543:2;16528:18;;8108:37;;;;-1:-1;16626:2;16611:18;;8108:37;;;;-1:-1;;;;;24149:54;;;16725:2;16710:18;;7860:45;24149:54;;;;16824:3;16809:19;;7860:45;-1:-1;16893:19;;8108:37;;;;16992:3;16977:19;;;8108:37;;16370:94;-1:-1;;16273:734::o;17855:310::-;;18002:2;18023:17;18016:47;9546:5;22808:12;23093:6;18002:2;17991:9;17987:18;23081:19;9640:52;9685:6;23121:14;17991:9;23121:14;18002:2;9666:5;9662:16;9640:52;:::i;:::-;26255:7;26239:14;-1:-1;;26235:28;9704:39;;;;23121:14;9704:39;;17973:192;-1:-1;;17973:192::o;18172:416::-;18372:2;18386:47;;;9980:2;18357:18;;;23081:19;10016:31;23121:14;;;9996:52;10067:12;;;18343:245::o;18595:416::-;18795:2;18809:47;;;10318:2;18780:18;;;23081:19;10354:34;23121:14;;;10334:55;-1:-1;;;10409:12;;;10402:27;10448:12;;;18766:245::o;19018:416::-;19218:2;19232:47;;;10699:2;19203:18;;;23081:19;10735:34;23121:14;;;10715:55;-1:-1;;;10790:12;;;10783:38;10840:12;;;19189:245::o;19441:416::-;19641:2;19655:47;;;11091:2;19626:18;;;23081:19;11127:31;23121:14;;;11107:52;11178:12;;;19612:245::o;19864:416::-;20064:2;20078:47;;;11429:2;20049:18;;;23081:19;11465:34;23121:14;;;11445:55;-1:-1;;;11520:12;;;11513:26;11558:12;;;20035:245::o;20287:416::-;20487:2;20501:47;;;11809:2;20472:18;;;23081:19;11845:34;23121:14;;;11825:55;-1:-1;;;11900:12;;;11893:34;11946:12;;;20458:245::o;20710:416::-;20910:2;20924:47;;;12197:2;20895:18;;;23081:19;12233:32;23121:14;;;12213:53;12285:12;;;20881:245::o;21133:416::-;21333:2;21347:47;;;12536:2;21318:18;;;23081:19;12572:34;23121:14;;;12552:55;-1:-1;;;12627:12;;;12620:46;12685:12;;;21304:245::o;21556:416::-;21756:2;21770:47;;;12936:2;21741:18;;;23081:19;12972:34;23121:14;;;12952:55;-1:-1;;;13027:12;;;13020:27;13066:12;;;21727:245::o;22208:506::-;;;22343:11;22330:25;22394:48;;22418:8;22402:14;22398:29;22394:48;22374:18;22370:73;22360:2;;-1:-1;;22447:12;22360:2;22474:33;;22528:18;;;-1:-1;;;;;;22555:30;;22552:2;;;-1:-1;;22588:12;22552:2;22433:4;22616:13;;-1:-1;22402:14;22648:38;;;22638:49;;22635:2;;;22700:1;;22690:12;25895:268;25960:1;25967:101;25981:6;25978:1;25975:13;25967:101;;;26048:11;;;26042:18;26029:11;;;26022:39;26003:2;25996:10;25967:101;;;26083:6;26080:1;26077:13;26074:2;;;-1:-1;;25960:1;26130:16;;26123:27;25944:219::o;26276:117::-;-1:-1;;;;;24149:54;;26335:35;;26325:2;;26384:1;;26374:12;26325:2;26319:74;:::o;26540:111::-;26621:5;23744:13;23737:21;26599:5;26596:32;26586:2;;26642:1;;26632:12", "linkReferences": {}, "immutableReferences": { "39241": [ { "start": 1009, "length": 32 }, { "start": 1069, "length": 32 }, { "start": 1607, "length": 32 }, { "start": 2157, "length": 32 }, { "start": 2311, "length": 32 } ] } }, "methodIdentifiers": { "approveTokenForInstance(address,address,uint256)": "4b704c97", "backupNotes(bytes[])": "6485ba2a", "deposit(address,bytes32,bytes)": "13d98d13", "governanceProxyAddress()": "4655478f", "initialize(address,address)": "485cc955", "instanceRegistry()": "36a3874b", "relayerRegistry()": "47ff589d", "rescueTokens(address,address,uint256)": "cea9d26f", "setInstanceRegistry(address)": "baaa2169", "setRelayerRegistry(address)": "64cb2811", "version()": "54fd4d50", "withdraw(address,bytes,bytes32,bytes32,address,address,uint256,uint256)": "b438689f" }, "rawMetadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_governanceProxyAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"encryptedNote\",\"type\":\"bytes\"}],\"name\":\"EncryptedNote\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newInstanceRegistryProxyAddress\",\"type\":\"address\"}],\"name\":\"InstanceRegistryUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newRelayerRegistryProxyAddress\",\"type\":\"address\"}],\"name\":\"RelayerRegistryUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenApproved\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"approveTokenForInstance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"_encryptedNotes\",\"type\":\"bytes[]\"}],\"name\":\"backupNotes\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ITornadoInstance\",\"name\":\"_tornado\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_encryptedNote\",\"type\":\"bytes\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"governanceProxyAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_instanceRegistryAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_relayerRegistryAddress\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"instanceRegistry\",\"outputs\":[{\"internalType\":\"contract InstanceRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"relayerRegistry\",\"outputs\":[{\"internalType\":\"contract RelayerRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"rescueTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newInstanceRegistryProxyAddress\",\"type\":\"address\"}],\"name\":\"setInstanceRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newRelayerRegistryProxyAddress\",\"type\":\"address\"}],\"name\":\"setRelayerRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ITornadoInstance\",\"name\":\"_tornado\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_proof\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"_root\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_nullifierHash\",\"type\":\"bytes32\"},{\"internalType\":\"address payable\",\"name\":\"_recipient\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"_relayer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_refund\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"AlienTornadosaurusHex\",\"details\":\"This is an improved version of the TornadoRouter with a modified design from the original contract.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"TornadoRouter\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"This contracts is a router for all Tornado Cash deposits and withdrawals\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/v2/TornadoRouter.sol\":\"TornadoRouter\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":base/=src/base/\",\":common/=src/common/\",\":ds-test/=lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\",\":src/=src/\",\":torn-token/=lib/torn-token/\",\":tornado-anonymity-mining/=lib/tornado-anonymity-mining/\",\":tornado-governance/=lib/tornado-governance/\",\":v3-core/=lib/v3-core/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/GSN/Context.sol\":{\"keccak256\":\"0xdb26cbf4d028490f49831a7865c2fe1b28db44b535ca8d343785a3b768aae183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://840b14ce0315c47d49ba328f1f9fa7654ded1c9e1559e6c5e777a7b2dc28bf0a\",\"dweb:/ipfs/QmTLLabn4wcfGro9LEmUXUN2nwKqZSotXMvjDCLXEnLtZP\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0x4bd6402ca6b3419008c2b482aff54e66836e8cb4eba2680e42ac5884ae6424fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8f9f711fb8d0d92aeea1c327e3845d13ca1fa8f142e47f8723cd5b3106fb29a3\",\"dweb:/ipfs/QmVQUReDW9f4zGqhizwHnyU8EntMs95tbASdqkGncnikba\"]},\"lib/openzeppelin-contracts/contracts/math/Math.sol\":{\"keccak256\":\"0x6c234834003dfb86e2c23d12dfdde7cc01e78013d71b52162cb308b4873562cb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f0e3f39b2ec26694a42c89a5d9e489d5228f1880fcf5e375c5c975ba816e5ffe\",\"dweb:/ipfs/QmUErheHopnbBUSLDQAtWsmw6HsEvqTNp1QiBEuSJhmhHn\"]},\"lib/openzeppelin-contracts/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x9a9cf02622cd7a64261b10534fc3260449da25c98c9e96d1b4ae8110a20e5806\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2df142592d1dc267d9549049ee3317fa190d2f87eaa565f86ab05ec83f7ab8f5\",\"dweb:/ipfs/QmSkJtcfWo7c42KnL5hho6GFxK6HRNV91XABx1P7xDtfLV\"]},\"lib/openzeppelin-contracts/contracts/proxy/Initializable.sol\":{\"keccak256\":\"0x8eee8bd8c216a3e437bf7a4c9844348f47a2d990e5b06cd96d250e33ab04c25a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6bb2af880b12be26b148ee99ac3a984168e7fc74721bab9cd44598a0669b038\",\"dweb:/ipfs/QmPfFDaXZbThJgaVim7nvxrw1RuD2xKWCG89K6pznmC8pJ\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x91e0bd6a6762d2a1700dab0849de8422611355100576c4beef1e80d82a4104a0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://73bbd77af0a8b07255d2ffa20728bcf13b116007c9ddac5d37046cfabb0e1e02\",\"dweb:/ipfs/QmRgZgWCWCSMTTaok6o4QvWA6MgB4goS8qpb3sN7bAvaZ9\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20Burnable.sol\":{\"keccak256\":\"0x657b0d90be17331364211d74359df2a734fac864f6e88c80de7626fa33090ffb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09cca25fefa2354a424d55a97930c76b11dc50697ba62c85d7affc27a37e830c\",\"dweb:/ipfs/QmPTQBYXxQDSNmMKqwe4WnM8E7NwnpLnkFLSRH8hZRvrVK\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x5c26b39d26f7ed489e555d955dcd3e01872972e71fdd1528e93ec164e4f23385\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://efdc632af6960cf865dbc113665ea1f5b90eab75cc40ec062b2f6ae6da582017\",\"dweb:/ipfs/QmfAZFDuG62vxmAN9DnXApv7e7PMzPqi4RkqqZHLMSQiY5\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0xf3b30f8a49631420635a8c35daacfcaa338012755f18a76fdd118730256f9a27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0d7de652204c2ee291a61aa984103dfc7ae4392d651fbbc44a0079caee7c69a3\",\"dweb:/ipfs/Qmcw1cQnq9eWDnrCBwU3TNyqLfTMUFg5YKpYUkELoMPuUE\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xf5fa8cbdffa5ef8be49b246b5628facc30b71707e78a45d80d93b64eff3fe390\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://774e78a9ff32792cc95db4d2ceaf3a7965bb7f0bea5e6cb7cff182b450d44b37\",\"dweb:/ipfs/QmRRMC4uj7eAcLW7chynA3sNEYULMFazdLwQHKHQPyzAbA\"]},\"lib/openzeppelin-contracts/contracts/utils/Pausable.sol\":{\"keccak256\":\"0x5d1b1dcbc0396f44c1c8d554857f71e3187503bf1e54062bf9ec6782e21f3a08\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9aa7fa580393aab7ca3d9f606f5ab7434d51e1c0f3632a593fca82c80ef8cc4c\",\"dweb:/ipfs/QmRy84N7QfkwBM2AeR7UB5G1PPHdRLi6s1iyzAwCzevcHe\"]},\"lib/torn-token/contracts/ECDSA.sol\":{\"keccak256\":\"0x79bc426cde97fc18147ad737052762a49c2bc93699f5cd9e81e5a4b1e8a96b17\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b25864983a11bd200d2fb25f83e5ac91a8f377296b6672893c3f13a0320af572\",\"dweb:/ipfs/QmWbf22DMWcNQ2ULDzniro1tPte8TaEZFU9TzXZtLfkiba\"]},\"lib/torn-token/contracts/ENS.sol\":{\"keccak256\":\"0x1a74cb3f0207ddf9ce92b9725f55059a14729368a2cd63f6cd7684aa02fcc68d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddda0ae37080cc88928a95370ea17eb62f14a3d7a2d46447493ed44c0a951337\",\"dweb:/ipfs/QmXG2wVG16h868yBNiJ2E6q2hbHtun5qYecqTp6Zbs2cn9\"]},\"lib/torn-token/contracts/ERC20Permit.sol\":{\"keccak256\":\"0x530676f79a4182eb975f031a5c49bd8908fd561eba7daaeec564439e35c49836\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5c45e95d4c466a23502d42830c774a51acf8566bff3cd4f8b1043fb0c988bff0\",\"dweb:/ipfs/QmPLvuAJQ43dcvvFiryjrJTs3GhARx2GMBUGn3bttePQvZ\"]},\"lib/torn-token/contracts/TORN.sol\":{\"keccak256\":\"0x42d542e7d9b8185bc3d01bec0c7273d31a142b2a5d0a0bfcb6f84976a0fb509c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a1b429a6fb7c9571acbd11e307c707a342a84f8e1f2bc15c215b68d45382893\",\"dweb:/ipfs/QmWoGXkYgzikypE4z7pPyZdEGQt1TRK3RHhLvp6W3n6skC\"]},\"lib/tornado-anonymity-mining/contracts/interfaces/ITornadoInstance.sol\":{\"keccak256\":\"0x4191422cb515705b52466027deaedb8549e472537df2fa8a53eb8dab4c719c1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1decd6abd16969b24a25374bb9c568427a94d074befa8b14a8388dfd357adcf4\",\"dweb:/ipfs/Qmb6e2VR9Fxnzy9gjUFTJecdaBABbbRzEVttK8KQCi53Zz\"]},\"lib/tornado-governance/contracts/v2-vault-and-gas/interfaces/ITornadoVault.sol\":{\"keccak256\":\"0xe21637c2f70be34aff3f07e32a043cedf82e5572f17829c6eaa16b348a21ca35\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://675c164cc2956b972c24439393aba8a7103f2ed5a17d11233232cef02fc1a9fa\",\"dweb:/ipfs/QmQ7isKW7bxuHvFn213rdoEBuTjTku3gEDNbWtB4tC5JU3\"]},\"lib/v3-core/contracts/interfaces/IUniswapV3Factory.sol\":{\"keccak256\":\"0xcc3d0c93fc9ac0febbe09f941b465b57f750bcf3b48432da0b97dc289cfdc489\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b9379ad954680c44a0bc523b314ae4c4da735f9fe1d02aa56ea5bdba6f1136f2\",\"dweb:/ipfs/QmZXdgQNXKAckrXWz9R3mc47F1fvDvr28a2ewJrwNAw71B\"]},\"lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol\":{\"keccak256\":\"0xfe6113d518466cd6652c85b111e01f33eb62157f49ae5ed7d5a3947a2044adb1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1c42b9e6f5902ac38dd43e25750939baa7e0c1425dc75afd717c4412731065d5\",\"dweb:/ipfs/QmWaoacnzsucTvBME2o7YgZBZMhaHv7fkj83htHMVWJKWh\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\":{\"keccak256\":\"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5\",\"dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\":{\"keccak256\":\"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7\",\"dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\":{\"keccak256\":\"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03\",\"dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\":{\"keccak256\":\"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047\",\"dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\":{\"keccak256\":\"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735\",\"dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\":{\"keccak256\":\"0x852dc1f5df7dcf7f11e7bb3eed79f0cea72ad4b25f6a9d2c35aafb48925fd49f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ed63907c38ff36b0e22bc9ffc53e791ea74f0d4f0e7c257fdfb5aaf8825b1f0f\",\"dweb:/ipfs/QmSQrckghEjs6HVsA5GVgpNpZWvTXMY5eQLF7cN6deFeEg\"]},\"lib/v3-core/contracts/libraries/FullMath.sol\":{\"keccak256\":\"0x50e87f7a3197525d1c6f7e04290060e848677c8a4e86c554bc6ace4a4d0d476d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3874093a6b37d8e68f9475a91f8eb0a1c808cb6153c84cfe6c37909505a4d24e\",\"dweb:/ipfs/QmUqGpQqvSHX4SwUvcBCs9g4ZhR9JPhgD3615oUigAhtjj\"]},\"lib/v3-core/contracts/libraries/LowGasSafeMath.sol\":{\"keccak256\":\"0xe8bfdbbb772332bff49d5e40f2533ed6285f6b53f553779b12ca4f2d23adba80\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://173e8eb626b4f31fcfae86846075c07045de237072e0544bf71a7168d8bbbb4c\",\"dweb:/ipfs/QmSTGJ9B2qsHwupg3qfjnd5wfRfKiXj786KoPzPcqzpcyA\"]},\"lib/v3-core/contracts/libraries/TickMath.sol\":{\"keccak256\":\"0xda8c2c0b12d2976acfd364453ba5f5bf0117ba3c91175ee9e1067d3fb26944d9\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://3f3d2d7c2723c91830c74d96292f28fc1cfe28d388cdb9c1a5ebadb4c2b96f81\",\"dweb:/ipfs/QmYU4wk8MEm33wVWR38LoncvR7b8PP1mLuGBKX3dUpYJVE\"]},\"lib/v3-periphery/contracts/libraries/OracleLibrary.sol\":{\"keccak256\":\"0x19517bf2478c3ec56253f37b48adde7f34a6acdb467e329f74d79f9e72e2a63f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c2a6c20fb775e7a55ff9d6eb6f13982ca019e9fec3caecda5b21b6671335a5c1\",\"dweb:/ipfs/QmannSYDmR9Novyks8KRHe4u4PajfvkGU39owUBzfwy4rn\"]},\"lib/v3-periphery/contracts/libraries/PoolAddress.sol\":{\"keccak256\":\"0x5edd84eb8ba7c12fd8cb6cffe52e1e9f3f6464514ee5f539c2283826209035a2\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f375d0e6d5ea3674e1aa6f112b021e9a86721a6a2f3cb22d673378b30cf0e840\",\"dweb:/ipfs/QmWJir2qnJyp963mU6U3jEEx9i3H3V5BgKawAfSnG1pC8w\"]},\"src/v1/RelayerRegistry.sol\":{\"keccak256\":\"0x1d6891499ac2f695e793f4a2b7baed0e7a18ff5914b5253821ebc50a77c782cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dbb0db5573900ba9e95b26586563c7a9110a340a718d4859267eadae97649af8\",\"dweb:/ipfs/QmeWhAuijGSmRNXA6Ak4VkxttjiQVWZ4zEhbWhMkZKnvNc\"]},\"src/v1/interfaces/IENS.sol\":{\"keccak256\":\"0x87c80e0171500b48d27bb0a755b4d39456e06dcbd933b58e8f5b87c1c3801ffa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://861361a14de14752f92d9b6970db045a5723a217169a9f31bf23f09f45a2a62c\",\"dweb:/ipfs/QmcroHgR19W1Q13Gnyuy8Jz6JNQRBg29gTYfE9vvLSizmz\"]},\"src/v1/interfaces/ITornadoGovernance.sol\":{\"keccak256\":\"0x2d0dcef36ce6f0253842ef0018b77d6d78f37277512704485e4bd46815361755\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2e38471c53781cdfa9b4e1fcbb269b8b53538f15b47ac98a94627e954469eedc\",\"dweb:/ipfs/QmaziThzmm3GWTMm4mHK7g8dfxnigsNAea4CXTyqDhEsm8\"]},\"src/v1/libraries/UniswapV3OracleHelper.sol\":{\"keccak256\":\"0x195f3dd9a0c5d1eb94d16bb37c81c7cc385cae3d4312cf6c726c1590bed09825\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb50afd519913e6a1bc2e7fb9d1d164cfccb2c73d8999a117c443ca1e4ccb359\",\"dweb:/ipfs/QmaaETZMRGsqwaKTyBd3rYt28FX7vipWSPdk8TMhjkXaEd\"]},\"src/v1/staking/TornadoStakingRewards.sol\":{\"keccak256\":\"0x6a28ab49ed99ed5425f693d66ea642be89276df00b7acbfe01d7ce5b91d4961f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c85e501bf562edb7b0bcd295f3368b024cee0744f828dd479dee777d6388462e\",\"dweb:/ipfs/QmUZW5pYamQZ4jGmvxkRYaP5zde3jKWVZVrHhWaNPViL5t\"]},\"src/v1/tornado-proxy/FeeManager.sol\":{\"keccak256\":\"0x8673b18b341b88e14b22d69eb53807f5c2b22013ee9141d147581e778c5a8a79\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bfff3be5479ee3790aa05e14abc5973253c834986719f98de2e11b9a0a22144b\",\"dweb:/ipfs/QmNZMvjTWNffdVg4TuvTu9BKLuSDq4JCmDgtbBfQSkKCRv\"]},\"src/v1/tornado-proxy/InstanceRegistry.sol\":{\"keccak256\":\"0x05e71dd64c375c792b3de49d056cbcc4320ef11ef6eb53893d5da0b34ff81eb9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2c0a4821c6af8f036ebd04774ab06a152518578c5181c82aa992c3372d7c0a67\",\"dweb:/ipfs/QmVCStgcq9XVU6D2MUK29Yu3CPWcgkSWfVcUaB8PYQgdP7\"]},\"src/v1/tornado-proxy/TornadoRouter.sol\":{\"keccak256\":\"0x542deec857cd3890853be01279c070d5c9b57cd91c37bd5a47f043d8a10c5894\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://754884b828960f0be4d3a39b317db83c00b5011a9129efad6f38a9b768478834\",\"dweb:/ipfs/QmfMpBmmPhFDoLpijBhScpK8GpvxzDkbK4Np9cbqLou7mJ\"]},\"src/v1/utils/ENSNamehash.sol\":{\"keccak256\":\"0x23cfca6c28ed4e68d959700f2fd3fc497ea6b1d381298ef7749e97c1af849b88\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3ff128bd602cc7851baeab3b7d60e42fc0943f43193c4f94aceb8e26a39710b7\",\"dweb:/ipfs/QmRaDvU2HW4tirEuSjEDBP4z7UTSBx8FWGCLxUJdmZW5SP\"]},\"src/v2/InstanceRegistry.sol\":{\"keccak256\":\"0xe64ee02ad33c182e9b78f5d5ebc868f753208d5d10a31785bccb81644778dbe7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a920f392c498cffdd07b5617108c85e544b4ee2d8431b64dcfb1d105cbc09e31\",\"dweb:/ipfs/QmTQ3U8i6AF338jUVCedvVFjk4h9jNyAmY8WZQw9zT2Htz\"]},\"src/v2/TornadoRouter.sol\":{\"keccak256\":\"0x40913fa941327535ccb0ff148f5c818ea64bedf5eed90309109d9bbeebbdc31f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a68dff41ca8f1619471cc07a9bcb3a09c30eeee7281297942b8c7d50ac78206e\",\"dweb:/ipfs/QmdDNjreLjLn3B2wsw5YZ87h9VpX2bYEa18eJfv5pHE2uq\"]},\"src/v2/libraries/BytesUtils.sol\":{\"keccak256\":\"0xf4f38d28724e3ef15b8bf80a00031406ebff8834b56380ed0db8c21f9d2980bc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://904db267bad76d521e7aef6f7633db84fc6982a5e32bb1fa9ec849a6a540dd06\",\"dweb:/ipfs/QmTuchPeqjcYuarfn2aQrSV36ady5c65TjTMkQg1KYGxVz\"]},\"src/v2/libraries/NameEncoder.sol\":{\"keccak256\":\"0x86e5359d1c930794d87687de0eab0f76703493b2594fbc3a267d10e95a75d176\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://21fe140c0874b0df477cfd94abcf3894499488eaa5af6de88ab3efd4d2ee4ea4\",\"dweb:/ipfs/Qmf646tAaiLeqTSWLTuLXXzW9mYt6VKdopgdtXn5KGHuGy\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.6.12+commit.27d51765" }, "language": "Solidity", "output": { "abi": [ { "inputs": [ { "internalType": "address", "name": "_governanceProxyAddress", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address", "indexed": true }, { "internalType": "bytes", "name": "encryptedNote", "type": "bytes", "indexed": false } ], "type": "event", "name": "EncryptedNote", "anonymous": false }, { "inputs": [ { "internalType": "address", "name": "newInstanceRegistryProxyAddress", "type": "address", "indexed": false } ], "type": "event", "name": "InstanceRegistryUpdated", "anonymous": false }, { "inputs": [ { "internalType": "address", "name": "newRelayerRegistryProxyAddress", "type": "address", "indexed": false } ], "type": "event", "name": "RelayerRegistryUpdated", "anonymous": false }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address", "indexed": true }, { "internalType": "uint256", "name": "amount", "type": "uint256", "indexed": false } ], "type": "event", "name": "TokenApproved", "anonymous": false }, { "inputs": [ { "internalType": "contract IERC20", "name": "_token", "type": "address" }, { "internalType": "address", "name": "_spender", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function", "name": "approveTokenForInstance" }, { "inputs": [ { "internalType": "bytes[]", "name": "_encryptedNotes", "type": "bytes[]" } ], "stateMutability": "nonpayable", "type": "function", "name": "backupNotes" }, { "inputs": [ { "internalType": "contract ITornadoInstance", "name": "_tornado", "type": "address" }, { "internalType": "bytes32", "name": "_commitment", "type": "bytes32" }, { "internalType": "bytes", "name": "_encryptedNote", "type": "bytes" } ], "stateMutability": "payable", "type": "function", "name": "deposit" }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "governanceProxyAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ] }, { "inputs": [ { "internalType": "address", "name": "_instanceRegistryAddress", "type": "address" }, { "internalType": "address", "name": "_relayerRegistryAddress", "type": "address" } ], "stateMutability": "nonpayable", "type": "function", "name": "initialize" }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "instanceRegistry", "outputs": [ { "internalType": "contract InstanceRegistry", "name": "", "type": "address" } ] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "relayerRegistry", "outputs": [ { "internalType": "contract RelayerRegistry", "name": "", "type": "address" } ] }, { "inputs": [ { "internalType": "contract IERC20", "name": "_token", "type": "address" }, { "internalType": "address payable", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function", "name": "rescueTokens" }, { "inputs": [ { "internalType": "address", "name": "_newInstanceRegistryProxyAddress", "type": "address" } ], "stateMutability": "nonpayable", "type": "function", "name": "setInstanceRegistry" }, { "inputs": [ { "internalType": "address", "name": "_newRelayerRegistryProxyAddress", "type": "address" } ], "stateMutability": "nonpayable", "type": "function", "name": "setRelayerRegistry" }, { "inputs": [], "stateMutability": "pure", "type": "function", "name": "version", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ] }, { "inputs": [ { "internalType": "contract ITornadoInstance", "name": "_tornado", "type": "address" }, { "internalType": "bytes", "name": "_proof", "type": "bytes" }, { "internalType": "bytes32", "name": "_root", "type": "bytes32" }, { "internalType": "bytes32", "name": "_nullifierHash", "type": "bytes32" }, { "internalType": "address payable", "name": "_recipient", "type": "address" }, { "internalType": "address payable", "name": "_relayer", "type": "address" }, { "internalType": "uint256", "name": "_fee", "type": "uint256" }, { "internalType": "uint256", "name": "_refund", "type": "uint256" } ], "stateMutability": "payable", "type": "function", "name": "withdraw" } ], "devdoc": { "kind": "dev", "methods": {}, "version": 1 }, "userdoc": { "kind": "user", "methods": {}, "version": 1 } }, "settings": { "remappings": [ ":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/", ":@uniswap/v3-core/=lib/v3-core/", ":@uniswap/v3-periphery/=lib/v3-periphery/", ":base/=src/base/", ":common/=src/common/", ":ds-test/=lib/ds-test/src/", ":forge-std/=lib/forge-std/src/", ":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/", ":solmate/=lib/solmate/src/", ":src/=src/", ":torn-token/=lib/torn-token/", ":tornado-anonymity-mining/=lib/tornado-anonymity-mining/", ":tornado-governance/=lib/tornado-governance/", ":v3-core/=lib/v3-core/", ":v3-periphery/=lib/v3-periphery/contracts/" ], "optimizer": { "enabled": true, "runs": 1 }, "metadata": { "bytecodeHash": "ipfs" }, "compilationTarget": { "src/v2/TornadoRouter.sol": "TornadoRouter" }, "libraries": {} }, "sources": { "lib/openzeppelin-contracts/contracts/GSN/Context.sol": { "keccak256": "0xdb26cbf4d028490f49831a7865c2fe1b28db44b535ca8d343785a3b768aae183", "urls": [ "bzz-raw://840b14ce0315c47d49ba328f1f9fa7654ded1c9e1559e6c5e777a7b2dc28bf0a", "dweb:/ipfs/QmTLLabn4wcfGro9LEmUXUN2nwKqZSotXMvjDCLXEnLtZP" ], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/access/Ownable.sol": { "keccak256": "0x4bd6402ca6b3419008c2b482aff54e66836e8cb4eba2680e42ac5884ae6424fc", "urls": [ "bzz-raw://8f9f711fb8d0d92aeea1c327e3845d13ca1fa8f142e47f8723cd5b3106fb29a3", "dweb:/ipfs/QmVQUReDW9f4zGqhizwHnyU8EntMs95tbASdqkGncnikba" ], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/math/Math.sol": { "keccak256": "0x6c234834003dfb86e2c23d12dfdde7cc01e78013d71b52162cb308b4873562cb", "urls": [ "bzz-raw://f0e3f39b2ec26694a42c89a5d9e489d5228f1880fcf5e375c5c975ba816e5ffe", "dweb:/ipfs/QmUErheHopnbBUSLDQAtWsmw6HsEvqTNp1QiBEuSJhmhHn" ], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/math/SafeMath.sol": { "keccak256": "0x9a9cf02622cd7a64261b10534fc3260449da25c98c9e96d1b4ae8110a20e5806", "urls": [ "bzz-raw://2df142592d1dc267d9549049ee3317fa190d2f87eaa565f86ab05ec83f7ab8f5", "dweb:/ipfs/QmSkJtcfWo7c42KnL5hho6GFxK6HRNV91XABx1P7xDtfLV" ], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/proxy/Initializable.sol": { "keccak256": "0x8eee8bd8c216a3e437bf7a4c9844348f47a2d990e5b06cd96d250e33ab04c25a", "urls": [ "bzz-raw://c6bb2af880b12be26b148ee99ac3a984168e7fc74721bab9cd44598a0669b038", "dweb:/ipfs/QmPfFDaXZbThJgaVim7nvxrw1RuD2xKWCG89K6pznmC8pJ" ], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol": { "keccak256": "0x91e0bd6a6762d2a1700dab0849de8422611355100576c4beef1e80d82a4104a0", "urls": [ "bzz-raw://73bbd77af0a8b07255d2ffa20728bcf13b116007c9ddac5d37046cfabb0e1e02", "dweb:/ipfs/QmRgZgWCWCSMTTaok6o4QvWA6MgB4goS8qpb3sN7bAvaZ9" ], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/token/ERC20/ERC20Burnable.sol": { "keccak256": "0x657b0d90be17331364211d74359df2a734fac864f6e88c80de7626fa33090ffb", "urls": [ "bzz-raw://09cca25fefa2354a424d55a97930c76b11dc50697ba62c85d7affc27a37e830c", "dweb:/ipfs/QmPTQBYXxQDSNmMKqwe4WnM8E7NwnpLnkFLSRH8hZRvrVK" ], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol": { "keccak256": "0x5c26b39d26f7ed489e555d955dcd3e01872972e71fdd1528e93ec164e4f23385", "urls": [ "bzz-raw://efdc632af6960cf865dbc113665ea1f5b90eab75cc40ec062b2f6ae6da582017", "dweb:/ipfs/QmfAZFDuG62vxmAN9DnXApv7e7PMzPqi4RkqqZHLMSQiY5" ], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/token/ERC20/SafeERC20.sol": { "keccak256": "0xf3b30f8a49631420635a8c35daacfcaa338012755f18a76fdd118730256f9a27", "urls": [ "bzz-raw://0d7de652204c2ee291a61aa984103dfc7ae4392d651fbbc44a0079caee7c69a3", "dweb:/ipfs/Qmcw1cQnq9eWDnrCBwU3TNyqLfTMUFg5YKpYUkELoMPuUE" ], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/utils/Address.sol": { "keccak256": "0xf5fa8cbdffa5ef8be49b246b5628facc30b71707e78a45d80d93b64eff3fe390", "urls": [ "bzz-raw://774e78a9ff32792cc95db4d2ceaf3a7965bb7f0bea5e6cb7cff182b450d44b37", "dweb:/ipfs/QmRRMC4uj7eAcLW7chynA3sNEYULMFazdLwQHKHQPyzAbA" ], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/utils/Pausable.sol": { "keccak256": "0x5d1b1dcbc0396f44c1c8d554857f71e3187503bf1e54062bf9ec6782e21f3a08", "urls": [ "bzz-raw://9aa7fa580393aab7ca3d9f606f5ab7434d51e1c0f3632a593fca82c80ef8cc4c", "dweb:/ipfs/QmRy84N7QfkwBM2AeR7UB5G1PPHdRLi6s1iyzAwCzevcHe" ], "license": "MIT" }, "lib/torn-token/contracts/ECDSA.sol": { "keccak256": "0x79bc426cde97fc18147ad737052762a49c2bc93699f5cd9e81e5a4b1e8a96b17", "urls": [ "bzz-raw://b25864983a11bd200d2fb25f83e5ac91a8f377296b6672893c3f13a0320af572", "dweb:/ipfs/QmWbf22DMWcNQ2ULDzniro1tPte8TaEZFU9TzXZtLfkiba" ], "license": "MIT" }, "lib/torn-token/contracts/ENS.sol": { "keccak256": "0x1a74cb3f0207ddf9ce92b9725f55059a14729368a2cd63f6cd7684aa02fcc68d", "urls": [ "bzz-raw://ddda0ae37080cc88928a95370ea17eb62f14a3d7a2d46447493ed44c0a951337", "dweb:/ipfs/QmXG2wVG16h868yBNiJ2E6q2hbHtun5qYecqTp6Zbs2cn9" ], "license": "MIT" }, "lib/torn-token/contracts/ERC20Permit.sol": { "keccak256": "0x530676f79a4182eb975f031a5c49bd8908fd561eba7daaeec564439e35c49836", "urls": [ "bzz-raw://5c45e95d4c466a23502d42830c774a51acf8566bff3cd4f8b1043fb0c988bff0", "dweb:/ipfs/QmPLvuAJQ43dcvvFiryjrJTs3GhARx2GMBUGn3bttePQvZ" ], "license": "MIT" }, "lib/torn-token/contracts/TORN.sol": { "keccak256": "0x42d542e7d9b8185bc3d01bec0c7273d31a142b2a5d0a0bfcb6f84976a0fb509c", "urls": [ "bzz-raw://5a1b429a6fb7c9571acbd11e307c707a342a84f8e1f2bc15c215b68d45382893", "dweb:/ipfs/QmWoGXkYgzikypE4z7pPyZdEGQt1TRK3RHhLvp6W3n6skC" ], "license": "MIT" }, "lib/tornado-anonymity-mining/contracts/interfaces/ITornadoInstance.sol": { "keccak256": "0x4191422cb515705b52466027deaedb8549e472537df2fa8a53eb8dab4c719c1c", "urls": [ "bzz-raw://1decd6abd16969b24a25374bb9c568427a94d074befa8b14a8388dfd357adcf4", "dweb:/ipfs/Qmb6e2VR9Fxnzy9gjUFTJecdaBABbbRzEVttK8KQCi53Zz" ], "license": "MIT" }, "lib/tornado-governance/contracts/v2-vault-and-gas/interfaces/ITornadoVault.sol": { "keccak256": "0xe21637c2f70be34aff3f07e32a043cedf82e5572f17829c6eaa16b348a21ca35", "urls": [ "bzz-raw://675c164cc2956b972c24439393aba8a7103f2ed5a17d11233232cef02fc1a9fa", "dweb:/ipfs/QmQ7isKW7bxuHvFn213rdoEBuTjTku3gEDNbWtB4tC5JU3" ], "license": "MIT" }, "lib/v3-core/contracts/interfaces/IUniswapV3Factory.sol": { "keccak256": "0xcc3d0c93fc9ac0febbe09f941b465b57f750bcf3b48432da0b97dc289cfdc489", "urls": [ "bzz-raw://b9379ad954680c44a0bc523b314ae4c4da735f9fe1d02aa56ea5bdba6f1136f2", "dweb:/ipfs/QmZXdgQNXKAckrXWz9R3mc47F1fvDvr28a2ewJrwNAw71B" ], "license": "GPL-2.0-or-later" }, "lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol": { "keccak256": "0xfe6113d518466cd6652c85b111e01f33eb62157f49ae5ed7d5a3947a2044adb1", "urls": [ "bzz-raw://1c42b9e6f5902ac38dd43e25750939baa7e0c1425dc75afd717c4412731065d5", "dweb:/ipfs/QmWaoacnzsucTvBME2o7YgZBZMhaHv7fkj83htHMVWJKWh" ], "license": "GPL-2.0-or-later" }, "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol": { "keccak256": "0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634", "urls": [ "bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5", "dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ" ], "license": "GPL-2.0-or-later" }, "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol": { "keccak256": "0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5", "urls": [ "bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7", "dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c" ], "license": "GPL-2.0-or-later" }, "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol": { "keccak256": "0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd", "urls": [ "bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03", "dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39" ], "license": "GPL-2.0-or-later" }, "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol": { "keccak256": "0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7", "urls": [ "bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047", "dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3" ], "license": "GPL-2.0-or-later" }, "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol": { "keccak256": "0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235", "urls": [ "bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735", "dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u" ], "license": "GPL-2.0-or-later" }, "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol": { "keccak256": "0x852dc1f5df7dcf7f11e7bb3eed79f0cea72ad4b25f6a9d2c35aafb48925fd49f", "urls": [ "bzz-raw://ed63907c38ff36b0e22bc9ffc53e791ea74f0d4f0e7c257fdfb5aaf8825b1f0f", "dweb:/ipfs/QmSQrckghEjs6HVsA5GVgpNpZWvTXMY5eQLF7cN6deFeEg" ], "license": "GPL-2.0-or-later" }, "lib/v3-core/contracts/libraries/FullMath.sol": { "keccak256": "0x50e87f7a3197525d1c6f7e04290060e848677c8a4e86c554bc6ace4a4d0d476d", "urls": [ "bzz-raw://3874093a6b37d8e68f9475a91f8eb0a1c808cb6153c84cfe6c37909505a4d24e", "dweb:/ipfs/QmUqGpQqvSHX4SwUvcBCs9g4ZhR9JPhgD3615oUigAhtjj" ], "license": "MIT" }, "lib/v3-core/contracts/libraries/LowGasSafeMath.sol": { "keccak256": "0xe8bfdbbb772332bff49d5e40f2533ed6285f6b53f553779b12ca4f2d23adba80", "urls": [ "bzz-raw://173e8eb626b4f31fcfae86846075c07045de237072e0544bf71a7168d8bbbb4c", "dweb:/ipfs/QmSTGJ9B2qsHwupg3qfjnd5wfRfKiXj786KoPzPcqzpcyA" ], "license": "GPL-2.0-or-later" }, "lib/v3-core/contracts/libraries/TickMath.sol": { "keccak256": "0xda8c2c0b12d2976acfd364453ba5f5bf0117ba3c91175ee9e1067d3fb26944d9", "urls": [ "bzz-raw://3f3d2d7c2723c91830c74d96292f28fc1cfe28d388cdb9c1a5ebadb4c2b96f81", "dweb:/ipfs/QmYU4wk8MEm33wVWR38LoncvR7b8PP1mLuGBKX3dUpYJVE" ], "license": "GPL-2.0-or-later" }, "lib/v3-periphery/contracts/libraries/OracleLibrary.sol": { "keccak256": "0x19517bf2478c3ec56253f37b48adde7f34a6acdb467e329f74d79f9e72e2a63f", "urls": [ "bzz-raw://c2a6c20fb775e7a55ff9d6eb6f13982ca019e9fec3caecda5b21b6671335a5c1", "dweb:/ipfs/QmannSYDmR9Novyks8KRHe4u4PajfvkGU39owUBzfwy4rn" ], "license": "GPL-2.0-or-later" }, "lib/v3-periphery/contracts/libraries/PoolAddress.sol": { "keccak256": "0x5edd84eb8ba7c12fd8cb6cffe52e1e9f3f6464514ee5f539c2283826209035a2", "urls": [ "bzz-raw://f375d0e6d5ea3674e1aa6f112b021e9a86721a6a2f3cb22d673378b30cf0e840", "dweb:/ipfs/QmWJir2qnJyp963mU6U3jEEx9i3H3V5BgKawAfSnG1pC8w" ], "license": "GPL-2.0-or-later" }, "src/v1/RelayerRegistry.sol": { "keccak256": "0x1d6891499ac2f695e793f4a2b7baed0e7a18ff5914b5253821ebc50a77c782cc", "urls": [ "bzz-raw://dbb0db5573900ba9e95b26586563c7a9110a340a718d4859267eadae97649af8", "dweb:/ipfs/QmeWhAuijGSmRNXA6Ak4VkxttjiQVWZ4zEhbWhMkZKnvNc" ], "license": "MIT" }, "src/v1/interfaces/IENS.sol": { "keccak256": "0x87c80e0171500b48d27bb0a755b4d39456e06dcbd933b58e8f5b87c1c3801ffa", "urls": [ "bzz-raw://861361a14de14752f92d9b6970db045a5723a217169a9f31bf23f09f45a2a62c", "dweb:/ipfs/QmcroHgR19W1Q13Gnyuy8Jz6JNQRBg29gTYfE9vvLSizmz" ], "license": "MIT" }, "src/v1/interfaces/ITornadoGovernance.sol": { "keccak256": "0x2d0dcef36ce6f0253842ef0018b77d6d78f37277512704485e4bd46815361755", "urls": [ "bzz-raw://2e38471c53781cdfa9b4e1fcbb269b8b53538f15b47ac98a94627e954469eedc", "dweb:/ipfs/QmaziThzmm3GWTMm4mHK7g8dfxnigsNAea4CXTyqDhEsm8" ], "license": "MIT" }, "src/v1/libraries/UniswapV3OracleHelper.sol": { "keccak256": "0x195f3dd9a0c5d1eb94d16bb37c81c7cc385cae3d4312cf6c726c1590bed09825", "urls": [ "bzz-raw://fb50afd519913e6a1bc2e7fb9d1d164cfccb2c73d8999a117c443ca1e4ccb359", "dweb:/ipfs/QmaaETZMRGsqwaKTyBd3rYt28FX7vipWSPdk8TMhjkXaEd" ], "license": "MIT" }, "src/v1/staking/TornadoStakingRewards.sol": { "keccak256": "0x6a28ab49ed99ed5425f693d66ea642be89276df00b7acbfe01d7ce5b91d4961f", "urls": [ "bzz-raw://c85e501bf562edb7b0bcd295f3368b024cee0744f828dd479dee777d6388462e", "dweb:/ipfs/QmUZW5pYamQZ4jGmvxkRYaP5zde3jKWVZVrHhWaNPViL5t" ], "license": "MIT" }, "src/v1/tornado-proxy/FeeManager.sol": { "keccak256": "0x8673b18b341b88e14b22d69eb53807f5c2b22013ee9141d147581e778c5a8a79", "urls": [ "bzz-raw://bfff3be5479ee3790aa05e14abc5973253c834986719f98de2e11b9a0a22144b", "dweb:/ipfs/QmNZMvjTWNffdVg4TuvTu9BKLuSDq4JCmDgtbBfQSkKCRv" ], "license": "MIT" }, "src/v1/tornado-proxy/InstanceRegistry.sol": { "keccak256": "0x05e71dd64c375c792b3de49d056cbcc4320ef11ef6eb53893d5da0b34ff81eb9", "urls": [ "bzz-raw://2c0a4821c6af8f036ebd04774ab06a152518578c5181c82aa992c3372d7c0a67", "dweb:/ipfs/QmVCStgcq9XVU6D2MUK29Yu3CPWcgkSWfVcUaB8PYQgdP7" ], "license": "MIT" }, "src/v1/tornado-proxy/TornadoRouter.sol": { "keccak256": "0x542deec857cd3890853be01279c070d5c9b57cd91c37bd5a47f043d8a10c5894", "urls": [ "bzz-raw://754884b828960f0be4d3a39b317db83c00b5011a9129efad6f38a9b768478834", "dweb:/ipfs/QmfMpBmmPhFDoLpijBhScpK8GpvxzDkbK4Np9cbqLou7mJ" ], "license": "MIT" }, "src/v1/utils/ENSNamehash.sol": { "keccak256": "0x23cfca6c28ed4e68d959700f2fd3fc497ea6b1d381298ef7749e97c1af849b88", "urls": [ "bzz-raw://3ff128bd602cc7851baeab3b7d60e42fc0943f43193c4f94aceb8e26a39710b7", "dweb:/ipfs/QmRaDvU2HW4tirEuSjEDBP4z7UTSBx8FWGCLxUJdmZW5SP" ], "license": "MIT" }, "src/v2/InstanceRegistry.sol": { "keccak256": "0xe64ee02ad33c182e9b78f5d5ebc868f753208d5d10a31785bccb81644778dbe7", "urls": [ "bzz-raw://a920f392c498cffdd07b5617108c85e544b4ee2d8431b64dcfb1d105cbc09e31", "dweb:/ipfs/QmTQ3U8i6AF338jUVCedvVFjk4h9jNyAmY8WZQw9zT2Htz" ], "license": "MIT" }, "src/v2/TornadoRouter.sol": { "keccak256": "0x40913fa941327535ccb0ff148f5c818ea64bedf5eed90309109d9bbeebbdc31f", "urls": [ "bzz-raw://a68dff41ca8f1619471cc07a9bcb3a09c30eeee7281297942b8c7d50ac78206e", "dweb:/ipfs/QmdDNjreLjLn3B2wsw5YZ87h9VpX2bYEa18eJfv5pHE2uq" ], "license": "MIT" }, "src/v2/libraries/BytesUtils.sol": { "keccak256": "0xf4f38d28724e3ef15b8bf80a00031406ebff8834b56380ed0db8c21f9d2980bc", "urls": [ "bzz-raw://904db267bad76d521e7aef6f7633db84fc6982a5e32bb1fa9ec849a6a540dd06", "dweb:/ipfs/QmTuchPeqjcYuarfn2aQrSV36ady5c65TjTMkQg1KYGxVz" ], "license": "MIT" }, "src/v2/libraries/NameEncoder.sol": { "keccak256": "0x86e5359d1c930794d87687de0eab0f76703493b2594fbc3a267d10e95a75d176", "urls": [ "bzz-raw://21fe140c0874b0df477cfd94abcf3894499488eaa5af6de88ab3efd4d2ee4ea4", "dweb:/ipfs/Qmf646tAaiLeqTSWLTuLXXzW9mYt6VKdopgdtXn5KGHuGy" ], "license": "MIT" } }, "version": 1 }, "ast": { "absolutePath": "src/v2/TornadoRouter.sol", "id": 39622, "exportedSymbols": { "TornadoRouter": [ 39621 ] }, "nodeType": "SourceUnit", "src": "33:5731:67", "nodes": [ { "id": 39217, "nodeType": "PragmaDirective", "src": "33:24:67", "nodes": [], "literals": [ "solidity", "^", "0.6", ".12" ] }, { "id": 39218, "nodeType": "PragmaDirective", "src": "58:33:67", "nodes": [], "literals": [ "experimental", "ABIEncoderV2" ] }, { "id": 39220, "nodeType": "ImportDirective", "src": "108:72:67", "nodes": [], "absolutePath": "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", "scope": 39622, "sourceUnit": 30240, "symbolAliases": [ { "foreign": { "argumentTypes": null, "id": 39219, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": null, "src": "117:6:67", "typeDescriptions": { "typeIdentifier": null, "typeString": null } }, "local": null } ], "unitAlias": "" }, { "id": 39222, "nodeType": "ImportDirective", "src": "181:80:67", "nodes": [], "absolutePath": "lib/openzeppelin-contracts/contracts/proxy/Initializable.sol", "file": "@openzeppelin/contracts/proxy/Initializable.sol", "scope": 39622, "sourceUnit": 29231, "symbolAliases": [ { "foreign": { "argumentTypes": null, "id": 39221, "name": "Initializable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": null, "src": "190:13:67", "typeDescriptions": { "typeIdentifier": null, "typeString": null } }, "local": null } ], "unitAlias": "" }, { "id": 39224, "nodeType": "ImportDirective", "src": "262:78:67", "nodes": [], "absolutePath": "lib/openzeppelin-contracts/contracts/token/ERC20/SafeERC20.sol", "file": "@openzeppelin/contracts/token/ERC20/SafeERC20.sol", "scope": 39622, "sourceUnit": 30453, "symbolAliases": [ { "foreign": { "argumentTypes": null, "id": 39223, "name": "SafeERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": null, "src": "271:9:67", "typeDescriptions": { "typeIdentifier": null, "typeString": null } }, "local": null } ], "unitAlias": "" }, { "id": 39226, "nodeType": "ImportDirective", "src": "341:61:67", "nodes": [], "absolutePath": "lib/openzeppelin-contracts/contracts/math/Math.sol", "file": "@openzeppelin/contracts/math/Math.sol", "scope": 39622, "sourceUnit": 28964, "symbolAliases": [ { "foreign": { "argumentTypes": null, "id": 39225, "name": "Math", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": null, "src": "350:4:67", "typeDescriptions": { "typeIdentifier": null, "typeString": null } }, "local": null } ], "unitAlias": "" }, { "id": 39228, "nodeType": "ImportDirective", "src": "424:102:67", "nodes": [], "absolutePath": "lib/tornado-anonymity-mining/contracts/interfaces/ITornadoInstance.sol", "file": "tornado-anonymity-mining/contracts/interfaces/ITornadoInstance.sol", "scope": 39622, "sourceUnit": 31585, "symbolAliases": [ { "foreign": { "argumentTypes": null, "id": 39227, "name": "ITornadoInstance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": null, "src": "433:16:67", "typeDescriptions": { "typeIdentifier": null, "typeString": null } }, "local": null } ], "unitAlias": "" }, { "id": 39230, "nodeType": "ImportDirective", "src": "546:60:67", "nodes": [], "absolutePath": "src/v1/RelayerRegistry.sol", "file": "../v1/RelayerRegistry.sol", "scope": 39622, "sourceUnit": 35364, "symbolAliases": [ { "foreign": { "argumentTypes": null, "id": 39229, "name": "RelayerRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": null, "src": "555:15:67", "typeDescriptions": { "typeIdentifier": null, "typeString": null } }, "local": null } ], "unitAlias": "" }, { "id": 39233, "nodeType": "ImportDirective", "src": "607:72:67", "nodes": [], "absolutePath": "src/v2/InstanceRegistry.sol", "file": "./InstanceRegistry.sol", "scope": 39622, "sourceUnit": 39216, "symbolAliases": [ { "foreign": { "argumentTypes": null, "id": 39231, "name": "InstanceRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": null, "src": "616:16:67", "typeDescriptions": { "typeIdentifier": null, "typeString": null } }, "local": null }, { "foreign": { "argumentTypes": null, "id": 39232, "name": "InstanceData", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": null, "src": "634:12:67", "typeDescriptions": { "typeIdentifier": null, "typeString": null } }, "local": null } ], "unitAlias": "" }, { "id": 39621, "nodeType": "ContractDefinition", "src": "938:4825:67", "nodes": [ { "id": 39239, "nodeType": "UsingForDirective", "src": "984:27:67", "nodes": [], "libraryName": { "contractScope": null, "id": 39237, "name": "SafeERC20", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 30452, "src": "990:9:67", "typeDescriptions": { "typeIdentifier": "t_contract$_SafeERC20_$30452", "typeString": "library SafeERC20" } }, "typeName": { "contractScope": null, "id": 39238, "name": "IERC20", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 30239, "src": "1004:6:67", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$30239", "typeString": "contract IERC20" } } }, { "id": 39241, "nodeType": "VariableDeclaration", "src": "1159:47:67", "nodes": [], "constant": false, "functionSelector": "4655478f", "mutability": "immutable", "name": "governanceProxyAddress", "overrides": null, "scope": 39621, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 39240, "name": "address", "nodeType": "ElementaryTypeName", "src": "1159:7:67", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "public" }, { "id": 39243, "nodeType": "VariableDeclaration", "src": "1250:40:67", "nodes": [], "constant": false, "functionSelector": "36a3874b", "mutability": "mutable", "name": "instanceRegistry", "overrides": null, "scope": 39621, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_InstanceRegistry_$39215", "typeString": "contract InstanceRegistry" }, "typeName": { "contractScope": null, "id": 39242, "name": "InstanceRegistry", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 39215, "src": "1250:16:67", "typeDescriptions": { "typeIdentifier": "t_contract$_InstanceRegistry_$39215", "typeString": "contract InstanceRegistry" } }, "value": null, "visibility": "public" }, { "id": 39245, "nodeType": "VariableDeclaration", "src": "1333:38:67", "nodes": [], "constant": false, "functionSelector": "47ff589d", "mutability": "mutable", "name": "relayerRegistry", "overrides": null, "scope": 39621, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_RelayerRegistry_$35363", "typeString": "contract RelayerRegistry" }, "typeName": { "contractScope": null, "id": 39244, "name": "RelayerRegistry", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 35363, "src": "1333:15:67", "typeDescriptions": { "typeIdentifier": "t_contract$_RelayerRegistry_$35363", "typeString": "contract RelayerRegistry" } }, "value": null, "visibility": "public" }, { "id": 39251, "nodeType": "EventDefinition", "src": "1466:65:67", "nodes": [], "anonymous": false, "documentation": null, "name": "EncryptedNote", "parameters": { "id": 39250, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 39247, "indexed": true, "mutability": "mutable", "name": "sender", "nodeType": "VariableDeclaration", "overrides": null, "scope": 39251, "src": "1486:22:67", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 39246, "name": "address", "nodeType": "ElementaryTypeName", "src": "1486:7:67", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 39249, "indexed": false, "mutability": "mutable", "name": "encryptedNote", "nodeType": "VariableDeclaration", "overrides": null, "scope": 39251, "src": "1510:19:67", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes" }, "typeName": { "id": 39248, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1510:5:67", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "value": null, "visibility": "internal" } ], "src": "1485:45:67" } }, { "id": 39257, "nodeType": "EventDefinition", "src": "1536:61:67", "nodes": [], "anonymous": false, "documentation": null, "name": "TokenApproved", "parameters": { "id": 39256, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 39253, "indexed": true, "mutability": "mutable", "name": "spender", "nodeType": "VariableDeclaration", "overrides": null, "scope": 39257, "src": "1556:23:67", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 39252, "name": "address", "nodeType": "ElementaryTypeName", "src": "1556:7:67", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 39255, "indexed": false, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 39257, "src": "1581:14:67", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 39254, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1581:7:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "1555:41:67" } }, { "id": 39261, "nodeType": "EventDefinition", "src": "1603:71:67", "nodes": [], "anonymous": false, "documentation": null, "name": "InstanceRegistryUpdated", "parameters": { "id": 39260, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 39259, "indexed": false, "mutability": "mutable", "name": "newInstanceRegistryProxyAddress", "nodeType": "VariableDeclaration", "overrides": null, "scope": 39261, "src": "1633:39:67", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 39258, "name": "address", "nodeType": "ElementaryTypeName", "src": "1633:7:67", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "1632:41:67" } }, { "id": 39265, "nodeType": "EventDefinition", "src": "1679:69:67", "nodes": [], "anonymous": false, "documentation": null, "name": "RelayerRegistryUpdated", "parameters": { "id": 39264, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 39263, "indexed": false, "mutability": "mutable", "name": "newRelayerRegistryProxyAddress", "nodeType": "VariableDeclaration", "overrides": null, "scope": 39265, "src": "1708:38:67", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 39262, "name": "address", "nodeType": "ElementaryTypeName", "src": "1708:7:67", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "1707:40:67" } }, { "id": 39275, "nodeType": "FunctionDefinition", "src": "1841:117:67", "nodes": [], "body": { "id": 39274, "nodeType": "Block", "src": "1893:65:67", "nodes": [], "statements": [ { "expression": { "argumentTypes": null, "id": 39272, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 39270, "name": "governanceProxyAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39241, "src": "1903:22:67", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 39271, "name": "_governanceProxyAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39267, "src": "1928:23:67", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "1903:48:67", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 39273, "nodeType": "ExpressionStatement", "src": "1903:48:67" } ] }, "documentation": null, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "overrides": null, "parameters": { "id": 39268, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 39267, "mutability": "mutable", "name": "_governanceProxyAddress", "nodeType": "VariableDeclaration", "overrides": null, "scope": 39275, "src": "1853:31:67", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 39266, "name": "address", "nodeType": "ElementaryTypeName", "src": "1853:7:67", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "1852:33:67" }, "returnParameters": { "id": 39269, "nodeType": "ParameterList", "parameters": [], "src": "1893:0:67" }, "scope": 39621, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "id": 39290, "nodeType": "ModifierDefinition", "src": "1964:147:67", "nodes": [], "body": { "id": 39289, "nodeType": "Block", "src": "1996:115:67", "nodes": [], "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 39284, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 39278, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "2014:3:67", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 39279, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2014:10:67", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 39282, "name": "instanceRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39243, "src": "2036:16:67", "typeDescriptions": { "typeIdentifier": "t_contract$_InstanceRegistry_$39215", "typeString": "contract InstanceRegistry" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_InstanceRegistry_$39215", "typeString": "contract InstanceRegistry" } ], "id": 39281, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2028:7:67", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 39280, "name": "address", "nodeType": "ElementaryTypeName", "src": "2028:7:67", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 39283, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2028:25:67", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "2014:39:67", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "546f726e61646f526f757465723a206f6e6c79496e7374616e63655265676973747279", "id": 39285, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2055:37:67", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_fc744bc511b178eb6daf4baca1c3ed4deb9012277ccf044dc7d964a8eca3d5c1", "typeString": "literal_string \"TornadoRouter: onlyInstanceRegistry\"" }, "value": "TornadoRouter: onlyInstanceRegistry" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_fc744bc511b178eb6daf4baca1c3ed4deb9012277ccf044dc7d964a8eca3d5c1", "typeString": "literal_string \"TornadoRouter: onlyInstanceRegistry\"" } ], "id": 39277, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "2006:7:67", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 39286, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2006:87:67", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 39287, "nodeType": "ExpressionStatement", "src": "2006:87:67" }, { "id": 39288, "nodeType": "PlaceholderStatement", "src": "2103:1:67" } ] }, "documentation": null, "name": "onlyInstanceRegistry", "overrides": null, "parameters": { "id": 39276, "nodeType": "ParameterList", "parameters": [], "src": "1993:2:67" }, "virtual": false, "visibility": "internal" }, { "id": 39302, "nodeType": "ModifierDefinition", "src": "2117:132:67", "nodes": [], "body": { "id": 39301, "nodeType": "Block", "src": "2143:106:67", "nodes": [], "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 39296, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 39293, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "2161:3:67", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 39294, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2161:10:67", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 39295, "name": "governanceProxyAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39241, "src": "2175:22:67", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "2161:36:67", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "546f726e61646f526f757465723a206f6e6c79476f7665726e616e6365", "id": 39297, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2199:31:67", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_01e26a90b7a663b3718d6ec87d56b8bbfcf84529983e8a6bf324666efe618e21", "typeString": "literal_string \"TornadoRouter: onlyGovernance\"" }, "value": "TornadoRouter: onlyGovernance" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_01e26a90b7a663b3718d6ec87d56b8bbfcf84529983e8a6bf324666efe618e21", "typeString": "literal_string \"TornadoRouter: onlyGovernance\"" } ], "id": 39292, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "2153:7:67", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 39298, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2153:78:67", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 39299, "nodeType": "ExpressionStatement", "src": "2153:78:67" }, { "id": 39300, "nodeType": "PlaceholderStatement", "src": "2241:1:67" } ] }, "documentation": null, "name": "onlyGovernance", "overrides": null, "parameters": { "id": 39291, "nodeType": "ParameterList", "parameters": [], "src": "2140:2:67" }, "virtual": false, "visibility": "internal" }, { "id": 39326, "nodeType": "FunctionDefinition", "src": "2255:297:67", "nodes": [], "body": { "id": 39325, "nodeType": "Block", "src": "2406:146:67", "nodes": [], "statements": [ { "expression": { "argumentTypes": null, "id": 39317, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 39313, "name": "instanceRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39243, "src": "2416:16:67", "typeDescriptions": { "typeIdentifier": "t_contract$_InstanceRegistry_$39215", "typeString": "contract InstanceRegistry" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 39315, "name": "_instanceRegistryAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39304, "src": "2452:24:67", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 39314, "name": "InstanceRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39215, "src": "2435:16:67", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_InstanceRegistry_$39215_$", "typeString": "type(contract InstanceRegistry)" } }, "id": 39316, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2435:42:67", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_InstanceRegistry_$39215", "typeString": "contract InstanceRegistry" } }, "src": "2416:61:67", "typeDescriptions": { "typeIdentifier": "t_contract$_InstanceRegistry_$39215", "typeString": "contract InstanceRegistry" } }, "id": 39318, "nodeType": "ExpressionStatement", "src": "2416:61:67" }, { "expression": { "argumentTypes": null, "id": 39323, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 39319, "name": "relayerRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39245, "src": "2487:15:67", "typeDescriptions": { "typeIdentifier": "t_contract$_RelayerRegistry_$35363", "typeString": "contract RelayerRegistry" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 39321, "name": "_relayerRegistryAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39306, "src": "2521:23:67", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 39320, "name": "RelayerRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 35363, "src": "2505:15:67", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_RelayerRegistry_$35363_$", "typeString": "type(contract RelayerRegistry)" } }, "id": 39322, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2505:40:67", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_RelayerRegistry_$35363", "typeString": "contract RelayerRegistry" } }, "src": "2487:58:67", "typeDescriptions": { "typeIdentifier": "t_contract$_RelayerRegistry_$35363", "typeString": "contract RelayerRegistry" } }, "id": 39324, "nodeType": "ExpressionStatement", "src": "2487:58:67" } ] }, "documentation": null, "functionSelector": "485cc955", "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 39309, "modifierName": { "argumentTypes": null, "id": 39308, "name": "onlyGovernance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39302, "src": "2367:14:67", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "2367:14:67" }, { "arguments": null, "id": 39311, "modifierName": { "argumentTypes": null, "id": 39310, "name": "initializer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 29207, "src": "2390:11:67", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "2390:11:67" } ], "name": "initialize", "overrides": null, "parameters": { "id": 39307, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 39304, "mutability": "mutable", "name": "_instanceRegistryAddress", "nodeType": "VariableDeclaration", "overrides": null, "scope": 39326, "src": "2275:32:67", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 39303, "name": "address", "nodeType": "ElementaryTypeName", "src": "2275:7:67", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 39306, "mutability": "mutable", "name": "_relayerRegistryAddress", "nodeType": "VariableDeclaration", "overrides": null, "scope": 39326, "src": "2309:31:67", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 39305, "name": "address", "nodeType": "ElementaryTypeName", "src": "2309:7:67", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "2274:67:67" }, "returnParameters": { "id": 39312, "nodeType": "ParameterList", "parameters": [], "src": "2406:0:67" }, "scope": 39621, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "id": 39384, "nodeType": "FunctionDefinition", "src": "2558:558:67", "nodes": [], "body": { "id": 39383, "nodeType": "Block", "src": "2705:411:67", "nodes": [], "statements": [ { "assignments": [ 39336, null, 39338, 39340 ], "declarations": [ { "constant": false, "id": 39336, "mutability": "mutable", "name": "token", "nodeType": "VariableDeclaration", "overrides": null, "scope": 39383, "src": "2716:12:67", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$30239", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, "id": 39335, "name": "IERC20", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 30239, "src": "2716:6:67", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$30239", "typeString": "contract IERC20" } }, "value": null, "visibility": "internal" }, null, { "constant": false, "id": 39338, "mutability": "mutable", "name": "isERC20", "nodeType": "VariableDeclaration", "overrides": null, "scope": 39383, "src": "2731:12:67", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 39337, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2731:4:67", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 39340, "mutability": "mutable", "name": "isEnabled", "nodeType": "VariableDeclaration", "overrides": null, "scope": 39383, "src": "2745:14:67", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 39339, "name": "bool", "nodeType": "ElementaryTypeName", "src": "2745:4:67", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "id": 39345, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 39343, "name": "_tornado", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39328, "src": "2793:8:67", "typeDescriptions": { "typeIdentifier": "t_contract$_ITornadoInstance_$31584", "typeString": "contract ITornadoInstance" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_ITornadoInstance_$31584", "typeString": "contract ITornadoInstance" } ], "expression": { "argumentTypes": null, "id": 39341, "name": "instanceRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39243, "src": "2763:16:67", "typeDescriptions": { "typeIdentifier": "t_contract$_InstanceRegistry_$39215", "typeString": "contract InstanceRegistry" } }, "id": 39342, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "instanceData", "nodeType": "MemberAccess", "referencedDeclaration": 38601, "src": "2763:29:67", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_contract$_ITornadoInstance_$31584_$returns$_t_contract$_IERC20_$30239_$_t_uint80_$_t_bool_$_t_bool_$", "typeString": "function (contract ITornadoInstance) view external returns (contract IERC20,uint80,bool,bool)" } }, "id": 39344, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2763:39:67", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$_t_contract$_IERC20_$30239_$_t_uint80_$_t_bool_$_t_bool_$", "typeString": "tuple(contract IERC20,uint80,bool,bool)" } }, "nodeType": "VariableDeclarationStatement", "src": "2715:87:67" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 39347, "name": "isEnabled", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39340, "src": "2821:9:67", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "546f726e61646f526f757465723a20696e7374616e6365206e6f7420656e61626c6564", "id": 39348, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2832:37:67", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_5ea0a4a02b5291891cf0e13a2784b132079e53a05498a65d22a7faa4ba6e1fcc", "typeString": "literal_string \"TornadoRouter: instance not enabled\"" }, "value": "TornadoRouter: instance not enabled" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_5ea0a4a02b5291891cf0e13a2784b132079e53a05498a65d22a7faa4ba6e1fcc", "typeString": "literal_string \"TornadoRouter: instance not enabled\"" } ], "id": 39346, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "2813:7:67", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 39349, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2813:57:67", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 39350, "nodeType": "ExpressionStatement", "src": "2813:57:67" }, { "condition": { "argumentTypes": null, "id": 39351, "name": "isERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39338, "src": "2885:7:67", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 39367, "nodeType": "IfStatement", "src": "2881:112:67", "trueBody": { "id": 39366, "nodeType": "Block", "src": "2894:99:67", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 39355, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "2931:3:67", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 39356, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2931:10:67", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 39359, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "2951:4:67", "typeDescriptions": { "typeIdentifier": "t_contract$_TornadoRouter_$39621", "typeString": "contract TornadoRouter" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_TornadoRouter_$39621", "typeString": "contract TornadoRouter" } ], "id": 39358, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "2943:7:67", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 39357, "name": "address", "nodeType": "ElementaryTypeName", "src": "2943:7:67", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 39360, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2943:13:67", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "id": 39361, "name": "_tornado", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39328, "src": "2958:8:67", "typeDescriptions": { "typeIdentifier": "t_contract$_ITornadoInstance_$31584", "typeString": "contract ITornadoInstance" } }, "id": 39362, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "denomination", "nodeType": "MemberAccess", "referencedDeclaration": 31561, "src": "2958:21:67", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$", "typeString": "function () view external returns (uint256)" } }, "id": 39363, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2958:23:67", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 39352, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39336, "src": "2908:5:67", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$30239", "typeString": "contract IERC20" } }, "id": 39354, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeTransferFrom", "nodeType": "MemberAccess", "referencedDeclaration": 30298, "src": "2908:22:67", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$30239_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$30239_$", "typeString": "function (contract IERC20,address,address,uint256)" } }, "id": 39364, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2908:74:67", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 39365, "nodeType": "ExpressionStatement", "src": "2908:74:67" } ] } }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 39374, "name": "_commitment", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39330, "src": "3040:11:67", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } ], "expression": { "argumentTypes": null, "id": 39368, "name": "_tornado", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39328, "src": "3003:8:67", "typeDescriptions": { "typeIdentifier": "t_contract$_ITornadoInstance_$31584", "typeString": "contract ITornadoInstance" } }, "id": 39370, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "deposit", "nodeType": "MemberAccess", "referencedDeclaration": 31566, "src": "3003:16:67", "typeDescriptions": { "typeIdentifier": "t_function_external_payable$_t_bytes32_$returns$__$", "typeString": "function (bytes32) payable external" } }, "id": 39373, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "names": [ "value" ], "nodeType": "FunctionCallOptions", "options": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 39371, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "3028:3:67", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 39372, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "value", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3028:9:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "src": "3003:36:67", "typeDescriptions": { "typeIdentifier": "t_function_external_payable$_t_bytes32_$returns$__$value", "typeString": "function (bytes32) payable external" } }, "id": 39375, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3003:49:67", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 39376, "nodeType": "ExpressionStatement", "src": "3003:49:67" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 39378, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "3082:3:67", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 39379, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3082:10:67", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 39380, "name": "_encryptedNote", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39332, "src": "3094:14:67", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } ], "id": 39377, "name": "EncryptedNote", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39251, "src": "3068:13:67", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (address,bytes memory)" } }, "id": 39381, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3068:41:67", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 39382, "nodeType": "EmitStatement", "src": "3063:46:67" } ] }, "documentation": null, "functionSelector": "13d98d13", "implemented": true, "kind": "function", "modifiers": [], "name": "deposit", "overrides": null, "parameters": { "id": 39333, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 39328, "mutability": "mutable", "name": "_tornado", "nodeType": "VariableDeclaration", "overrides": null, "scope": 39384, "src": "2575:25:67", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_ITornadoInstance_$31584", "typeString": "contract ITornadoInstance" }, "typeName": { "contractScope": null, "id": 39327, "name": "ITornadoInstance", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 31584, "src": "2575:16:67", "typeDescriptions": { "typeIdentifier": "t_contract$_ITornadoInstance_$31584", "typeString": "contract ITornadoInstance" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 39330, "mutability": "mutable", "name": "_commitment", "nodeType": "VariableDeclaration", "overrides": null, "scope": 39384, "src": "2602:19:67", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 39329, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2602:7:67", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 39332, "mutability": "mutable", "name": "_encryptedNote", "nodeType": "VariableDeclaration", "overrides": null, "scope": 39384, "src": "2623:29:67", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes" }, "typeName": { "id": 39331, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2623:5:67", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "value": null, "visibility": "internal" } ], "src": "2574:79:67" }, "returnParameters": { "id": 39334, "nodeType": "ParameterList", "parameters": [], "src": "2705:0:67" }, "scope": 39621, "stateMutability": "payable", "virtual": true, "visibility": "public" }, { "id": 39440, "nodeType": "FunctionDefinition", "src": "3122:633:67", "nodes": [], "body": { "id": 39439, "nodeType": "Block", "src": "3407:348:67", "nodes": [], "statements": [ { "assignments": [ null, null, null, 39404 ], "declarations": [ null, null, null, { "constant": false, "id": 39404, "mutability": "mutable", "name": "isEnabled", "nodeType": "VariableDeclaration", "overrides": null, "scope": 39439, "src": "3422:14:67", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 39403, "name": "bool", "nodeType": "ElementaryTypeName", "src": "3422:4:67", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "id": 39409, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 39407, "name": "_tornado", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39386, "src": "3470:8:67", "typeDescriptions": { "typeIdentifier": "t_contract$_ITornadoInstance_$31584", "typeString": "contract ITornadoInstance" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_ITornadoInstance_$31584", "typeString": "contract ITornadoInstance" } ], "expression": { "argumentTypes": null, "id": 39405, "name": "instanceRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39243, "src": "3440:16:67", "typeDescriptions": { "typeIdentifier": "t_contract$_InstanceRegistry_$39215", "typeString": "contract InstanceRegistry" } }, "id": 39406, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "instanceData", "nodeType": "MemberAccess", "referencedDeclaration": 38601, "src": "3440:29:67", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_contract$_ITornadoInstance_$31584_$returns$_t_contract$_IERC20_$30239_$_t_uint80_$_t_bool_$_t_bool_$", "typeString": "function (contract ITornadoInstance) view external returns (contract IERC20,uint80,bool,bool)" } }, "id": 39408, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3440:39:67", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$_t_contract$_IERC20_$30239_$_t_uint80_$_t_bool_$_t_bool_$", "typeString": "tuple(contract IERC20,uint80,bool,bool)" } }, "nodeType": "VariableDeclarationStatement", "src": "3417:62:67" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 39411, "name": "isEnabled", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39404, "src": "3498:9:67", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "546f726e61646f526f757465723a20696e7374616e6365206e6f7420656e61626c6564", "id": 39412, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3509:37:67", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_5ea0a4a02b5291891cf0e13a2784b132079e53a05498a65d22a7faa4ba6e1fcc", "typeString": "literal_string \"TornadoRouter: instance not enabled\"" }, "value": "TornadoRouter: instance not enabled" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_5ea0a4a02b5291891cf0e13a2784b132079e53a05498a65d22a7faa4ba6e1fcc", "typeString": "literal_string \"TornadoRouter: instance not enabled\"" } ], "id": 39410, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "3490:7:67", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 39413, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3490:57:67", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 39414, "nodeType": "ExpressionStatement", "src": "3490:57:67" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 39418, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "3579:3:67", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 39419, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3579:10:67", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 39420, "name": "_relayer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39396, "src": "3591:8:67", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 39421, "name": "_tornado", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39386, "src": "3601:8:67", "typeDescriptions": { "typeIdentifier": "t_contract$_ITornadoInstance_$31584", "typeString": "contract ITornadoInstance" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_contract$_ITornadoInstance_$31584", "typeString": "contract ITornadoInstance" } ], "expression": { "argumentTypes": null, "id": 39415, "name": "relayerRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39245, "src": "3558:15:67", "typeDescriptions": { "typeIdentifier": "t_contract$_RelayerRegistry_$35363", "typeString": "contract RelayerRegistry" } }, "id": 39417, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "burn", "nodeType": "MemberAccess", "referencedDeclaration": 35228, "src": "3558:20:67", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_contract$_ITornadoInstance_$31584_$returns$__$", "typeString": "function (address,address,contract ITornadoInstance) external" } }, "id": 39422, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3558:52:67", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 39423, "nodeType": "ExpressionStatement", "src": "3558:52:67" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 39430, "name": "_proof", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39388, "src": "3672:6:67", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }, { "argumentTypes": null, "id": 39431, "name": "_root", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39390, "src": "3680:5:67", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "argumentTypes": null, "id": 39432, "name": "_nullifierHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39392, "src": "3687:14:67", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "argumentTypes": null, "id": 39433, "name": "_recipient", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39394, "src": "3703:10:67", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 39434, "name": "_relayer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39396, "src": "3715:8:67", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 39435, "name": "_fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39398, "src": "3725:4:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "id": 39436, "name": "_refund", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39400, "src": "3731:7:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" }, { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" }, { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 39424, "name": "_tornado", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39386, "src": "3621:8:67", "typeDescriptions": { "typeIdentifier": "t_contract$_ITornadoInstance_$31584", "typeString": "contract ITornadoInstance" } }, "id": 39426, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "withdraw", "nodeType": "MemberAccess", "referencedDeclaration": 31583, "src": "3621:17:67", "typeDescriptions": { "typeIdentifier": "t_function_external_payable$_t_bytes_memory_ptr_$_t_bytes32_$_t_bytes32_$_t_address_payable_$_t_address_payable_$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (bytes memory,bytes32,bytes32,address payable,address payable,uint256,uint256) payable external" } }, "id": 39429, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "names": [ "value" ], "nodeType": "FunctionCallOptions", "options": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 39427, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "3647:3:67", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 39428, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "value", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3647:9:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "src": "3621:37:67", "typeDescriptions": { "typeIdentifier": "t_function_external_payable$_t_bytes_memory_ptr_$_t_bytes32_$_t_bytes32_$_t_address_payable_$_t_address_payable_$_t_uint256_$_t_uint256_$returns$__$value", "typeString": "function (bytes memory,bytes32,bytes32,address payable,address payable,uint256,uint256) payable external" } }, "id": 39437, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3621:127:67", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 39438, "nodeType": "ExpressionStatement", "src": "3621:127:67" } ] }, "documentation": null, "functionSelector": "b438689f", "implemented": true, "kind": "function", "modifiers": [], "name": "withdraw", "overrides": null, "parameters": { "id": 39401, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 39386, "mutability": "mutable", "name": "_tornado", "nodeType": "VariableDeclaration", "overrides": null, "scope": 39440, "src": "3149:25:67", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_ITornadoInstance_$31584", "typeString": "contract ITornadoInstance" }, "typeName": { "contractScope": null, "id": 39385, "name": "ITornadoInstance", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 31584, "src": "3149:16:67", "typeDescriptions": { "typeIdentifier": "t_contract$_ITornadoInstance_$31584", "typeString": "contract ITornadoInstance" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 39388, "mutability": "mutable", "name": "_proof", "nodeType": "VariableDeclaration", "overrides": null, "scope": 39440, "src": "3184:21:67", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes" }, "typeName": { "id": 39387, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3184:5:67", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 39390, "mutability": "mutable", "name": "_root", "nodeType": "VariableDeclaration", "overrides": null, "scope": 39440, "src": "3215:13:67", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 39389, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3215:7:67", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 39392, "mutability": "mutable", "name": "_nullifierHash", "nodeType": "VariableDeclaration", "overrides": null, "scope": 39440, "src": "3238:22:67", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 39391, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3238:7:67", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 39394, "mutability": "mutable", "name": "_recipient", "nodeType": "VariableDeclaration", "overrides": null, "scope": 39440, "src": "3270:26:67", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, "typeName": { "id": 39393, "name": "address", "nodeType": "ElementaryTypeName", "src": "3270:15:67", "stateMutability": "payable", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 39396, "mutability": "mutable", "name": "_relayer", "nodeType": "VariableDeclaration", "overrides": null, "scope": 39440, "src": "3306:24:67", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, "typeName": { "id": 39395, "name": "address", "nodeType": "ElementaryTypeName", "src": "3306:15:67", "stateMutability": "payable", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 39398, "mutability": "mutable", "name": "_fee", "nodeType": "VariableDeclaration", "overrides": null, "scope": 39440, "src": "3340:12:67", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 39397, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3340:7:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 39400, "mutability": "mutable", "name": "_refund", "nodeType": "VariableDeclaration", "overrides": null, "scope": 39440, "src": "3362:15:67", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 39399, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3362:7:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "3139:244:67" }, "returnParameters": { "id": 39402, "nodeType": "ParameterList", "parameters": [], "src": "3407:0:67" }, "scope": 39621, "stateMutability": "payable", "virtual": true, "visibility": "public" }, { "id": 39468, "nodeType": "FunctionDefinition", "src": "3761:214:67", "nodes": [], "body": { "id": 39467, "nodeType": "Block", "src": "3831:144:67", "nodes": [], "statements": [ { "body": { "id": 39465, "nodeType": "Block", "src": "3894:75:67", "statements": [ { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 39458, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "3927:3:67", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 39459, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3927:10:67", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 39460, "name": "_encryptedNotes", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39443, "src": "3939:15:67", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", "typeString": "bytes calldata[] calldata" } }, "id": 39462, "indexExpression": { "argumentTypes": null, "id": 39461, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39447, "src": "3955:1:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3939:18:67", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } ], "id": 39457, "name": "EncryptedNote", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39251, "src": "3913:13:67", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (address,bytes memory)" } }, "id": 39463, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3913:45:67", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 39464, "nodeType": "EmitStatement", "src": "3908:50:67" } ] }, "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 39453, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 39450, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39447, "src": "3861:1:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 39451, "name": "_encryptedNotes", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39443, "src": "3865:15:67", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", "typeString": "bytes calldata[] calldata" } }, "id": 39452, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3865:22:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3861:26:67", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 39466, "initializationExpression": { "assignments": [ 39447 ], "declarations": [ { "constant": false, "id": 39447, "mutability": "mutable", "name": "i", "nodeType": "VariableDeclaration", "overrides": null, "scope": 39466, "src": "3846:9:67", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 39446, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3846:7:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 39449, "initialValue": { "argumentTypes": null, "hexValue": "30", "id": 39448, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3858:1:67", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "nodeType": "VariableDeclarationStatement", "src": "3846:13:67" }, "loopExpression": { "expression": { "argumentTypes": null, "id": 39455, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "3889:3:67", "subExpression": { "argumentTypes": null, "id": 39454, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39447, "src": "3889:1:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 39456, "nodeType": "ExpressionStatement", "src": "3889:3:67" }, "nodeType": "ForStatement", "src": "3841:128:67" } ] }, "documentation": null, "functionSelector": "6485ba2a", "implemented": true, "kind": "function", "modifiers": [], "name": "backupNotes", "overrides": null, "parameters": { "id": 39444, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 39443, "mutability": "mutable", "name": "_encryptedNotes", "nodeType": "VariableDeclaration", "overrides": null, "scope": 39468, "src": "3782:32:67", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", "typeString": "bytes[]" }, "typeName": { "baseType": { "id": 39441, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3782:5:67", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "id": 39442, "length": null, "nodeType": "ArrayTypeName", "src": "3782:7:67", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", "typeString": "bytes[]" } }, "value": null, "visibility": "internal" } ], "src": "3781:34:67" }, "returnParameters": { "id": 39445, "nodeType": "ParameterList", "parameters": [], "src": "3831:0:67" }, "scope": 39621, "stateMutability": "nonpayable", "virtual": true, "visibility": "public" }, { "id": 39552, "nodeType": "FunctionDefinition", "src": "3981:739:67", "nodes": [], "body": { "id": 39551, "nodeType": "Block", "src": "4114:606:67", "nodes": [], "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, "id": 39485, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 39480, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39472, "src": "4132:3:67", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 39483, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4147:1:67", "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" } ], "id": 39482, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4139:7:67", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 39481, "name": "address", "nodeType": "ElementaryTypeName", "src": "4139:7:67", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 39484, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4139:10:67", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "4132:17:67", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "544f524e3a2063616e206e6f742073656e6420746f207a65726f2061646472657373", "id": 39486, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4151:36:67", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_da8d57b0dd733df825cfc05da618ee5096781f684eb785662a70edd786ac4e4f", "typeString": "literal_string \"TORN: can not send to zero address\"" }, "value": "TORN: can not send to zero address" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_da8d57b0dd733df825cfc05da618ee5096781f684eb785662a70edd786ac4e4f", "typeString": "literal_string \"TORN: can not send to zero address\"" } ], "id": 39479, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "4124:7:67", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 39487, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4124:64:67", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 39488, "nodeType": "ExpressionStatement", "src": "4124:64:67" }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_contract$_IERC20_$30239", "typeString": "contract IERC20" }, "id": 39493, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 39489, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39470, "src": "4203:6:67", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$30239", "typeString": "contract IERC20" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 39491, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4220:1:67", "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" } ], "id": 39490, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 30239, "src": "4213:6:67", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$30239_$", "typeString": "type(contract IERC20)" } }, "id": 39492, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4213:9:67", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$30239", "typeString": "contract IERC20" } }, "src": "4203:19:67", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { "id": 39549, "nodeType": "Block", "src": "4422:292:67", "statements": [ { "assignments": [ 39518 ], "declarations": [ { "constant": false, "id": 39518, "mutability": "mutable", "name": "totalBalance", "nodeType": "VariableDeclaration", "overrides": null, "scope": 39549, "src": "4471:20:67", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 39517, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4471:7:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 39526, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 39523, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "4519:4:67", "typeDescriptions": { "typeIdentifier": "t_contract$_TornadoRouter_$39621", "typeString": "contract TornadoRouter" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_TornadoRouter_$39621", "typeString": "contract TornadoRouter" } ], "id": 39522, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4511:7:67", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 39521, "name": "address", "nodeType": "ElementaryTypeName", "src": "4511:7:67", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 39524, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4511:13:67", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "expression": { "argumentTypes": null, "id": 39519, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39470, "src": "4494:6:67", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$30239", "typeString": "contract IERC20" } }, "id": 39520, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", "referencedDeclaration": 30178, "src": "4494:16:67", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, "id": 39525, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4494:31:67", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "4471:54:67" }, { "assignments": [ 39528 ], "declarations": [ { "constant": false, "id": 39528, "mutability": "mutable", "name": "balance", "nodeType": "VariableDeclaration", "overrides": null, "scope": 39549, "src": "4539:15:67", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 39527, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4539:7:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 39534, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 39531, "name": "totalBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39518, "src": "4566:12:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "id": 39532, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39474, "src": "4580:7:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 39529, "name": "Math", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 28963, "src": "4557:4:67", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_Math_$28963_$", "typeString": "type(library Math)" } }, "id": 39530, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "min", "nodeType": "MemberAccess", "referencedDeclaration": 28929, "src": "4557:8:67", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, "id": 39533, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4557:31:67", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "4539:49:67" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 39538, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 39536, "name": "balance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39528, "src": "4610:7:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 39537, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4620:1:67", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "4610:11:67", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "544f524e3a20747279696e6720746f2073656e6420302062616c616e6365", "id": 39539, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4623:32:67", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ef5568bcff8e2227b9a781f79a9b9557ab6926fbd248d437e304f821cea896f2", "typeString": "literal_string \"TORN: trying to send 0 balance\"" }, "value": "TORN: trying to send 0 balance" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_ef5568bcff8e2227b9a781f79a9b9557ab6926fbd248d437e304f821cea896f2", "typeString": "literal_string \"TORN: trying to send 0 balance\"" } ], "id": 39535, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ -18, -18 ], "referencedDeclaration": -18, "src": "4602:7:67", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 39540, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4602:54:67", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 39541, "nodeType": "ExpressionStatement", "src": "4602:54:67" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 39545, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39472, "src": "4690:3:67", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 39546, "name": "balance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39528, "src": "4695:7:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 39542, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39470, "src": "4670:6:67", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$30239", "typeString": "contract IERC20" } }, "id": 39544, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeTransfer", "nodeType": "MemberAccess", "referencedDeclaration": 30273, "src": "4670:19:67", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$30239_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$30239_$", "typeString": "function (contract IERC20,address,uint256)" } }, "id": 39547, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4670:33:67", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 39548, "nodeType": "ExpressionStatement", "src": "4670:33:67" } ] }, "id": 39550, "nodeType": "IfStatement", "src": "4199:515:67", "trueBody": { "id": 39516, "nodeType": "Block", "src": "4224:192:67", "statements": [ { "assignments": [ 39495 ], "declarations": [ { "constant": false, "id": 39495, "mutability": "mutable", "name": "totalBalance", "nodeType": "VariableDeclaration", "overrides": null, "scope": 39516, "src": "4263:20:67", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 39494, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4263:7:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 39501, "initialValue": { "argumentTypes": null, "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 39498, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "4294:4:67", "typeDescriptions": { "typeIdentifier": "t_contract$_TornadoRouter_$39621", "typeString": "contract TornadoRouter" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_TornadoRouter_$39621", "typeString": "contract TornadoRouter" } ], "id": 39497, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4286:7:67", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 39496, "name": "address", "nodeType": "ElementaryTypeName", "src": "4286:7:67", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 39499, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4286:13:67", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 39500, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "balance", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "4286:21:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "4263:44:67" }, { "assignments": [ 39503 ], "declarations": [ { "constant": false, "id": 39503, "mutability": "mutable", "name": "balance", "nodeType": "VariableDeclaration", "overrides": null, "scope": 39516, "src": "4321:15:67", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 39502, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4321:7:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 39509, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 39506, "name": "totalBalance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39495, "src": "4348:12:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "id": 39507, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39474, "src": "4362:7:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 39504, "name": "Math", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 28963, "src": "4339:4:67", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_Math_$28963_$", "typeString": "type(library Math)" } }, "id": 39505, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "min", "nodeType": "MemberAccess", "referencedDeclaration": 28929, "src": "4339:8:67", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, "id": 39508, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4339:31:67", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "4321:49:67" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 39513, "name": "balance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39503, "src": "4397:7:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 39510, "name": "_to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39472, "src": "4384:3:67", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "id": 39512, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "4384:12:67", "typeDescriptions": { "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)" } }, "id": 39514, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4384:21:67", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 39515, "nodeType": "ExpressionStatement", "src": "4384:21:67" } ] } } ] }, "documentation": null, "functionSelector": "cea9d26f", "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 39477, "modifierName": { "argumentTypes": null, "id": 39476, "name": "onlyGovernance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39302, "src": "4095:14:67", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "4095:14:67" } ], "name": "rescueTokens", "overrides": null, "parameters": { "id": 39475, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 39470, "mutability": "mutable", "name": "_token", "nodeType": "VariableDeclaration", "overrides": null, "scope": 39552, "src": "4003:13:67", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$30239", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, "id": 39469, "name": "IERC20", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 30239, "src": "4003:6:67", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$30239", "typeString": "contract IERC20" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 39472, "mutability": "mutable", "name": "_to", "nodeType": "VariableDeclaration", "overrides": null, "scope": 39552, "src": "4018:19:67", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, "typeName": { "id": 39471, "name": "address", "nodeType": "ElementaryTypeName", "src": "4018:15:67", "stateMutability": "payable", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 39474, "mutability": "mutable", "name": "_amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 39552, "src": "4039:15:67", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 39473, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4039:7:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "4002:53:67" }, "returnParameters": { "id": 39478, "nodeType": "ParameterList", "parameters": [], "src": "4114:0:67" }, "scope": 39621, "stateMutability": "nonpayable", "virtual": true, "visibility": "public" }, { "id": 39576, "nodeType": "FunctionDefinition", "src": "4815:234:67", "nodes": [], "body": { "id": 39575, "nodeType": "Block", "src": "4948:101:67", "nodes": [], "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 39566, "name": "_spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39556, "src": "4977:8:67", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 39567, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39558, "src": "4987:7:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 39563, "name": "_token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39554, "src": "4958:6:67", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$30239", "typeString": "contract IERC20" } }, "id": 39565, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeApprove", "nodeType": "MemberAccess", "referencedDeclaration": 30341, "src": "4958:18:67", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$30239_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$30239_$", "typeString": "function (contract IERC20,address,uint256)" } }, "id": 39568, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4958:37:67", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 39569, "nodeType": "ExpressionStatement", "src": "4958:37:67" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 39571, "name": "_spender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39556, "src": "5024:8:67", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 39572, "name": "_amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39558, "src": "5034:7:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 39570, "name": "TokenApproved", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39257, "src": "5010:13:67", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, "id": 39573, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5010:32:67", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 39574, "nodeType": "EmitStatement", "src": "5005:37:67" } ] }, "documentation": null, "functionSelector": "4b704c97", "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 39561, "modifierName": { "argumentTypes": null, "id": 39560, "name": "onlyInstanceRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39290, "src": "4923:20:67", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "4923:20:67" } ], "name": "approveTokenForInstance", "overrides": null, "parameters": { "id": 39559, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 39554, "mutability": "mutable", "name": "_token", "nodeType": "VariableDeclaration", "overrides": null, "scope": 39576, "src": "4848:13:67", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$30239", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, "id": 39553, "name": "IERC20", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 30239, "src": "4848:6:67", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$30239", "typeString": "contract IERC20" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 39556, "mutability": "mutable", "name": "_spender", "nodeType": "VariableDeclaration", "overrides": null, "scope": 39576, "src": "4863:16:67", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 39555, "name": "address", "nodeType": "ElementaryTypeName", "src": "4863:7:67", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 39558, "mutability": "mutable", "name": "_amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 39576, "src": "4881:15:67", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 39557, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4881:7:67", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "4847:50:67" }, "returnParameters": { "id": 39562, "nodeType": "ParameterList", "parameters": [], "src": "4948:0:67" }, "scope": 39621, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "id": 39594, "nodeType": "FunctionDefinition", "src": "5055:253:67", "nodes": [], "body": { "id": 39593, "nodeType": "Block", "src": "5150:158:67", "nodes": [], "statements": [ { "expression": { "argumentTypes": null, "id": 39587, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 39583, "name": "instanceRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39243, "src": "5160:16:67", "typeDescriptions": { "typeIdentifier": "t_contract$_InstanceRegistry_$39215", "typeString": "contract InstanceRegistry" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 39585, "name": "_newInstanceRegistryProxyAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39578, "src": "5196:32:67", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 39584, "name": "InstanceRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39215, "src": "5179:16:67", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_InstanceRegistry_$39215_$", "typeString": "type(contract InstanceRegistry)" } }, "id": 39586, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5179:50:67", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_InstanceRegistry_$39215", "typeString": "contract InstanceRegistry" } }, "src": "5160:69:67", "typeDescriptions": { "typeIdentifier": "t_contract$_InstanceRegistry_$39215", "typeString": "contract InstanceRegistry" } }, "id": 39588, "nodeType": "ExpressionStatement", "src": "5160:69:67" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 39590, "name": "_newInstanceRegistryProxyAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39578, "src": "5268:32:67", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 39589, "name": "InstanceRegistryUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39261, "src": "5244:23:67", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, "id": 39591, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5244:57:67", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 39592, "nodeType": "EmitStatement", "src": "5239:62:67" } ] }, "documentation": null, "functionSelector": "baaa2169", "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 39581, "modifierName": { "argumentTypes": null, "id": 39580, "name": "onlyGovernance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39302, "src": "5135:14:67", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "5135:14:67" } ], "name": "setInstanceRegistry", "overrides": null, "parameters": { "id": 39579, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 39578, "mutability": "mutable", "name": "_newInstanceRegistryProxyAddress", "nodeType": "VariableDeclaration", "overrides": null, "scope": 39594, "src": "5084:40:67", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 39577, "name": "address", "nodeType": "ElementaryTypeName", "src": "5084:7:67", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "5083:42:67" }, "returnParameters": { "id": 39582, "nodeType": "ParameterList", "parameters": [], "src": "5150:0:67" }, "scope": 39621, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "id": 39612, "nodeType": "FunctionDefinition", "src": "5314:246:67", "nodes": [], "body": { "id": 39611, "nodeType": "Block", "src": "5407:153:67", "nodes": [], "statements": [ { "expression": { "argumentTypes": null, "id": 39605, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 39601, "name": "relayerRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39245, "src": "5417:15:67", "typeDescriptions": { "typeIdentifier": "t_contract$_RelayerRegistry_$35363", "typeString": "contract RelayerRegistry" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 39603, "name": "_newRelayerRegistryProxyAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39596, "src": "5451:31:67", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 39602, "name": "RelayerRegistry", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 35363, "src": "5435:15:67", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_RelayerRegistry_$35363_$", "typeString": "type(contract RelayerRegistry)" } }, "id": 39604, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5435:48:67", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_RelayerRegistry_$35363", "typeString": "contract RelayerRegistry" } }, "src": "5417:66:67", "typeDescriptions": { "typeIdentifier": "t_contract$_RelayerRegistry_$35363", "typeString": "contract RelayerRegistry" } }, "id": 39606, "nodeType": "ExpressionStatement", "src": "5417:66:67" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 39608, "name": "_newRelayerRegistryProxyAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39596, "src": "5521:31:67", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 39607, "name": "RelayerRegistryUpdated", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39265, "src": "5498:22:67", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, "id": 39609, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5498:55:67", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 39610, "nodeType": "EmitStatement", "src": "5493:60:67" } ] }, "documentation": null, "functionSelector": "64cb2811", "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 39599, "modifierName": { "argumentTypes": null, "id": 39598, "name": "onlyGovernance", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 39302, "src": "5392:14:67", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "5392:14:67" } ], "name": "setRelayerRegistry", "overrides": null, "parameters": { "id": 39597, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 39596, "mutability": "mutable", "name": "_newRelayerRegistryProxyAddress", "nodeType": "VariableDeclaration", "overrides": null, "scope": 39612, "src": "5342:39:67", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 39595, "name": "address", "nodeType": "ElementaryTypeName", "src": "5342:7:67", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "5341:41:67" }, "returnParameters": { "id": 39600, "nodeType": "ParameterList", "parameters": [], "src": "5407:0:67" }, "scope": 39621, "stateMutability": "nonpayable", "virtual": false, "visibility": "external" }, { "id": 39620, "nodeType": "FunctionDefinition", "src": "5655:106:67", "nodes": [], "body": { "id": 39619, "nodeType": "Block", "src": "5718:43:67", "nodes": [], "statements": [ { "expression": { "argumentTypes": null, "hexValue": "76322d6f7261636c652d6d616e61676572", "id": 39617, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5735:19:67", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_34b45b9e37b59487530441f54f769d2f25a407cbe71ef48108dd8bf559dfae4c", "typeString": "literal_string \"v2-oracle-manager\"" }, "value": "v2-oracle-manager" }, "functionReturnParameters": 39616, "id": 39618, "nodeType": "Return", "src": "5728:26:67" } ] }, "documentation": null, "functionSelector": "54fd4d50", "implemented": true, "kind": "function", "modifiers": [], "name": "version", "overrides": null, "parameters": { "id": 39613, "nodeType": "ParameterList", "parameters": [], "src": "5671:2:67" }, "returnParameters": { "id": 39616, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 39615, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, "scope": 39620, "src": "5703:13:67", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string" }, "typeName": { "id": 39614, "name": "string", "nodeType": "ElementaryTypeName", "src": "5703:6:67", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" } }, "value": null, "visibility": "internal" } ], "src": "5702:15:67" }, "scope": 39621, "stateMutability": "pure", "virtual": true, "visibility": "public" } ], "abstract": false, "baseContracts": [ { "arguments": null, "baseName": { "contractScope": null, "id": 39235, "name": "Initializable", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 29230, "src": "964:13:67", "typeDescriptions": { "typeIdentifier": "t_contract$_Initializable_$29230", "typeString": "contract Initializable" } }, "id": 39236, "nodeType": "InheritanceSpecifier", "src": "964:13:67" } ], "contractDependencies": [ 29230 ], "contractKind": "contract", "documentation": { "id": 39234, "nodeType": "StructuredDocumentation", "src": "681:256:67", "text": " @title TornadoRouter\n @author AlienTornadosaurusHex\n @notice This contracts is a router for all Tornado Cash deposits and withdrawals\n @dev This is an improved version of the TornadoRouter with a modified design from the original contract." }, "fullyImplemented": true, "linearizedBaseContracts": [ 39621, 29230 ], "name": "TornadoRouter", "scope": 39622 } ], "license": "MIT" }, "id": 67 }