@defi-wonderland/keep3r-v2
Version:
The Keep3r Network is a decentralized network for projects that need external devops, and for external teams to find keeper jobs
793 lines • 62.5 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "UniV3PairManagerForTest",
"sourceName": "solidity/for-test/UniV3PairManagerForTest.sol",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "_pool",
"type": "address"
},
{
"internalType": "address",
"name": "_governance",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "ExcessiveSlippage",
"type": "error"
},
{
"inputs": [],
"name": "NoGovernanceZeroAddress",
"type": "error"
},
{
"inputs": [],
"name": "OnlyGovernance",
"type": "error"
},
{
"inputs": [],
"name": "OnlyPendingGovernance",
"type": "error"
},
{
"inputs": [],
"name": "OnlyPool",
"type": "error"
},
{
"inputs": [],
"name": "UnsuccessfulTransfer",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "_pendingGovernance",
"type": "address"
}
],
"name": "GovernanceProposal",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "_governance",
"type": "address"
}
],
"name": "GovernanceSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [],
"name": "acceptGovernance",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint128",
"name": "liquidity",
"type": "uint128"
},
{
"internalType": "uint256",
"name": "amount0Min",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amount1Min",
"type": "uint256"
},
{
"internalType": "address",
"name": "to",
"type": "address"
}
],
"name": "burn",
"outputs": [
{
"internalType": "uint256",
"name": "amount0",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amount1",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "collect",
"outputs": [
{
"internalType": "uint256",
"name": "amount0",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amount1",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "factory",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "fee",
"outputs": [
{
"internalType": "uint24",
"name": "",
"type": "uint24"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "governance",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "amount0Desired",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amount1Desired",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amount0Min",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amount1Min",
"type": "uint256"
}
],
"name": "internalAddLiquidity",
"outputs": [
{
"internalType": "uint128",
"name": "liquidity",
"type": "uint128"
},
{
"internalType": "uint256",
"name": "amount0",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amount1",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "dst",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "internalBurn",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "dst",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "internalMint",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "address",
"name": "payer",
"type": "address"
},
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "internalPay",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "internalSafeTransferFrom",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "src",
"type": "address"
},
{
"internalType": "address",
"name": "dst",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "internalTransferTokens",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "amount0Desired",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amount1Desired",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amount0Min",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amount1Min",
"type": "uint256"
},
{
"internalType": "address",
"name": "to",
"type": "address"
}
],
"name": "mint",
"outputs": [
{
"internalType": "uint128",
"name": "liquidity",
"type": "uint128"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "pendingGovernance",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "pool",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "position",
"outputs": [
{
"internalType": "uint128",
"name": "liquidity",
"type": "uint128"
},
{
"internalType": "uint256",
"name": "feeGrowthInside0LastX128",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "feeGrowthInside1LastX128",
"type": "uint256"
},
{
"internalType": "uint128",
"name": "tokensOwed0",
"type": "uint128"
},
{
"internalType": "uint128",
"name": "tokensOwed1",
"type": "uint128"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_governance",
"type": "address"
}
],
"name": "setGovernance",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "sqrtRatioAX96",
"outputs": [
{
"internalType": "uint160",
"name": "",
"type": "uint160"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "sqrtRatioBX96",
"outputs": [
{
"internalType": "uint160",
"name": "",
"type": "uint160"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "tickLower",
"outputs": [
{
"internalType": "int24",
"name": "",
"type": "int24"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "tickSpacing",
"outputs": [
{
"internalType": "int24",
"name": "",
"type": "int24"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "tickUpper",
"outputs": [
{
"internalType": "int24",
"name": "",
"type": "int24"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "token0",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "token1",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "amount0Owed",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amount1Owed",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "uniswapV3MintCallback",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"stateMutability": "payable",
"type": "receive"
}
],
"bytecode": "0x6101c06040523480156200001257600080fd5b506040516200350f3803806200350f833981016040819052620000359162000b65565b8181806001600160a01b0381166200005f5760405162b293ed60e81b815260040160405180910390fd5b600080546001600160a01b0319166001600160a01b039283161781556040805163ddca3f4360e01b81529051919285169163ddca3f4391600480820192602092909190829003018186803b158015620000b757600080fd5b505afa158015620000cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000f2919062000c7a565b90506000836001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156200013057600080fd5b505afa15801562000145573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200016b919062000b40565b90506000846001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b158015620001a957600080fd5b505afa158015620001be573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e4919062000b40565b90506000856001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200022257600080fd5b505afa15801562000237573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025d919062000b9d565b905060006200027082620d89e862000e5a565b6200027f90620d89e862000d9c565b905060006200028e8262000e96565b33606090811b60805289811b6001600160601b031990811660e05260e889811b6001600160e81b03191661010052600287810b810b821b6101a05286810b810b821b6101805284810b900b901b6101605287821b811660a0529086901b1660c052604080516395d89b4160e01b815290519192506001600160a01b038716916395d89b4191600480820192600092909190829003018186803b1580156200033457600080fd5b505afa15801562000349573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000373919081019062000bc2565b846001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b158015620003ad57600080fd5b505afa158015620003c2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620003ec919081019062000bc2565b604051602001620003ff92919062000cf1565b604051602081830303815290604052600290805190602001906200042592919062000a7d565b50846001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b1580156200046057600080fd5b505afa15801562000475573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200049f919081019062000bc2565b846001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b158015620004d957600080fd5b505afa158015620004ee573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000518919081019062000bc2565b6040516020016200052b92919062000ca1565b604051602081830303815290604052600390805190602001906200055192919062000a7d565b5062000568816200061b60201b6200117e1760201c565b6001600160a01b0316610120816001600160a01b031660601b815250506200059b826200061b60201b6200117e1760201c565b606090811b6001600160601b031916610140526040805191820181526001600160a01b03968716808352959096166020820181905262ffffff9790971695018590525050600780546001600160a01b03191690921790915550600880546001600160b81b031916909217600160a01b9091021790555062000f1e92505050565b60008060008360020b1262000634578260020b62000643565b8260020b620006439062000ebc565b905062000654620d89e71962000e96565b60020b8111156200068f5760405162461bcd60e51b81526020600482015260016024820152601560fa1b604482015260640160405180910390fd5b600060018216620006a557600160801b620006b7565b6ffffcb933bd6fad37aa2d162d1a5940015b6001600160881b031690506002821615620006ef576080620006ea826ffff97272373d413259a46990580e213a62000d7a565b901c90505b60048216156200071c57608062000717826ffff2e50f5f656932ef12357cf3c7fdcc62000d7a565b901c90505b60088216156200074957608062000744826fffe5caca7e10e4e61c3624eaa0941cd062000d7a565b901c90505b60108216156200077657608062000771826fffcb9843d60f6159c9db58835c92664462000d7a565b901c90505b6020821615620007a35760806200079e826fff973b41fa98c081472e6896dfb254c062000d7a565b901c90505b6040821615620007d0576080620007cb826fff2ea16466c96a3843ec78b326b5286162000d7a565b901c90505b6080821615620007fd576080620007f8826ffe5dee046a99a2a811c461f1969c305362000d7a565b901c90505b6101008216156200082b57608062000826826ffcbe86c7900a88aedcffc83b479aa3a462000d7a565b901c90505b6102008216156200085957608062000854826ff987a7253ac413176f2b074cf7815e5462000d7a565b901c90505b6104008216156200088757608062000882826ff3392b0822b70005940c7a398e4b70f362000d7a565b901c90505b610800821615620008b5576080620008b0826fe7159475a2c29b7443b29c7fa6e889d962000d7a565b901c90505b611000821615620008e3576080620008de826fd097f3bdfd2022b8845ad8f792aa582562000d7a565b901c90505b612000821615620009115760806200090c826fa9f746462d870fdf8a65dc1f90e061e562000d7a565b901c90505b6140008216156200093f5760806200093a826f70d869a156d2a1b890bb3df62baf32f762000d7a565b901c90505b6180008216156200096d57608062000968826f31be135f97d08fd981231505542fcfa662000d7a565b901c90505b620100008216156200099c57608062000997826f09aa508b5b7a84e1c677de54f3e99bc962000d7a565b901c90505b62020000821615620009ca576080620009c5826e5d6af8dedb81196699c329225ee60462000d7a565b901c90505b62040000821615620009f7576080620009f2826d2216e584f5fa1ea926041bedfe9862000d7a565b901c90505b6208000082161562000a2257608062000a1d826b048a170391f7dc42444e8fa262000d7a565b901c90505b60008460020b131562000a405762000a3d8160001962000d63565b90505b62000a516401000000008262000e7f565b1562000a5f57600162000a62565b60005b62000a759060ff16602083901c62000d48565b949350505050565b82805462000a8b9062000e1d565b90600052602060002090601f01602090048101928262000aaf576000855562000afa565b82601f1062000aca57805160ff191683800117855562000afa565b8280016001018555821562000afa579182015b8281111562000afa57825182559160200191906001019062000add565b5062000b0892915062000b0c565b5090565b5b8082111562000b08576000815560010162000b0d565b80516001600160a01b038116811462000b3b57600080fd5b919050565b60006020828403121562000b5357600080fd5b62000b5e8262000b23565b9392505050565b6000806040838503121562000b7957600080fd5b62000b848362000b23565b915062000b946020840162000b23565b90509250929050565b60006020828403121562000bb057600080fd5b81518060020b811462000b5e57600080fd5b60006020828403121562000bd557600080fd5b81516001600160401b038082111562000bed57600080fd5b818401915084601f83011262000c0257600080fd5b81518181111562000c175762000c1762000f08565b604051601f8201601f19908116603f0116810190838211818310171562000c425762000c4262000f08565b8160405282815287602084870101111562000c5c57600080fd5b62000c6f83602083016020880162000dea565b979650505050505050565b60006020828403121562000c8d57600080fd5b815162ffffff8116811462000b5e57600080fd5b636b4c502d60e01b81526000835162000cc281600485016020880162000dea565b602f60f81b600491840191820152835162000ce581600584016020880162000dea565b01600501949350505050565b6a025b2b2b819b926281016960ad1b81526000835162000d1981600b85016020880162000dea565b602f60f81b600b91840191820152835162000d3c81600c84016020880162000dea565b01600c01949350505050565b6000821982111562000d5e5762000d5e62000edc565b500190565b60008262000d755762000d7562000ef2565b500490565b600081600019048311821515161562000d975762000d9762000edc565b500290565b60008160020b8360020b6000811281627fffff190183128115161562000dc65762000dc662000edc565b81627fffff01831381161562000de05762000de062000edc565b5090039392505050565b60005b8381101562000e0757818101518382015260200162000ded565b8381111562000e17576000848401525b50505050565b600181811c9082168062000e3257607f821691505b6020821081141562000e5457634e487b7160e01b600052602260045260246000fd5b50919050565b60008260020b8062000e705762000e7062000ef2565b808360020b0791505092915050565b60008262000e915762000e9162000ef2565b500690565b60008160020b627fffff1981141562000eb35762000eb362000edc565b60000392915050565b6000600160ff1b82141562000ed55762000ed562000edc565b5060000390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b60805160601c60a05160601c60c05160601c60e05160601c6101005160e81c6101205160601c6101405160601c6101605160e81c6101805160e81c6101a05160e81c6124af6200106060003960006106430152600081816103ec0152818161087701528181610c6701528181610dbe01528181610fb5015281816110df01526118e80152600081816104330152818161085601528181610c3c01528181610d9c01528181610f94015281816110bd01526118c60152600081816105ba01526117de01526000818161033101526117bd015260006107030152600081816102a20152818161082601528181610cab01528181610d6d01528181610e7401528181610ec701528181610f0501528181610f640152818161108a01528181611720015261189501526000610677015260006102610152600061058601526124af6000f3fe60806040526004361061019d5760003560e01c806395d89b41116100dd57806395d89b41146104a2578063a3e6dc28146104b7578063a5dc7d4d146104ef578063a9059cbb14610534578063ab033ea914610554578063c45a015514610574578063c6275261146105a8578063cf45affb146105dc578063cf51148d146105fc578063d0c93a7c14610631578063d21220a714610665578063d348799714610699578063dd62ed3e146106b9578063ddca3f43146106f1578063e522538114610739578063eaf00b231461074e578063f39c38a01461076e57600080fd5b806306fdde03146101a957806309218e91146101d4578063095ea7b31461021f5780630dfe16811461024f57806316f0115b1461029057806318160ddd146102c4578063238efcbc146102e857806323b872dd146102ff5780632ea28f5b1461031f578063313ce5671461035357806335001a1a1461037a5780633a323bdf1461039a5780634c0549b0146103ba57806355b812a8146103da57806359c4f905146104215780635aa6e6751461045557806370a082311461047557600080fd5b366101a457005b600080fd5b3480156101b557600080fd5b506101be61078e565b6040516101cb9190612272565b60405180910390f35b3480156101e057600080fd5b506101e961081c565b604080516001600160801b039687168152602081019590955284019290925283166060830152909116608082015260a0016101cb565b34801561022b57600080fd5b5061023f61023a366004611dcf565b61093d565b60405190151581526020016101cb565b34801561025b57600080fd5b506102837f000000000000000000000000000000000000000000000000000000000000000081565b6040516101cb91906121d1565b34801561029c57600080fd5b506102837f000000000000000000000000000000000000000000000000000000000000000081565b3480156102d057600080fd5b506102da60045481565b6040519081526020016101cb565b3480156102f457600080fd5b506102fd6109a9565b005b34801561030b57600080fd5b5061023f61031a366004611d8e565b610a35565b34801561032b57600080fd5b506102837f000000000000000000000000000000000000000000000000000000000000000081565b34801561035f57600080fd5b50610368601281565b60405160ff90911681526020016101cb565b34801561038657600080fd5b506102fd610395366004611dcf565b610afe565b3480156103a657600080fd5b506102fd6103b5366004611dcf565b610b0c565b3480156103c657600080fd5b506102fd6103d5366004611d3d565b610b16565b3480156103e657600080fd5b5061040e7f000000000000000000000000000000000000000000000000000000000000000081565b60405160029190910b81526020016101cb565b34801561042d57600080fd5b5061040e7f000000000000000000000000000000000000000000000000000000000000000081565b34801561046157600080fd5b50600054610283906001600160a01b031681565b34801561048157600080fd5b506102da610490366004611ce7565b60066020526000908152604090205481565b3480156104ae57600080fd5b506101be610b28565b3480156104c357600080fd5b506104d76104d236600461211a565b610b35565b6040516001600160801b0390911681526020016101cb565b3480156104fb57600080fd5b5061050f61050a3660046120e8565b610b65565b604080516001600160801b0390941684526020840192909252908201526060016101cb565b34801561054057600080fd5b5061023f61054f366004611dcf565b610b86565b34801561056057600080fd5b506102fd61056f366004611ce7565b610b9c565b34801561058057600080fd5b506102837f000000000000000000000000000000000000000000000000000000000000000081565b3480156105b457600080fd5b506102837f000000000000000000000000000000000000000000000000000000000000000081565b3480156105e857600080fd5b506102fd6105f7366004611d8e565b610c1d565b34801561060857600080fd5b5061061c610617366004611eff565b610c2d565b604080519283526020830191909152016101cb565b34801561063d57600080fd5b5061040e7f000000000000000000000000000000000000000000000000000000000000000081565b34801561067157600080fd5b506102837f000000000000000000000000000000000000000000000000000000000000000081565b3480156106a557600080fd5b506102fd6106b4366004612069565b610e59565b3480156106c557600080fd5b506102da6106d4366004611d04565b600560209081526000928352604080842090915290825290205481565b3480156106fd57600080fd5b506107257f000000000000000000000000000000000000000000000000000000000000000081565b60405162ffffff90911681526020016101cb565b34801561074557600080fd5b5061061c610f31565b34801561075a57600080fd5b506102fd610769366004611d3d565b611172565b34801561077a57600080fd5b50600154610283906001600160a01b031681565b6002805461079b90612371565b80601f01602080910402602001604051908101604052809291908181526020018280546107c790612371565b80156108145780601f106107e957610100808354040283529160200191610814565b820191906000526020600020905b8154815290600101906020018083116107f757829003601f168201915b505050505081565b60008060008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663514ea4bf307f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006040516020016108a893929190612185565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004016108dc91815260200190565b60a06040518083038186803b1580156108f457600080fd5b505afa158015610908573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061092c9190611f49565b939992985090965094509092509050565b3360008181526005602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906109989086815260200190565b60405180910390a350600192915050565b6001546001600160a01b031633146109d457604051637ef5703160e11b815260040160405180910390fd5b60018054600080546001600160a01b0383166001600160a01b031991821681179092559091169091556040517fc73be659241aade67e9a059bcf21494955018b213dbd1179054ccf928b13f3b691610a2b916121d1565b60405180910390a1565b6001600160a01b038316600081815260056020908152604080832033808552925282205491929091908214801590610a6f57506000198114155b15610ae5576000610a80858361232e565b6001600160a01b038881166000818152600560209081526040808320948916808452948252918290208590559051848152939450919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505b610af0868686611594565b6001925050505b9392505050565b610b088282611630565b5050565b610b0882826116a8565b610b2284848484611172565b50505050565b6003805461079b90612371565b6000610b4386868686611718565b50909150610b5c9050826001600160801b038316611630565b95945050505050565b6000806000610b7687878787611718565b9250925092509450945094915050565b6000610b93338484611594565b50600192915050565b6000546001600160a01b03163314610bc7576040516354348f0360e01b815260040160405180910390fd5b600180546001600160a01b0319166001600160a01b0383161790556040517fe987aaedf9d279143bdf1eee16cf1d0feb47742867d81083df8d6cd0a5ac857f90610c129083906121d1565b60405180910390a150565b610c28838383611594565b505050565b60405163a34123a760e01b81527f0000000000000000000000000000000000000000000000000000000000000000600290810b60048301527f0000000000000000000000000000000000000000000000000000000000000000900b60248201526001600160801b038516604482015260009081906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a34123a7906064016040805180830381600087803b158015610cee57600080fd5b505af1158015610d02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d269190612045565b909250905084821080610d3857508381105b15610d56576040516397c7f53760e01b815260040160405180910390fd5b6040516309e3d67b60e31b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690634f1eb3d890610dea9086907f0000000000000000000000000000000000000000000000000000000000000000907f00000000000000000000000000000000000000000000000000000000000000009088908890600401612235565b6040805180830381600087803b158015610e0357600080fd5b505af1158015610e17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3b9190611ed0565b5050610e5033876001600160801b03166116a8565b94509492505050565b6000610e6782840184611e16565b9050336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb257604051634b60273560e01b815260040160405180910390fd5b8415610eec578051516020820151610eec91907f000000000000000000000000000000000000000000000000000000000000000088611172565b8315610f2a57610f2a81600001516020015182602001517f000000000000000000000000000000000000000000000000000000000000000087611172565b5050505050565b6000805481906001600160a01b03163314610f5f576040516354348f0360e01b815260040160405180910390fd5b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663514ea4bf307f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000604051602001610fe693929190612185565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b815260040161101a91815260200190565b60a06040518083038186803b15801561103257600080fd5b505afa158015611046573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106a9190611f49565b6000546040516309e3d67b60e31b81529297509095506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169550634f1eb3d8945061110b935016907f0000000000000000000000000000000000000000000000000000000000000000907f00000000000000000000000000000000000000000000000000000000000000009088908890600401612235565b6040805180830381600087803b15801561112457600080fd5b505af1158015611138573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115c9190611ed0565b6001600160801b03918216969116945092505050565b610b228484848461199f565b60008060008360020b12611195578260020b6111a2565b8260020b6111a2906123e3565b90506111b1620d89e7196123c0565b60020b8111156111eb5760405162461bcd60e51b81526020600482015260016024820152601560fa1b604482015260640160405180910390fd5b6000600182166111ff57600160801b611211565b6ffffcb933bd6fad37aa2d162d1a5940015b6001600160881b031690506002821615611246576080611241826ffff97272373d413259a46990580e213a6122e7565b901c90505b600482161561127057608061126b826ffff2e50f5f656932ef12357cf3c7fdcc6122e7565b901c90505b600882161561129a576080611295826fffe5caca7e10e4e61c3624eaa0941cd06122e7565b901c90505b60108216156112c45760806112bf826fffcb9843d60f6159c9db58835c9266446122e7565b901c90505b60208216156112ee5760806112e9826fff973b41fa98c081472e6896dfb254c06122e7565b901c90505b6040821615611318576080611313826fff2ea16466c96a3843ec78b326b528616122e7565b901c90505b608082161561134257608061133d826ffe5dee046a99a2a811c461f1969c30536122e7565b901c90505b61010082161561136d576080611368826ffcbe86c7900a88aedcffc83b479aa3a46122e7565b901c90505b610200821615611398576080611393826ff987a7253ac413176f2b074cf7815e546122e7565b901c90505b6104008216156113c35760806113be826ff3392b0822b70005940c7a398e4b70f36122e7565b901c90505b6108008216156113ee5760806113e9826fe7159475a2c29b7443b29c7fa6e889d96122e7565b901c90505b611000821615611419576080611414826fd097f3bdfd2022b8845ad8f792aa58256122e7565b901c90505b61200082161561144457608061143f826fa9f746462d870fdf8a65dc1f90e061e56122e7565b901c90505b61400082161561146f57608061146a826f70d869a156d2a1b890bb3df62baf32f76122e7565b901c90505b61800082161561149a576080611495826f31be135f97d08fd981231505542fcfa66122e7565b901c90505b620100008216156114c65760806114c1826f09aa508b5b7a84e1c677de54f3e99bc96122e7565b901c90505b620200008216156114f15760806114ec826e5d6af8dedb81196699c329225ee6046122e7565b901c90505b6204000082161561151b576080611516826d2216e584f5fa1ea926041bedfe986122e7565b901c90505b6208000082161561154357608061153e826b048a170391f7dc42444e8fa26122e7565b901c90505b60008460020b131561155e5761155b816000196122d3565b90505b61156c600160201b826123ac565b1561157857600161157b565b60005b61158c9060ff16602083901c6122bb565b949350505050565b6001600160a01b038316600090815260066020526040812080548392906115bc90849061232e565b90915550506001600160a01b038216600090815260066020526040812080548392906115e99084906122bb565b92505081905550816001600160a01b0316836001600160a01b031660008051602061245a8339815191528360405161162391815260200190565b60405180910390a3505050565b806004600082825461164291906122bb565b90915550506001600160a01b0382166000908152600660205260408120805483929061166f9084906122bb565b90915550506040518181526001600160a01b0383169060009060008051602061245a833981519152906020015b60405180910390a35050565b80600460008282546116ba919061232e565b90915550506001600160a01b038216600090815260066020526040812080548392906116e790849061232e565b90915550506040518181526000906001600160a01b0384169060008051602061245a8339815191529060200161169c565b6000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561177757600080fd5b505afa15801561178b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117af9190611fab565b5050505050509050611804817f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008b8b611a99565b6040805160a080820183526007546001600160a01b039081168385018181526008548084166060808801918252600160a01b90920462ffffff9081166080808a01918252948952336020998a019081528a51998a019690965291518616888a01529051169086015290518216848201528451808503909101815291830193849052633c8a7d8d60e01b9093529296507f000000000000000000000000000000000000000000000000000000000000000090911691633c8a7d8d916119139130917f0000000000000000000000000000000000000000000000000000000000000000917f0000000000000000000000000000000000000000000000000000000000000000918b919060a4016121e5565b6040805180830381600087803b15801561192c57600080fd5b505af1158015611940573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119649190612045565b90935091508583108061197657508482105b15611994576040516397c7f53760e01b815260040160405180910390fd5b509450945094915050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b1790529151600092839290881691611a0391906121b5565b6000604051808303816000865af19150503d8060008114611a40576040519150601f19603f3d011682016040523d82523d6000602084013e611a45565b606091505b5091509150811580611a735750805115801590611a73575080806020019051810190611a719190611dfb565b155b15611a91576040516316369daf60e31b815260040160405180910390fd5b505050505050565b6000836001600160a01b0316856001600160a01b03161115611ab9579293925b846001600160a01b0316866001600160a01b031611611ae457611add858585611b5b565b9050610b5c565b836001600160a01b0316866001600160a01b03161015611b46576000611b0b878686611b5b565b90506000611b1a878986611bc5565b9050806001600160801b0316826001600160801b031610611b3b5780611b3d565b815b92505050610b5c565b611b51858584611bc5565b9695505050505050565b6000826001600160a01b0316846001600160a01b03161115611b7b579192915b6000611b9e856001600160a01b0316856001600160a01b0316600160601b611bfb565b9050610b5c611bc08483611bb28989612306565b6001600160a01b0316611bfb565b611caa565b6000826001600160a01b0316846001600160a01b03161115611be5579192915b61158c611bc083600160601b611bb28888612306565b600080806000198587098587029250828110838203039150508060001415611c355760008411611c2a57600080fd5b508290049050610af7565b808411611c4157600080fd5b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b806001600160801b0381168114611cc057600080fd5b919050565b80518015158114611cc057600080fd5b805161ffff81168114611cc057600080fd5b600060208284031215611cf957600080fd5b8135610af78161242c565b60008060408385031215611d1757600080fd5b8235611d228161242c565b91506020830135611d328161242c565b809150509250929050565b60008060008060808587031215611d5357600080fd5b8435611d5e8161242c565b93506020850135611d6e8161242c565b92506040850135611d7e8161242c565b9396929550929360600135925050565b600080600060608486031215611da357600080fd5b8335611dae8161242c565b92506020840135611dbe8161242c565b929592945050506040919091013590565b60008060408385031215611de257600080fd5b8235611ded8161242c565b946020939093013593505050565b600060208284031215611e0d57600080fd5b610af782611cc5565b60008183036080811215611e2957600080fd5b604051604081018181106001600160401b0382111715611e5957634e487b7160e01b600052604160045260246000fd5b6040526060821215611e6a57600080fd5b611e72612285565b91508335611e7f8161242c565b82526020840135611e8f8161242c565b6020830152604084013562ffffff81168114611eaa57600080fd5b6040830152908152606083013590611ec18261242c565b60208101919091529392505050565b60008060408385031215611ee357600080fd5b8251611eee81612444565b6020840151909250611d3281612444565b60008060008060808587031215611f1557600080fd5b8435611f2081612444565b935060208501359250604085013591506060850135611f3e8161242c565b939692955090935050565b600080600080600060a08688031215611f6157600080fd5b8551611f6c81612444565b8095505060208601519350604086015192506060860151611f8c81612444565b6080870151909250611f9d81612444565b809150509295509295909350565b600080600080600080600060e0888a031215611fc657600080fd5b8751611fd18161242c565b8097505060208801518060020b8114611fe957600080fd5b9550611ff760408901611cd5565b945061200560608901611cd5565b935061201360808901611cd5565b925060a088015160ff8116811461202957600080fd5b915061203760c08901611cc5565b905092959891949750929550565b6000806040838503121561205857600080fd5b505080516020909101519092909150565b6000806000806060858703121561207f57600080fd5b843593506020850135925060408501356001600160401b03808211156120a457600080fd5b818701915087601f8301126120b857600080fd5b8135818111156120c757600080fd5b8860208285010111156120d957600080fd5b95989497505060200194505050565b600080600080608085870312156120fe57600080fd5b5050823594602084013594506040840135936060013592509050565b600080600080600060a0868803121561213257600080fd5b853594506020860135935060408601359250606086013591506080860135611f9d8161242c565b60008151808452612171816020860160208601612345565b601f01601f19169290920160200192915050565b60609390931b6001600160601b0319168352600291820b60e890811b6014850152910b901b6017820152601a0190565b600082516121c7818460208701612345565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0386168152600285810b602083015284900b60408201526001600160801b038316606082015260a06080820181905260009061222a90830184612159565b979650505050505050565b6001600160a01b03959095168552600293840b60208601529190920b60408401526001600160801b03918216606084015216608082015260a00190565b602081526000610af76020830184612159565b604051606081016001600160401b03811182821017156122b557634e487b7160e01b600052604160045260246000fd5b60405290565b600082198211156122ce576122ce612400565b500190565b6000826122e2576122e2612416565b500490565b600081600019048311821515161561230157612301612400565b500290565b60006001600160a01b038381169083168181101561232657612326612400565b039392505050565b60008282101561234057612340612400565b500390565b60005b83811015612360578181015183820152602001612348565b83811115610b225750506000910152565b600181811c9082168061238557607f821691505b602082108114156123a657634e487b7160e01b600052602260045260246000fd5b50919050565b6000826123bb576123bb612416565b500690565b60008160020b627fffff198114156123da576123da612400565b60000392915050565b6000600160ff1b8214156123f9576123f9612400565b5060000390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b6001600160a01b038116811461244157600080fd5b50565b6001600160801b038116811461244157600080fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212201a704c8e37e1e82766bcb1a581d023543cda75e44321d2c4f004756e33c2e74a64736f6c63430008070033",
"deployedBytecode": "0x60806040526004361061019d5760003560e01c806395d89b41116100dd57806395d89b41146104a2578063a3e6dc28146104b7578063a5dc7d4d146104ef578063a9059cbb14610534578063ab033ea914610554578063c45a015514610574578063c6275261146105a8578063cf45affb146105dc578063cf51148d146105fc578063d0c93a7c14610631578063d21220a714610665578063d348799714610699578063dd62ed3e146106b9578063ddca3f43146106f1578063e522538114610739578063eaf00b231461074e578063f39c38a01461076e57600080fd5b806306fdde03146101a957806309218e91146101d4578063095ea7b31461021f5780630dfe16811461024f57806316f0115b1461029057806318160ddd146102c4578063238efcbc146102e857806323b872dd146102ff5780632ea28f5b1461031f578063313ce5671461035357806335001a1a1461037a5780633a323bdf1461039a5780634c0549b0146103ba57806355b812a8146103da57806359c4f905146104215780635aa6e6751461045557806370a082311461047557600080fd5b366101a457005b600080fd5b3480156101b557600080fd5b506101be61078e565b6040516101cb9190612272565b60405180910390f35b3480156101e057600080fd5b506101e961081c565b604080516001600160801b039687168152602081019590955284019290925283166060830152909116608082015260a0016101cb565b34801561022b57600080fd5b5061023f61023a366004611dcf565b61093d565b60405190151581526020016101cb565b34801561025b57600080fd5b506102837f000000000000000000000000000000000000000000000000000000000000000081565b6040516101cb91906121d1565b34801561029c57600080fd5b506102837f000000000000000000000000000000000000000000000000000000000000000081565b3480156102d057600080fd5b506102da60045481565b6040519081526020016101cb565b3480156102f457600080fd5b506102fd6109a9565b005b34801561030b57600080fd5b5061023f61031a366004611d8e565b610a35565b34801561032b57600080fd5b506102837f000000000000000000000000000000000000000000000000000000000000000081565b34801561035f57600080fd5b50610368601281565b60405160ff90911681526020016101cb565b34801561038657600080fd5b506102fd610395366004611dcf565b610afe565b3480156103a657600080fd5b506102fd6103b5366004611dcf565b610b0c565b3480156103c657600080fd5b506102fd6103d5366004611d3d565b610b16565b3480156103e657600080fd5b5061040e7f000000000000000000000000000000000000000000000000000000000000000081565b60405160029190910b81526020016101cb565b34801561042d57600080fd5b5061040e7f000000000000000000000000000000000000000000000000000000000000000081565b34801561046157600080fd5b50600054610283906001600160a01b031681565b34801561048157600080fd5b506102da610490366004611ce7565b60066020526000908152604090205481565b3480156104ae57600080fd5b506101be610b28565b3480156104c357600080fd5b506104d76104d236600461211a565b610b35565b6040516001600160801b0390911681526020016101cb565b3480156104fb57600080fd5b5061050f61050a3660046120e8565b610b65565b604080516001600160801b0390941684526020840192909252908201526060016101cb565b34801561054057600080fd5b5061023f61054f366004611dcf565b610b86565b34801561056057600080fd5b506102fd61056f366004611ce7565b610b9c565b34801561058057600080fd5b506102837f000000000000000000000000000000000000000000000000000000000000000081565b3480156105b457600080fd5b506102837f000000000000000000000000000000000000000000000000000000000000000081565b3480156105e857600080fd5b506102fd6105f7366004611d8e565b610c1d565b34801561060857600080fd5b5061061c610617366004611eff565b610c2d565b604080519283526020830191909152016101cb565b34801561063d57600080fd5b5061040e7f000000000000000000000000000000000000000000000000000000000000000081565b34801561067157600080fd5b506102837f000000000000000000000000000000000000000000000000000000000000000081565b3480156106a557600080fd5b506102fd6106b4366004612069565b610e59565b3480156106c557600080fd5b506102da6106d4366004611d04565b600560209081526000928352604080842090915290825290205481565b3480156106fd57600080fd5b506107257f000000000000000000000000000000000000000000000000000000000000000081565b60405162ffffff90911681526020016101cb565b34801561074557600080fd5b5061061c610f31565b34801561075a57600080fd5b506102fd610769366004611d3d565b611172565b34801561077a57600080fd5b50600154610283906001600160a01b031681565b6002805461079b90612371565b80601f01602080910402602001604051908101604052809291908181526020018280546107c790612371565b80156108145780601f106107e957610100808354040283529160200191610814565b820191906000526020600020905b8154815290600101906020018083116107f757829003601f168201915b505050505081565b60008060008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663514ea4bf307f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006040516020016108a893929190612185565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004016108dc91815260200190565b60a06040518083038186803b1580156108f457600080fd5b505afa158015610908573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061092c9190611f49565b939992985090965094509092509050565b3360008181526005602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906109989086815260200190565b60405180910390a350600192915050565b6001546001600160a01b031633146109d457604051637ef5703160e11b815260040160405180910390fd5b60018054600080546001600160a01b0383166001600160a01b031991821681179092559091169091556040517fc73be659241aade67e9a059bcf21494955018b213dbd1179054ccf928b13f3b691610a2b916121d1565b60405180910390a1565b6001600160a01b038316600081815260056020908152604080832033808552925282205491929091908214801590610a6f57506000198114155b15610ae5576000610a80858361232e565b6001600160a01b038881166000818152600560209081526040808320948916808452948252918290208590559051848152939450919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505b610af0868686611594565b6001925050505b9392505050565b610b088282611630565b5050565b610b0882826116a8565b610b2284848484611172565b50505050565b6003805461079b90612371565b6000610b4386868686611718565b50909150610b5c9050826001600160801b038316611630565b95945050505050565b6000806000610b7687878787611718565b9250925092509450945094915050565b6000610b93338484611594565b50600192915050565b6000546001600160a01b03163314610bc7576040516354348f0360e01b815260040160405180910390fd5b600180546001600160a01b0319166001600160a01b0383161790556040517fe987aaedf9d279143bdf1eee16cf1d0feb47742867d81083df8d6cd0a5ac857f90610c129083906121d1565b60405180910390a150565b610c28838383611594565b505050565b60405163a34123a760e01b81527f0000000000000000000000000000000000000000000000000000000000000000600290810b60048301527f0000000000000000000000000000000000