UNPKG

@credenza-web3/contracts

Version:

Credenza Contracts

508 lines (507 loc) 38.8 kB
{ "_format": "hh-sol-artifact-1", "contractName": "TokenEscrowContract", "sourceName": "contracts/TokenEscrowContract.sol", "abi": [ { "inputs": [ { "internalType": "address", "name": "_token", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "approver", "type": "address" } ], "name": "ApproverAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "FundsLoaded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "recipient", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "FundsReleased", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "approver", "type": "address" } ], "name": "PaymentApproved", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "recipient", "type": "address" } ], "name": "RecipientDeclared", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "canceller", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "TransactionCancelled", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "_approver", "type": "address" } ], "name": "addApprover", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "addOwner", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "amount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "approvalsCount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "approvePayment", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "approvers", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "cancelTransaction", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "clearOwners", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "_approvers", "type": "address[]" } ], "name": "declareApprovers", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_recipient", "type": "address" } ], "name": "declareRecipient", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "depositor", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "fundsLoaded", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getDescription", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getOwners", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getTrustedForwarder", "outputs": [ { "internalType": "address", "name": "forwarder", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "hasApproved", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "isApprover", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "addr", "type": "address" } ], "name": "isOwner", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "forwarder", "type": "address" } ], "name": "isTrustedForwarder", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "loadEscrowFunds", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "recipient", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "removeOwner", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "retrieveApproverStatus", "outputs": [ { "internalType": "bool[]", "name": "", "type": "bool[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "retrieveApprovers", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "retrieveLoadedAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "description", "type": "string" } ], "name": "setDescription", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_forwarder", "type": "address" } ], "name": "setTrustedForwarder", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "token", "outputs": [ { "internalType": "contract IERC20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalApprovers", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" } ], "bytecode": "0x60a060405234801561000f575f80fd5b50604051611c21380380611c2183398101604081905261002e91610044565b60016004556001600160a01b0316608052610071565b5f60208284031215610054575f80fd5b81516001600160a01b038116811461006a575f80fd5b9392505050565b608051611b8361009e5f395f8181610404015281816107ad0152818161097801526115990152611b835ff3fe608060405234801561000f575f80fd5b50600436106101c6575f3560e01c8063a0e67e2b116100fe578063ce1b815f1161009e578063f4a4c0a71161006e578063f4a4c0a7146103ee578063fa2c689e146103f6578063fc0c546a146103ff578063fc99981d14610426575f80fd5b8063ce1b815f146103a4578063d3650fb8146103b5578063da742228146103c8578063e02160c4146103db575f80fd5b8063c2e395a7116100d9578063c2e395a714610352578063c6d7ef0314610367578063c73992e41461036f578063c7c4ff4614610391575f80fd5b8063a0e67e2b14610321578063aa8c217c14610336578063b646c1941461033f575f80fd5b806366d003ac1161016957806374b25b8e1161014457806374b25b8e146102e257806390c3f38f146102f957806396fd34091461030c5780639e2af36c14610314575f80fd5b806366d003ac1461027d5780636d218e48146102ad5780637065cb48146102cf575f80fd5b80635260f5e6116101a45780635260f5e614610238578063572b6c05146102405780635c500818146102625780635c8cf75014610275575f80fd5b8063173825d9146101ca5780631a092541146101df5780632f54bf6e146101fd575b5f80fd5b6101dd6101d83660046116cb565b610439565b005b6101e7610507565b6040516101f491906116f8565b60405180910390f35b61022861020b3660046116cb565b6001600160a01b03165f9081526020819052604090205460ff1690565b60405190151581526020016101f4565b6101dd610597565b61022861024e3660046116cb565b6003546001600160a01b0391821691161490565b6101dd610270366004611743565b61063d565b6101dd6108b3565b6006546102959061010090046001600160a01b031681565b6040516001600160a01b0390911681526020016101f4565b6102286102bb3660046116cb565b600a6020525f908152604090205460ff1681565b6101dd6102dd3660046116cb565b610a7f565b6102eb60085481565b6040519081526020016101f4565b6101dd61030736600461176e565b610b31565b6101dd610b72565b6006546102289060ff1681565b610329610d5a565b6040516101f49190611819565b6102eb60055481565b6101dd61034d3660046116cb565b610db9565b61035a610f26565b6040516101f49190611865565b6005546102eb565b61022861037d3660046116cb565b600b6020525f908152604090205460ff1681565b600754610295906001600160a01b031681565b6003546001600160a01b0316610295565b6102956103c3366004611743565b610ffa565b6101dd6103d63660046116cb565b611022565b6101dd6103e936600461189e565b611071565b6103296111db565b6102eb60095481565b6102957f000000000000000000000000000000000000000000000000000000000000000081565b6101dd6104343660046116cb565b611239565b600154158061044e575061044e61020b61132c565b6104735760405162461bcd60e51b815260040161046a9061190d565b60405180910390fd5b6001600160a01b0381165f9081526020819052604090205460ff166104da5760405162461bcd60e51b815260206004820152601e60248201527f5461726765742061646472657373206973206e6f7420616e206f776e65720000604482015260640161046a565b6001600160a01b0381165f908152602081905260409020805460ff1916905561050460018261135f565b50565b6060600280546105169061194f565b80601f01602080910402602001604051908101604052809291908181526020018280546105429061194f565b801561058d5780601f106105645761010080835404028352916020019161058d565b820191905f5260205f20905b81548152906001019060200180831161057057829003601f168201915b5050505050905090565b60015415806105ac57506105ac61020b61132c565b6105c85760405162461bcd60e51b815260040161046a9061190d565b5f5b60015481101561062f575f805f600184815481106105ea576105ea611981565b5f918252602080832091909101546001600160a01b031683528201929092526040019020805460ff191691151591909117905580610627816119a9565b9150506105ca565b5061063b60015f61169d565b565b61064561145e565b60065460ff16156106915760405162461bcd60e51b8152602060048201526016602482015275115cd8dc9bddce88185b1c9958591e481b1bd859195960521b604482015260640161046a565b5f81116106e05760405162461bcd60e51b815260206004820152601960248201527f457363726f773a20616d6f756e74206d757374206265203e3000000000000000604482015260640161046a565b5f6106e961132c565b600780546001600160a01b0319166001600160a01b038316179055905061070f81610a7f565b6001600160a01b038181165f818152600a60205260408082208054600160ff199182168117909255600c8054808401825594527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c790930180546001600160a01b03191685179055600881905560058790556006805490931617909155516323b872dd60e01b81526004810191909152306024820152604481018490527f0000000000000000000000000000000000000000000000000000000000000000909116906323b872dd906064016020604051808303815f875af11580156107f5573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061081991906119c1565b6108655760405162461bcd60e51b815260206004820152601d60248201527f457363726f773a20746f6b656e207472616e73666572206661696c6564000000604482015260640161046a565b806001600160a01b03167f4565ff6fbd6c52f5c536c335b15ea7178d5cb5c4fc9d7ce2e2d3985225aea785836040516108a091815260200190565b60405180910390a2506105046001600455565b60015415806108c857506108c861020b61132c565b6108e45760405162461bcd60e51b815260040161046a9061190d565b6108ec61145e565b60065460ff1661093e5760405162461bcd60e51b815260206004820152601a60248201527f457363726f773a206e6f2066756e647320746f2063616e63656c000000000000604482015260640161046a565b5f61094761132c565b60055460075460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905292935090917f00000000000000000000000000000000000000000000000000000000000000009091169063a9059cbb906044016020604051808303815f875af11580156109c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109e491906119c1565b610a285760405162461bcd60e51b8152602060048201526015602482015274115cd8dc9bddce881c995d1d5c9b8819985a5b1959605a1b604482015260640161046a565b816001600160a01b03167fdceb09d55d6cf1424fafc2f14ad2b30c9e2cae7d1b5f28ef953c630ffef6659e82604051610a6391815260200190565b60405180910390a2610a736114b7565b505061063b6001600455565b6001541580610a945750610a9461020b61132c565b610ab05760405162461bcd60e51b815260040161046a9061190d565b6001600160a01b0381165f9081526020819052604090205460ff16610504576001600160a01b03165f818152602081905260408120805460ff191660019081179091558054808201825591527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319169091179055565b6001541580610b465750610b4661020b61132c565b610b625760405162461bcd60e51b815260040161046a9061190d565b6002610b6e8282611a2d565b5050565b610b7a61145e565b5f610b8361132c565b6001600160a01b0381165f908152600a602052604090205490915060ff16610bed5760405162461bcd60e51b815260206004820152601760248201527f457363726f773a206e6f7420616e20617070726f766572000000000000000000604482015260640161046a565b6001600160a01b0381165f908152600b602052604090205460ff1615610c555760405162461bcd60e51b815260206004820152601860248201527f457363726f773a20616c726561647920617070726f7665640000000000000000604482015260640161046a565b60065460ff16610c775760405162461bcd60e51b815260040161046a90611ae9565b60065461010090046001600160a01b0316610cd45760405162461bcd60e51b815260206004820152601760248201527f457363726f773a20726563697069656e7420756e736574000000000000000000604482015260640161046a565b6001600160a01b0381165f908152600b60205260408120805460ff191660011790556009805491610d04836119a9565b90915550506040516001600160a01b038216907ff38e0318caadc897596ef4a074a12afea95ec5bce6c8c27e54120e5b6da26fb8905f90a260085460095403610d4f57610d4f611567565b5061063b6001600455565b6060600180548060200260200160405190810160405280929190818152602001828054801561058d57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610d92575050505050905090565b6001541580610dce5750610dce61020b61132c565b610dea5760405162461bcd60e51b815260040161046a9061190d565b60065460ff16610e0c5760405162461bcd60e51b815260040161046a90611ae9565b6001600160a01b038116610e5a5760405162461bcd60e51b815260206004820152601560248201527422b9b1b937bb9d103d32b9379030b8383937bb32b960591b604482015260640161046a565b6001600160a01b0381165f908152600a602052604090205460ff16610504576001600160a01b0381165f818152600a60205260408120805460ff19166001908117909155600c8054918201815582527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c70180546001600160a01b0319169092179091556008805491610eeb836119a9565b90915550506040516001600160a01b038216907f835bddf1ceee4956e4329af9edf018523c1191238187a597453f6020bcadb042905f90a250565b600c546060905f9067ffffffffffffffff811115610f4657610f4661175a565b604051908082528060200260200182016040528015610f6f578160200160208202803683370190505b5090505f5b600c54811015610ff457600b5f600c8381548110610f9457610f94611981565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054825160ff90911690839083908110610fd257610fd2611981565b9115156020928302919091019091015280610fec816119a9565b915050610f74565b50919050565b600c8181548110611009575f80fd5b5f918252602090912001546001600160a01b0316905081565b6001541580611037575061103761020b61132c565b6110535760405162461bcd60e51b815260040161046a9061190d565b600380546001600160a01b0319166001600160a01b03831617905550565b6001541580611086575061108661020b61132c565b6110a25760405162461bcd60e51b815260040161046a9061190d565b60065460ff166110c45760405162461bcd60e51b815260040161046a90611ae9565b5f5b818110156111d6575f8383838181106110e1576110e1611981565b90506020020160208101906110f691906116cb565b6001600160a01b0381165f908152600a602052604090205490915060ff166111c3576001600160a01b0381165f818152600a60205260408120805460ff19166001908117909155600c8054918201815582527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c70180546001600160a01b031916909217909155600880549161118a836119a9565b90915550506040516001600160a01b038216907f835bddf1ceee4956e4329af9edf018523c1191238187a597453f6020bcadb042905f90a25b50806111ce816119a9565b9150506110c6565b505050565b6060600c80548060200260200160405190810160405280929190818152602001828054801561058d57602002820191905f5260205f209081546001600160a01b03168152600190910190602001808311610d92575050505050905090565b600154158061124e575061124e61020b61132c565b61126a5760405162461bcd60e51b815260040161046a9061190d565b6001600160a01b0381166112b95760405162461bcd60e51b8152602060048201526016602482015275115cd8dc9bddce881e995c9bc81c9958da5c1a595b9d60521b604482015260640161046a565b60065460ff166112db5760405162461bcd60e51b815260040161046a90611ae9565b60068054610100600160a81b0319166101006001600160a01b038416908102919091179091556040517f9026684f979adf409a07ab388368302b05b5c18fae3dbf3c0a6f4cb5be333d05905f90a250565b5f6014361080159061134857506003546001600160a01b031633145b1561135a575060131936013560601c90565b503390565b5f5b82548110156111d657816001600160a01b031683828154811061138657611386611981565b5f918252602090912001546001600160a01b03160361144c57825483906113af90600190611b20565b815481106113bf576113bf611981565b905f5260205f20015f9054906101000a90046001600160a01b03168382815481106113ec576113ec611981565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055508280548061142757611427611b39565b5f8281526020902081015f1990810180546001600160a01b0319169055019055505050565b80611456816119a9565b915050611361565b6002600454036114b05760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161046a565b6002600455565b5f5b600c54811015611525575f600c82815481106114d7576114d7611981565b5f9182526020808320909101546001600160a01b03168252600a81526040808320805460ff19908116909155600b90925290912080549091169055508061151d816119a9565b9150506114b9565b50611531600c5f61169d565b5f6005819055600680546001600160a81b0319169055600780546001600160a01b0319169055600881905560095561063b610597565b60055460065460405163a9059cbb60e01b81526101009091046001600160a01b039081166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303815f875af11580156115df573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061160391906119c1565b61164f5760405162461bcd60e51b815260206004820152601f60248201527f457363726f773a2072656c65617365207472616e73666572206661696c656400604482015260640161046a565b6006546040518281526101009091046001600160a01b0316907f221c08a06b07a64803b3787861a3f276212fcccb51c2e6234077a9b8cb13047a9060200160405180910390a26105046114b7565b5080545f8255905f5260205f209081019061050491905b808211156116c7575f81556001016116b4565b5090565b5f602082840312156116db575f80fd5b81356001600160a01b03811681146116f1575f80fd5b9392505050565b5f6020808352835180828501525f5b8181101561172357858101830151858201604001528201611707565b505f604082860101526040601f19601f8301168501019250505092915050565b5f60208284031215611753575f80fd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b5f6020828403121561177e575f80fd5b813567ffffffffffffffff80821115611795575f80fd5b818401915084601f8301126117a8575f80fd5b8135818111156117ba576117ba61175a565b604051601f8201601f19908116603f011681019083821181831017156117e2576117e261175a565b816040528281528760208487010111156117fa575f80fd5b826020860160208301375f928101602001929092525095945050505050565b602080825282518282018190525f9190848201906040850190845b818110156118595783516001600160a01b031683529284019291840191600101611834565b50909695505050505050565b602080825282518282018190525f9190848201906040850190845b81811015611859578351151583529284019291840191600101611880565b5f80602083850312156118af575f80fd5b823567ffffffffffffffff808211156118c6575f80fd5b818501915085601f8301126118d9575f80fd5b8135818111156118e7575f80fd5b8660208260051b85010111156118fb575f80fd5b60209290920196919550909350505050565b60208082526022908201527f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f604082015261371760f11b606082015260800190565b600181811c9082168061196357607f821691505b602082108103610ff457634e487b7160e01b5f52602260045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f600182016119ba576119ba611995565b5060010190565b5f602082840312156119d1575f80fd5b815180151581146116f1575f80fd5b601f8211156111d6575f81815260208120601f850160051c81016020861015611a065750805b601f850160051c820191505b81811015611a2557828155600101611a12565b505050505050565b815167ffffffffffffffff811115611a4757611a4761175a565b611a5b81611a55845461194f565b846119e0565b602080601f831160018114611a8e575f8415611a775750858301515b5f19600386901b1c1916600185901b178555611a25565b5f85815260208120601f198616915b82811015611abc57888601518255948401946001909101908401611a9d565b5085821015611ad957878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b60208082526017908201527f457363726f773a206e6f2066756e6473206c6f61646564000000000000000000604082015260600190565b81810381811115611b3357611b33611995565b92915050565b634e487b7160e01b5f52603160045260245ffdfea26469706673582212200d5fd2a34c697a0fc21887d51396bb5255b4df99157911554d86dbfca8510ddc64736f6c63430008140033", "deployedBytecode": "0x608060405234801561000f575f80fd5b50600436106101c6575f3560e01c8063a0e67e2b116100fe578063ce1b815f1161009e578063f4a4c0a71161006e578063f4a4c0a7146103ee578063fa2c689e146103f6578063fc0c546a146103ff578063fc99981d14610426575f80fd5b8063ce1b815f146103a4578063d3650fb8146103b5578063da742228146103c8578063e02160c4146103db575f80fd5b8063c2e395a7116100d9578063c2e395a714610352578063c6d7ef0314610367578063c73992e41461036f578063c7c4ff4614610391575f80fd5b8063a0e67e2b14610321578063aa8c217c14610336578063b646c1941461033f575f80fd5b806366d003ac1161016957806374b25b8e1161014457806374b25b8e146102e257806390c3f38f146102f957806396fd34091461030c5780639e2af36c14610314575f80fd5b806366d003ac1461027d5780636d218e48146102ad5780637065cb48146102cf575f80fd5b80635260f5e6116101a45780635260f5e614610238578063572b6c05146102405780635c500818146102625780635c8cf75014610275575f80fd5b8063173825d9146101ca5780631a092541146101df5780632f54bf6e146101fd575b5f80fd5b6101dd6101d83660046116cb565b610439565b005b6101e7610507565b6040516101f491906116f8565b60405180910390f35b61022861020b3660046116cb565b6001600160a01b03165f9081526020819052604090205460ff1690565b60405190151581526020016101f4565b6101dd610597565b61022861024e3660046116cb565b6003546001600160a01b0391821691161490565b6101dd610270366004611743565b61063d565b6101dd6108b3565b6006546102959061010090046001600160a01b031681565b6040516001600160a01b0390911681526020016101f4565b6102286102bb3660046116cb565b600a6020525f908152604090205460ff1681565b6101dd6102dd3660046116cb565b610a7f565b6102eb60085481565b6040519081526020016101f4565b6101dd61030736600461176e565b610b31565b6101dd610b72565b6006546102289060ff1681565b610329610d5a565b6040516101f49190611819565b6102eb60055481565b6101dd61034d3660046116cb565b610db9565b61035a610f26565b6040516101f49190611865565b6005546102eb565b61022861037d3660046116cb565b600b6020525f908152604090205460ff1681565b600754610295906001600160a01b031681565b6003546001600160a01b0316610295565b6102956103c3366004611743565b610ffa565b6101dd6103d63660046116cb565b611022565b6101dd6103e936600461189e565b611071565b6103296111db565b6102eb60095481565b6102957f000000000000000000000000000000000000000000000000000000000000000081565b6101dd6104343660046116cb565b611239565b600154158061044e575061044e61020b61132c565b6104735760405162461bcd60e51b815260040161046a9061190d565b60405180910390fd5b6001600160a01b0381165f9081526020819052604090205460ff166104da5760405162461bcd60e51b815260206004820152601e60248201527f5461726765742061646472657373206973206e6f7420616e206f776e65720000604482015260640161046a565b6001600160a01b0381165f908152602081905260409020805460ff1916905561050460018261135f565b50565b6060600280546105169061194f565b80601f01602080910402602001604051908101604052809291908181526020018280546105429061194f565b801561058d5780601f106105645761010080835404028352916020019161058d565b820191905f5260205f20905b81548152906001019060200180831161057057829003601f168201915b5050505050905090565b60015415806105ac57506105ac61020b61132c565b6105c85760405162461bcd60e51b815260040161046a9061190d565b5f5b60015481101561062f575f805f600184815481106105ea576105ea611981565b5f918252602080832091909101546001600160a01b031683528201929092526040019020805460ff191691151591909117905580610627816119a9565b9150506105ca565b5061063b60015f61169d565b565b61064561145e565b60065460ff16156106915760405162461bcd60e51b8152602060048201526016602482015275115cd8dc9bddce88185b1c9958591e481b1bd859195960521b604482015260640161046a565b5f81116106e05760405162461bcd60e51b815260206004820152601960248201527f457363726f773a20616d6f756e74206d757374206265203e3000000000000000604482015260640161046a565b5f6106e961132c565b600780546001600160a01b0319166001600160a01b038316179055905061070f81610a7f565b6001600160a01b038181165f818152600a60205260408082208054600160ff199182168117909255600c8054808401825594527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c790930180546001600160a01b03191685179055600881905560058790556006805490931617909155516323b872dd60e01b81526004810191909152306024820152604481018490527f0000000000000000000000000000000000000000000000000000000000000000909116906323b872dd906064016020604051808303815f875af11580156107f5573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061081991906119c1565b6108655760405162461bcd60e51b815260206004820152601d60248201527f457363726f773a20746f6b656e207472616e73666572206661696c6564000000604482015260640161046a565b806001600160a01b03167f4565ff6fbd6c52f5c536c335b15ea7178d5cb5c4fc9d7ce2e2d3985225aea785836040516108a091815260200190565b60405180910390a2506105046001600455565b60015415806108c857506108c861020b61132c565b6108e45760405162461bcd60e51b815260040161046a9061190d565b6108ec61145e565b60065460ff1661093e5760405162461bcd60e51b815260206004820152601a60248201527f457363726f773a206e6f2066756e647320746f2063616e63656c000000000000604482015260640161046a565b5f61094761132c565b60055460075460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905292935090917f00000000000000000000000000000000000000000000000000000000000000009091169063a9059cbb906044016020604051808303815f875af11580156109c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109e491906119c1565b610a285760405162461bcd60e51b8152602060048201526015602482015274115cd8dc9bddce881c995d1d5c9b8819985a5b1959605a1b604482015260640161046a565b816001600160a01b03167fdceb09d55d6cf1424fafc2f14ad2b30c9e2cae7d1b5f28ef953c630ffef6659e82604051610a6391815260200190565b60405180910390a2610a736114b7565b505061063b6001600455565b6001541580610a945750610a9461020b61132c565b610ab05760405162461bcd60e51b815260040161046a9061190d565b6001600160a01b0381165f9081526020819052604090205460ff16610504576001600160a01b03165f818152602081905260408120805460ff191660019081179091558054808201825591527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319169091179055565b6001541580610b465750610b4661020b61132c565b610b625760405162461bcd60e51b815260040161046a9061190d565b6002610b6e8282611a2d565b5050565b610b7a61145e565b5f610b8361132c565b6001600160a01b0381165f908152600a602052604090205490915060ff16610bed5760405162461bcd60e51b815260206004820152601760248201527f457363726f773a206e6f7420616e20617070726f766572000000000000000000604482015260640161046a565b6001600160a01b0381165f908152600b602052604090205460ff1615610c555760405162461bcd60e51b815260206004820152601860248201527f457363726f773a20616c726561647920617070726f7665640000000000000000604482015260640161046a565b60065460ff16610c775760405162461bcd60e51b815260040161046a90611ae9565b60065461010090046001600160a01b0316610cd45760405162461bcd60e51b815260206004820152601760248201527f457363726f773a20726563697069656e7420756e736574000000000000000000604482015260640161046a565b6001600160a01b0381165f908152600b60205260408120805460ff191660011790556009805491610d04836119a9565b90915550506040516001600160a01b038216907ff38e0318caadc897596ef4a074a12afea95ec5bce6c8c27e54120e5b6da26fb8905f90a260085460095403610d4f57610d4f611567565b5061063b6001600455565b6060600180548060200260200160405190810160405280929190818152602001828054801561058d57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610d92575050505050905090565b6001541580610dce5750610dce61020b61132c565b610dea5760405162461bcd60e51b815260040161046a9061190d565b60065460ff16610e0c5760405162461bcd60e51b815260040161046a90611ae9565b6001600160a01b038116610e5a5760405162461bcd60e51b815260206004820152601560248201527422b9b1b937bb9d103d32b9379030b8383937bb32b960591b604482015260640161046a565b6001600160a01b0381165f908152600a602052604090205460ff16610504576001600160a01b0381165f818152600a60205260408120805460ff19166001908117909155600c8054918201815582527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c70180546001600160a01b0319169092179091556008805491610eeb836119a9565b90915550506040516001600160a01b038216907f835bddf1ceee4956e4329af9edf018523c1191238187a597453f6020bcadb042905f90a250565b600c546060905f9067ffffffffffffffff811115610f4657610f4661175a565b604051908082528060200260200182016040528015610f6f578160200160208202803683370190505b5090505f5b600c54811015610ff457600b5f600c8381548110610f9457610f94611981565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054825160ff90911690839083908110610fd257610fd2611981565b9115156020928302919091019091015280610fec816119a9565b915050610f74565b50919050565b600c8181548110611009575f80fd5b5f918252602090912001546001600160a01b0316905081565b6001541580611037575061103761020b61132c565b6110535760405162461bcd60e51b815260040161046a9061190d565b600380546001600160a01b0319166001600160a01b03831617905550565b6001541580611086575061108661020b61132c565b6110a25760405162461bcd60e51b815260040161046a9061190d565b60065460ff166110c45760405162461bcd60e51b815260040161046a90611ae9565b5f5b818110156111d6575f8383838181106110e1576110e1611981565b90506020020160208101906110f691906116cb565b6001600160a01b0381165f908152600a602052604090205490915060ff166111c3576001600160a01b0381165f818152600a60205260408120805460ff19166001908117909155600c8054918201815582527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c70180546001600160a01b031916909217909155600880549161118a836119a9565b90915550506040516001600160a01b038216907f835bddf1ceee4956e4329af9edf018523c1191238187a597453f6020bcadb042905f90a25b50806111ce816119a9565b9150506110c6565b505050565b6060600c80548060200260200160405190810160405280929190818152602001828054801561058d57602002820191905f5260205f209081546001600160a01b03168152600190910190602001808311610d92575050505050905090565b600154158061124e575061124e61020b61132c565b61126a5760405162461bcd60e51b815260040161046a9061190d565b6001600160a01b0381166112b95760405162461bcd60e51b8152602060048201526016602482015275115cd8dc9bddce881e995c9bc81c9958da5c1a595b9d60521b604482015260640161046a565b60065460ff166112db5760405162461bcd60e51b815260040161046a90611ae9565b60068054610100600160a81b0319166101006001600160a01b038416908102919091179091556040517f9026684f979adf409a07ab388368302b05b5c18fae3dbf3c0a6f4cb5be333d05905f90a250565b5f6014361080159061134857506003546001600160a01b031633145b1561135a575060131936013560601c90565b503390565b5f5b82548110156111d657816001600160a01b031683828154811061138657611386611981565b5f918252602090912001546001600160a01b03160361144c57825483906113af90600190611b20565b815481106113bf576113bf611981565b905f5260205f20015f9054906101000a90046001600160a01b03168382815481106113ec576113ec611981565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055508280548061142757611427611b39565b5f8281526020902081015f1990810180546001600160a01b0319169055019055505050565b80611456816119a9565b915050611361565b6002600454036114b05760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161046a565b6002600455565b5f5b600c54811015611525575f600c82815481106114d7576114d7611981565b5f9182526020808320909101546001600160a01b03168252600a81526040808320805460ff19908116909155600b90925290912080549091169055508061151d816119a9565b9150506114b9565b50611531600c5f61169d565b5f6005819055600680546001600160a81b0319169055600780546001600160a01b0319169055600881905560095561063b610597565b60055460065460405163a9059cbb60e01b81526101009091046001600160a01b039081166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303815f875af11580156115df573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061160391906119c1565b61164f5760405162461bcd60e51b815260206004820152601f60248201527f457363726f773a2072656c65617365207472616e73666572206661696c656400604482015260640161046a565b6006546040518281526101009091046001600160a01b0316907f221c08a06b07a64803b3787861a3f276212fcccb51c2e6234077a9b8cb13047a9060200160405180910390a26105046114b7565b5080545f8255905f5260205f209081019061050491905b808211156116c7575f81556001016116b4565b5090565b5f602082840312156116db575f80fd5b81356001600160a01b03811681146116f1575f80fd5b9392505050565b5f6020808352835180828501525f5b8181101561172357858101830151858201604001528201611707565b505f604082860101526040601f19601f8301168501019250505092915050565b5f60208284031215611753575f80fd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b5f6020828403121561177e575f80fd5b813567ffffffffffffffff80821115611795575f80fd5b818401915084601f8301126117a8575f80fd5b8135818111156117ba576117ba61175a565b604051601f8201601f19908116603f011681019083821181831017156117e2576117e261175a565b816040528281528760208487010111156117fa575f80fd5b826020860160208301375f928101602001929092525095945050505050565b602080825282518282018190525f9190848201906040850190845b818110156118595783516001600160a01b031683529284019291840191600101611834565b50909695505050505050565b602080825282518282018190525f9190848201906040850190845b81811015611859578351151583529284019291840191600101611880565b5f80602083850312156118af575f80fd5b823567ffffffffffffffff808211156118c6575f80fd5b818501915085601f8301126118d9575f80fd5b8135818111156118e7575f80fd5b8660208260051b85010111156118fb575f80fd5b60209290920196919550909350505050565b60208082526022908201527f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f604082015261371760f11b606082015260800190565b600181811c9082168061196357607f821691505b602082108103610ff457634e487b7160e01b5f52602260045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f600182016119ba576119ba611995565b5060010190565b5f602082840312156119d1575f80fd5b815180151581146116f1575f80fd5b601f8211156111d6575f81815260208120601f850160051c81016020861015611a065750805b601f850160051c820191505b81811015611a2557828155600101611a12565b505050505050565b815167ffffffffffffffff811115611a4757611a4761175a565b611a5b81611a55845461194f565b846119e0565b602080601f831160018114611a8e575f8415611a775750858301515b5f19600386901b1c1916600185901b178555611a25565b5f85815260208120601f198616915b82811015611abc57888601518255948401946001909101908401611a9d565b5085821015611ad957878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b60208082526017908201527f457363726f773a206e6f2066756e6473206c6f61646564000000000000000000604082015260600190565b81810381811115611b3357611b33611995565b92915050565b634e487b7160e01b5f52603160045260245ffdfea26469706673582212200d5fd2a34c697a0fc21887d51396bb5255b4df99157911554d86dbfca8510ddc64736f6c63430008140033", "linkReferences": {}, "deployedLinkReferences": {} }