[
{
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
},
{
"internalType": "address",
"name": "_voter",
"type": "address"
},
{
"internalType": "address",
"name": "_gaugeManager",
"type": "address"
},
{
"internalType": "address",
"name": "_bribeFactory",
"type": "address"
},
{
"internalType": "address",
"name": "_tokenHandler",
"type": "address"
},
{
"internalType": "address",
"name": "_token0",
"type": "address"
},
{
"internalType": "address",
"name": "_token1",
"type": "address"
},
{
"internalType": "string",
"name": "_type",
"type": "string"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "token",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "Recovered",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "rewardToken",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "reward",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "startTimestamp",
"type": "uint256"
}
],
"name": "RewardAdded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "user",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "rewardsToken",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "reward",
"type": "uint256"
}
],
"name": "RewardPaid",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_owner",
"type": "address"
}
],
"name": "SetOwner",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "Staked",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "Withdrawn",
"type": "event"
},
{
"inputs": [],
"name": "TYPE",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "WEEK",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_addr",
"type": "address"
}
],
"name": "_isAValidAutoVotingEscrow",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "avm",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "bribeFactory",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "bribeTokens",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "deposit",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"internalType": "address",
"name": "_rewardToken",
"type": "address"
}
],
"name": "earned",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "tokenAddress",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenAmount",
"type": "uint256"
}
],
"name": "emergencyRecoverERC20",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "gaugeManager",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getEpochStart",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getNextEpochStart",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "timestamp",
"type": "uint256"
}
],
"name": "getPriorVotingRewardsIndex",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "timestamp",
"type": "uint256"
}
],
"name": "getPriorVotingSupplyIndex",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"internalType": "address[]",
"name": "tokens",
"type": "address[]"
}
],
"name": "getReward",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_rewardToken",
"type": "address"
}
],
"name": "isRewardToken",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "lastEarn",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "minter",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_rewardsToken",
"type": "address"
},
{
"internalType": "uint256",
"name": "reward",
"type": "uint256"
}
],
"name": "notifyRewardAmount",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "numVotingRewardsPlots",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "numVotingSupplyPlots",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "tokenAddress",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenAmount",
"type": "uint256"
}
],
"name": "recoverERC20AndUpdateData",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "rewardsListLength",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_avm",
"type": "address"
}
],
"name": "setAVM",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_gaugeManager",
"type": "address"
}
],
"name": "setGaugeManager",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_minter",
"type": "address"
}
],
"name": "setMinter",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
}
],
"name": "setOwner",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_Voter",
"type": "address"
}
],
"name": "setVoter",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "tokenHandler",
"outputs": [
{
"internalType": "contract ITokenHandler",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "tokenRewardsPerEpoch",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "ve",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "voter",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "votingRewardsPlots",
"outputs": [
{
"internalType": "uint128",
"name": "balanceOf",
"type": "uint128"
},
{
"internalType": "uint32",
"name": "timestamp",
"type": "uint32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "votingSupplyPlots",
"outputs": [
{
"internalType": "uint128",
"name": "supply",
"type": "uint128"
},
{
"internalType": "uint32",
"name": "timestamp",
"type": "uint32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "withdraw",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
]0x60c06040523480156200001157600080fd5b5060405162002b6838038062002b6883398101604081905262000034916200046f565b60016000556001600160a01b038516158015906200005a57506001600160a01b03871615155b80156200006f57506001600160a01b03861615155b80156200008457506001600160a01b03881615155b620000bb5760405162461bcd60e51b81526020600482015260026024820152615a4160f01b60448201526064015b60405180910390fd5b62093a80600155600380546001600160a01b03808a166001600160a01b03199283168117909355600480548a831690841617815588821660805260088054928916929093169190911790915560408051638dd598fb60e01b81529051638dd598fb928281019260209291908290030181865afa15801562000140573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001669190620005d1565b6001600160a01b031660a0816001600160a01b031681525050856001600160a01b031663075461726040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001be573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e49190620005d1565b600560006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060a0516001600160a01b031663aaddb1396040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200024b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002719190620005d1565b600780546001600160a01b0319166001600160a01b0392831617905560055416620002c45760405162461bcd60e51b81526020600482015260026024820152615a4160f01b6044820152606401620000b2565b600680546001600160a01b0319166001600160a01b038a161790558051620002f490600990602084019062000396565b505060128054600181810183557fbb8a6a4669ba250d26cd7a459eca9d215f8307e33aebe50379bc5a3617ec344491820180546001600160a01b039687166001600160a01b03199182168117909255845480840190955593909201805494909516939092168317909355600092835260116020526040808420805460ff1990811684179091559284529092208054909116909117905550620006329350505050565b828054620003a490620005f6565b90600052602060002090601f016020900481019282620003c8576000855562000413565b82601f10620003e357805160ff191683800117855562000413565b8280016001018555821562000413579182015b8281111562000413578251825591602001919060010190620003f6565b506200042192915062000425565b5090565b5b8082111562000421576000815560010162000426565b80516001600160a01b03811681146200045457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600080600080600080600080610100898b0312156200048d57600080fd5b62000498896200043c565b97506020620004a9818b016200043c565b9750620004b960408b016200043c565b9650620004c960608b016200043c565b9550620004d960808b016200043c565b9450620004e960a08b016200043c565b9350620004f960c08b016200043c565b60e08b01519093506001600160401b03808211156200051757600080fd5b818c0191508c601f8301126200052c57600080fd5b81518181111562000541576200054162000459565b604051601f8201601f19908116603f011681019083821181831017156200056c576200056c62000459565b816040528281528f868487010111156200058557600080fd5b600093505b82841015620005a957848401860151818501870152928501926200058a565b82841115620005bb5760008684830101525b8096505050505050509295985092959890939650565b600060208284031215620005e457600080fd5b620005ef826200043c565b9392505050565b600181811c908216806200060b57607f821691505b6020821081036200062c57634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a0516124d862000690600039600081816102be01526116e901526000818161056d0152818161061b0152818161078401528181610a5601528181610c64015281816111080152818161132601526118fe01526124d86000f3fe608060405234801561001057600080fd5b50600436106102325760003560e01c8063a4a3e03511610130578063db9eb5e5116100b8578063f25e55a51161007c578063f25e55a51461058f578063f4359ce5146105ba578063f5ae2240146105c3578063f5f8d365146105d6578063fca3b5aa146105e957600080fd5b8063db9eb5e514610502578063e2bbb1581461053a578063e39c08fc1461054d578063e688639614610560578063eb4a78e01461056857600080fd5b8063b66503cf116100ff578063b66503cf146104a1578063bb24fe8a146104b4578063c95bda70146104c9578063cbda3cee146104dc578063d8cfc7f0146104ef57600080fd5b8063a4a3e03514610460578063aaddb13914610468578063b1c9b3511461047b578063b5fd73f81461048e57600080fd5b80634bc2a657116101be5780637e552f79116101825780637e552f79146103885780638da5cb5b1461039b57806392777b29146103ae57806395f05a6e146103d95780639cc7f7081461044057600080fd5b80634bc2a6571461032957806365c5f94a1461033c5780636b85568a1461034c5780636f05e50d1461036c5780637deeadc61461037557600080fd5b80631b3d6e87116102055780631b3d6e87146102a65780631f850716146102b9578063315700b2146102e0578063441a3e701461030357806346c96aac1461031657600080fd5b80630125bb3214610237578063075461721461024c57806313af40351461027c57806318160ddd1461028f575b600080fd5b61024a61024536600461204f565b6105fc565b005b60055461025f906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61024a61028a36600461207b565b610765565b610298600a5481565b604051908152602001610273565b60085461025f906001600160a01b031681565b61025f7f000000000000000000000000000000000000000000000000000000000000000081565b6102f36102ee36600461207b565b610832565b6040519015158152602001610273565b61024a610311366004612098565b610916565b60035461025f906001600160a01b031681565b61024a61033736600461207b565b610a37565b62093a8042818106900301610298565b61029861035a3660046120ba565b600e6020526000908152604090205481565b61029860105481565b6102986103833660046120ba565b610ae1565b61024a61039636600461207b565b610c45565b60065461025f906001600160a01b031681565b6102986103bc36600461204f565b600260209081526000928352604080842090915290825290205481565b61041c6103e7366004612098565b600d6020908152600092835260408084209091529082529020546001600160801b03811690600160801b900463ffffffff1682565b604080516001600160801b03909316835263ffffffff909116602083015201610273565b61029861044e3660046120ba565b600b6020526000908152604090205481565b610298610cea565b60075461025f906001600160a01b031681565b610298610489366004612098565b610d58565b6102f361049c36600461207b565b610ecf565b61024a6104af36600461204f565b610eda565b6104bc61105b565b60405161027391906120ff565b61024a6104d736600461204f565b6110e9565b60045461025f906001600160a01b031681565b61024a6104fd36600461207b565b611307565b61041c6105103660046120ba565b600f602052600090815260409020546001600160801b03811690600160801b900463ffffffff1682565b61024a610548366004612098565b611399565b61029861055b366004612132565b611481565b601254610298565b61025f7f000000000000000000000000000000000000000000000000000000000000000081565b61029861059d36600461204f565b600c60209081526000928352604080842090915290825290205481565b61029860015481565b61025f6105d13660046120ba565b61169e565b61024a6105e43660046121cd565b6116c8565b61024a6105f736600461207b565b6118df565b6006546001600160a01b031633148061063d5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6106625760405162461bcd60e51b815260040161065990612278565b60405180910390fd5b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa1580156106a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ca9190612294565b8111156107045760405162461bcd60e51b81526020600482015260086024820152670a89e9ebe9aaa86960c31b6044820152606401610659565b60065461071e906001600160a01b03848116911683611984565b816001600160a01b03167f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa288260405161075991815260200190565b60405180910390a25050565b6006546001600160a01b03163314806107a65750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6107c25760405162461bcd60e51b815260040161065990612278565b6001600160a01b0381166107e85760405162461bcd60e51b8152600401610659906122ad565b600680546001600160a01b0319166001600160a01b0383169081179091556040517f167d3e9c1016ab80e58802ca9da10ce5c6a0f4debc46a2e7a2cd9e56899a4fb590600090a250565b600080600760009054906101000a90046001600160a01b03166001600160a01b031663fbe9b32e6040518163ffffffff1660e01b8152600401600060405180830381865afa158015610888573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108b091908101906122c9565b905060005b815181101561090c57836001600160a01b03168282815181106108da576108da612358565b60200260200101516001600160a01b0316036108fa575060019392505050565b8061090481612384565b9150506108b5565b5060009392505050565b61091e6119ec565b600082116109535760405162461bcd60e51b81526020600482015260026024820152612d2b60f11b6044820152606401610659565b6003546001600160a01b0316331461097d5760405162461bcd60e51b815260040161065990612278565b6000818152600b60205260409020548211610a295781600a60008282546109a4919061239d565b90915550506000818152600b6020526040812080548492906109c790849061239d565b90915550506000818152600b60205260409020546109e6908290611a45565b6109ee611bcd565b807f0c875c8d391179c5cf7ad8303d268efd50b8beb78b671f85cd54bfb91eb8ef4083604051610a2091815260200190565b60405180910390a25b610a336001600055565b5050565b6006546001600160a01b0316331480610a785750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b610a945760405162461bcd60e51b815260040161065990612278565b6001600160a01b038116610aba5760405162461bcd60e51b8152600401610659906122ad565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b905090565b601054600090808203610af75750600092915050565b82600f6000610b0760018561239d565b8152602081019190915260400160002054600160801b900463ffffffff1611610b3c57610b3560018261239d565b9392505050565b60008052600f6020527ff4803e074bd026baaf6ed2e288c9515f68c72fb7216eebdd7cae1718a53ec37554600160801b900463ffffffff16831015610b845750600092915050565b600080610b9260018461239d565b90505b81811115610c3d5760006002610bab848461239d565b610bb591906123b4565b610bbf908361239d565b6000818152600f60209081526040918290208251808401909352546001600160801b0381168352600160801b900463ffffffff1690820181905291925090879003610c0e575095945050505050565b86816020015163ffffffff161015610c2857819350610c36565b610c3360018361239d565b92505b5050610b95565b509392505050565b6006546001600160a01b0316331480610c865750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b610ca25760405162461bcd60e51b815260040161065990612278565b6001600160a01b038116610cc85760405162461bcd60e51b8152600401610659906122ad565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b60055460408051631a2732c160e31b815290516000926001600160a01b03169163d13996089160048083019260209291908290030181865afa158015610d34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610adc9190612294565b6000828152600e6020526040812054808203610d78576000915050610ec9565b6000848152600d602052604081208491610d9360018561239d565b8152602081019190915260400160002054600160801b900463ffffffff1611610dc957610dc160018261239d565b915050610ec9565b6000848152600d60209081526040808320838052909152902054600160801b900463ffffffff16831015610e01576000915050610ec9565b600080610e0f60018461239d565b90505b81811115610ec45760006002610e28848461239d565b610e3291906123b4565b610e3c908361239d565b6000888152600d602090815260408083208484528252918290208251808401909352546001600160801b0381168352600160801b900463ffffffff1690820181905291925090879003610e9557509350610ec992505050565b86816020015163ffffffff161015610eaf57819350610ebd565b610eba60018361239d565b92505b5050610e12565b509150505b92915050565b6000610ec982611cf4565b610ee26119ec565b610eeb82611cf4565b610f235760405162461bcd60e51b815260206004820152600960248201526808559154925192515160ba1b6044820152606401610659565b6001600160a01b03821660009081526011602052604090205460ff16610fa9576001600160a01b0382166000818152601160205260408120805460ff191660019081179091556012805491820181559091527fbb8a6a4669ba250d26cd7a459eca9d215f8307e33aebe50379bc5a3617ec34440180546001600160a01b03191690911790555b610fbe6001600160a01b038316333084611d84565b6000610fcf4262093a808106900390565b6001600160a01b03841660009081526002602090815260408083208484529091528120805492935084929091906110079084906123d6565b909155505060408051838152602081018390526001600160a01b038516917f6a6f77044107a33658235d41bedbbaf2fe9ccdceb313143c947a5e76e1ec8474910160405180910390a250610a336001600055565b60098054611068906123ee565b80601f0160208091040260200160405190810160405280929190818152602001828054611094906123ee565b80156110e15780601f106110b6576101008083540402835291602001916110e1565b820191906000526020600020905b8154815290600101906020018083116110c457829003601f168201915b505050505081565b6006546001600160a01b031633148061112a5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6111465760405162461bcd60e51b815260040161065990612278565b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa15801561118a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ae9190612294565b8111156111e85760405162461bcd60e51b81526020600482015260086024820152670a89e9ebe9aaa86960c31b6044820152606401610659565b60055460408051631a2732c160e31b815290516000926001600160a01b03169163d13996089160048083019260209291908290030181865afa158015611232573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112569190612294565b6001600160a01b0384166000908152600260209081526040808320848452909152902054909150611287838261239d565b6001600160a01b0380861660008181526002602090815260408083208884529091529020929092556006546112be92911685611984565b836001600160a01b03167f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa28846040516112f991815260200190565b60405180910390a250505050565b6006546001600160a01b03163314806113485750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b6113645760405162461bcd60e51b815260040161065990612278565b6001600160a01b03811661137757600080fd5b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6113a16119ec565b600082116113d65760405162461bcd60e51b81526020600482015260026024820152612d2b60f11b6044820152606401610659565b6003546001600160a01b031633146114005760405162461bcd60e51b815260040161065990612278565b81600a5461140e91906123d6565b600a556000818152600b602052604090205461142b9083906123d6565b6000828152600b60205260409020819055611447908290611a45565b61144f611bcd565b807f925435fa7e37e5d9555bb18ce0d62bb9627d0846942e58e5291e9a2dded462ed83604051610a2091815260200190565b6000828152600e6020526040812054810361149e57506000610ec9565b6001600160a01b0382166000908152600c6020908152604080832086845290915281205460019062093a8081069003826114d88783610d58565b6000888152600d602090815260408083208484528252918290208251808401909352546001600160801b0381168352600160801b900463ffffffff169082018190529192509061153190849062093a8081069003611dbc565b92506000600154846115484262093a808106900390565b611552919061239d565b61155c91906123b4565b905080156116915760005b8181101561168f5761158c8a600180548861158291906123d6565b610489919061239d565b60008b8152600d6020908152604080832084845282528083208151808301909252546001600160801b0381168252600160801b900463ffffffff16918101919091526001805493975090955061161992600f92916115f8916115ee908b6123d6565b610383919061239d565b81526020810191909152604001600020546001600160801b03166001611dbc565b6001600160a01b038a1660009081526002602090815260408083208984529091529020548451919750879161165791906001600160801b0316612428565b61166191906123b4565b61166b90886123d6565b96506001548561167b91906123d6565b94508061168781612384565b915050611567565b505b5093979650505050505050565b601281815481106116ae57600080fd5b6000918252602090912001546001600160a01b0316905081565b6116d06119ec565b6040516331a9108f60e11b8152600481018390526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611738573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061175c9190612447565b905061176781610832565b156117dc57600754604051632775d2df60e11b8152600481018590526001600160a01b0390911690634eeba5be90602401602060405180830381865afa1580156117b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d99190612447565b90505b6004546001600160a01b031633146118065760405162461bcd60e51b815260040161065990612278565b815160005b818110156118d25760006118388686848151811061182b5761182b612358565b6020026020010151611481565b905042600c600087858151811061185157611851612358565b6020908102919091018101516001600160a01b0316825281810192909252604090810160009081208a825290925290205580156118bf576118bf848287858151811061189f5761189f612358565b60200260200101516001600160a01b03166119849092919063ffffffff16565b50806118ca81612384565b91505061180b565b505050610a336001600055565b6006546001600160a01b03163314806119205750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b61193c5760405162461bcd60e51b815260040161065990612278565b6001600160a01b0381166119625760405162461bcd60e51b8152600401610659906122ad565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6040516001600160a01b0383166024820152604481018290526119e790849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611dd2565b505050565b600260005403611a3e5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610659565b6002600055565b6000828152600e6020526040902054428115801590611abc5750611a748163ffffffff1662093a808106900390565b6000858152600d60205260408120611aba91611a9160018761239d565b8152602081019190915260400160002054600160801b900463ffffffff1662093a808106900390565b145b15611b4c576040805180820182526001600160801b038516815263ffffffff83166020808301919091526000878152600d9091529182209091611b0060018661239d565b815260208082019290925260400160002082518154939092015163ffffffff16600160801b026001600160a01b03199093166001600160801b0390921691909117919091179055611bc7565b6040805180820182526001600160801b03808616825263ffffffff808516602080850191825260008a8152600d825286812089825290915294909420925183549451909116600160801b026001600160a01b0319909416911617919091179055611bb78260016123d6565b6000858152600e60205260409020555b50505050565b601054428115801590611c045750611bf08163ffffffff1662093a808106900390565b611c02600f6000611a9160018761239d565b145b15611c875760408051808201909152600a546001600160801b0316815263ffffffff82166020820152600f6000611c3c60018661239d565b815260208082019290925260400160002082518154939092015163ffffffff16600160801b026001600160a01b03199093166001600160801b03909216919091179190911790555050565b604080518082018252600a546001600160801b03908116825263ffffffff80851660208085019182526000888152600f90915294909420925183549451909116600160801b026001600160a01b0319909416911617919091179055611ced8260016123d6565b6010555050565b6001600160a01b03811660009081526011602052604081205460ff1680610ec957506008546040516347f37d1d60e01b81526001600160a01b038481166004830152909116906347f37d1d90602401602060405180830381865afa158015611d60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec99190612464565b6040516001600160a01b0380851660248301528316604482015260648101829052611bc79085906323b872dd60e01b906084016119b0565b6000818311611dcb5781610b35565b5090919050565b6000611e27826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611ea79092919063ffffffff16565b9050805160001480611e48575080806020019051810190611e489190612464565b6119e75760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610659565b6060611eb68484600085611ebe565b949350505050565b606082471015611f1f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610659565b600080866001600160a01b03168587604051611f3b9190612486565b60006040518083038185875af1925050503d8060008114611f78576040519150601f19603f3d011682016040523d82523d6000602084013e611f7d565b606091505b5091509150611f8e87838387611f99565b979650505050505050565b60608315612008578251600003612001576001600160a01b0385163b6120015760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610659565b5081611eb6565b611eb6838381511561201d5781518083602001fd5b8060405162461bcd60e51b815260040161065991906120ff565b6001600160a01b038116811461204c57600080fd5b50565b6000806040838503121561206257600080fd5b823561206d81612037565b946020939093013593505050565b60006020828403121561208d57600080fd5b8135610b3581612037565b600080604083850312156120ab57600080fd5b50508035926020909101359150565b6000602082840312156120cc57600080fd5b5035919050565b60005b838110156120ee5781810151838201526020016120d6565b83811115611bc75750506000910152565b602081526000825180602084015261211e8160408501602087016120d3565b601f01601f19169190910160400192915050565b6000806040838503121561214557600080fd5b82359150602083013561215781612037565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156121a1576121a1612162565b604052919050565b600067ffffffffffffffff8211156121c3576121c3612162565b5060051b60200190565b600080604083850312156121e057600080fd5b8235915060208084013567ffffffffffffffff8111156121ff57600080fd5b8401601f8101861361221057600080fd5b803561222361221e826121a9565b612178565b81815260059190911b8201830190838101908883111561224257600080fd5b928401925b8284101561226957833561225a81612037565b82529284019290840190612247565b80955050505050509250929050565b6020808252600290820152614e4160f01b604082015260600190565b6000602082840312156122a657600080fd5b5051919050565b6020808252600290820152615a4160f01b604082015260600190565b600060208083850312156122dc57600080fd5b825167ffffffffffffffff8111156122f357600080fd5b8301601f8101851361230457600080fd5b805161231261221e826121a9565b81815260059190911b8201830190838101908783111561233157600080fd5b928401925b82841015611f8e57835161234981612037565b82529284019290840190612336565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016123965761239661236e565b5060010190565b6000828210156123af576123af61236e565b500390565b6000826123d157634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156123e9576123e961236e565b500190565b600181811c9082168061240257607f821691505b60208210810361242257634e487b7160e01b600052602260045260246000fd5b50919050565b60008160001904831182151516156124425761244261236e565b500290565b60006020828403121561245957600080fd5b8151610b3581612037565b60006020828403121561247657600080fd5b81518015158114610b3557600080fd5b600082516124988184602087016120d3565b919091019291505056fea2646970667358221220282483440c9a6a73adea287f5b317a581d747e0a8ea7c705f3919737032d164664736f6c634300080d0033000000000000000000000000dd900b9fc9c8fe26b90d35cbbaac0180c917ff08000000000000000000000000e30d0c8532721551a51a9fec7fb233759964d9e300000000000000000000000059aa177312ff6bdf39c8af6f46dae217bf76cbf6000000000000000000000000fe842861b9f79bb77ccb6043731d433d63b365df000000000000000000000000d6b6618cbddfc8f33cc6ad44fb6557fa900049b70000000000000000000000006edac263561da41ade155a992759260fafb87b43000000000000000000000000b97ef9ef8734c71904d8002f8b6bc66dd9c48a6e0000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000001f426c61636b204c5020466565733a2076414d4d2d5645525441492f5553444300
0x608060405234801561001057600080fd5b50600436106102325760003560e01c8063a4a3e03511610130578063db9eb5e5116100b8578063f25e55a51161007c578063f25e55a51461058f578063f4359ce5146105ba578063f5ae2240146105c3578063f5f8d365146105d6578063fca3b5aa146105e957600080fd5b8063db9eb5e514610502578063e2bbb1581461053a578063e39c08fc1461054d578063e688639614610560578063eb4a78e01461056857600080fd5b8063b66503cf116100ff578063b66503cf146104a1578063bb24fe8a146104b4578063c95bda70146104c9578063cbda3cee146104dc578063d8cfc7f0146104ef57600080fd5b8063a4a3e03514610460578063aaddb13914610468578063b1c9b3511461047b578063b5fd73f81461048e57600080fd5b80634bc2a657116101be5780637e552f79116101825780637e552f79146103885780638da5cb5b1461039b57806392777b29146103ae57806395f05a6e146103d95780639cc7f7081461044057600080fd5b80634bc2a6571461032957806365c5f94a1461033c5780636b85568a1461034c5780636f05e50d1461036c5780637deeadc61461037557600080fd5b80631b3d6e87116102055780631b3d6e87146102a65780631f850716146102b9578063315700b2146102e0578063441a3e701461030357806346c96aac1461031657600080fd5b80630125bb3214610237578063075461721461024c57806313af40351461027c57806318160ddd1461028f575b600080fd5b61024a61024536600461204f565b6105fc565b005b60055461025f906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61024a61028a36600461207b565b610765565b610298600a5481565b604051908152602001610273565b60085461025f906001600160a01b031681565b61025f7f000000000000000000000000eac562811cc6abdbb2c9ee88719eca4ee79ad76381565b6102f36102ee36600461207b565b610832565b6040519015158152602001610273565b61024a610311366004612098565b610916565b60035461025f906001600160a01b031681565b61024a61033736600461207b565b610a37565b62093a8042818106900301610298565b61029861035a3660046120ba565b600e6020526000908152604090205481565b61029860105481565b6102986103833660046120ba565b610ae1565b61024a61039636600461207b565b610c45565b60065461025f906001600160a01b031681565b6102986103bc36600461204f565b600260209081526000928352604080842090915290825290205481565b61041c6103e7366004612098565b600d6020908152600092835260408084209091529082529020546001600160801b03811690600160801b900463ffffffff1682565b604080516001600160801b03909316835263ffffffff909116602083015201610273565b61029861044e3660046120ba565b600b6020526000908152604090205481565b610298610cea565b60075461025f906001600160a01b031681565b610298610489366004612098565b610d58565b6102f361049c36600461207b565b610ecf565b61024a6104af36600461204f565b610eda565b6104bc61105b565b60405161027391906120ff565b61024a6104d736600461204f565b6110e9565b60045461025f906001600160a01b031681565b61024a6104fd36600461207b565b611307565b61041c6105103660046120ba565b600f602052600090815260409020546001600160801b03811690600160801b900463ffffffff1682565b61024a610548366004612098565b611399565b61029861055b366004612132565b611481565b601254610298565b61025f7f000000000000000000000000fe842861b9f79bb77ccb6043731d433d63b365df81565b61029861059d36600461204f565b600c60209081526000928352604080842090915290825290205481565b61029860015481565b61025f6105d13660046120ba565b61169e565b61024a6105e43660046121cd565b6116c8565b61024a6105f736600461207b565b6118df565b6006546001600160a01b031633148061063d5750336001600160a01b037f000000000000000000000000fe842861b9f79bb77ccb6043731d433d63b365df16145b6106625760405162461bcd60e51b815260040161065990612278565b60405180910390fd5b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa1580156106a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ca9190612294565b8111156107045760405162461bcd60e51b81526020600482015260086024820152670a89e9ebe9aaa86960c31b6044820152606401610659565b60065461071e906001600160a01b03848116911683611984565b816001600160a01b03167f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa288260405161075991815260200190565b60405180910390a25050565b6006546001600160a01b03163314806107a65750336001600160a01b037f000000000000000000000000fe842861b9f79bb77ccb6043731d433d63b365df16145b6107c25760405162461bcd60e51b815260040161065990612278565b6001600160a01b0381166107e85760405162461bcd60e51b8152600401610659906122ad565b600680546001600160a01b0319166001600160a01b0383169081179091556040517f167d3e9c1016ab80e58802ca9da10ce5c6a0f4debc46a2e7a2cd9e56899a4fb590600090a250565b600080600760009054906101000a90046001600160a01b03166001600160a01b031663fbe9b32e6040518163ffffffff1660e01b8152600401600060405180830381865afa158015610888573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108b091908101906122c9565b905060005b815181101561090c57836001600160a01b03168282815181106108da576108da612358565b60200260200101516001600160a01b0316036108fa575060019392505050565b8061090481612384565b9150506108b5565b5060009392505050565b61091e6119ec565b600082116109535760405162461bcd60e51b81526020600482015260026024820152612d2b60f11b6044820152606401610659565b6003546001600160a01b0316331461097d5760405162461bcd60e51b815260040161065990612278565b6000818152600b60205260409020548211610a295781600a60008282546109a4919061239d565b90915550506000818152600b6020526040812080548492906109c790849061239d565b90915550506000818152600b60205260409020546109e6908290611a45565b6109ee611bcd565b807f0c875c8d391179c5cf7ad8303d268efd50b8beb78b671f85cd54bfb91eb8ef4083604051610a2091815260200190565b60405180910390a25b610a336001600055565b5050565b6006546001600160a01b0316331480610a785750336001600160a01b037f000000000000000000000000fe842861b9f79bb77ccb6043731d433d63b365df16145b610a945760405162461bcd60e51b815260040161065990612278565b6001600160a01b038116610aba5760405162461bcd60e51b8152600401610659906122ad565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b905090565b601054600090808203610af75750600092915050565b82600f6000610b0760018561239d565b8152602081019190915260400160002054600160801b900463ffffffff1611610b3c57610b3560018261239d565b9392505050565b60008052600f6020527ff4803e074bd026baaf6ed2e288c9515f68c72fb7216eebdd7cae1718a53ec37554600160801b900463ffffffff16831015610b845750600092915050565b600080610b9260018461239d565b90505b81811115610c3d5760006002610bab848461239d565b610bb591906123b4565b610bbf908361239d565b6000818152600f60209081526040918290208251808401909352546001600160801b0381168352600160801b900463ffffffff1690820181905291925090879003610c0e575095945050505050565b86816020015163ffffffff161015610c2857819350610c36565b610c3360018361239d565b92505b5050610b95565b509392505050565b6006546001600160a01b0316331480610c865750336001600160a01b037f000000000000000000000000fe842861b9f79bb77ccb6043731d433d63b365df16145b610ca25760405162461bcd60e51b815260040161065990612278565b6001600160a01b038116610cc85760405162461bcd60e51b8152600401610659906122ad565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b60055460408051631a2732c160e31b815290516000926001600160a01b03169163d13996089160048083019260209291908290030181865afa158015610d34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610adc9190612294565b6000828152600e6020526040812054808203610d78576000915050610ec9565b6000848152600d602052604081208491610d9360018561239d565b8152602081019190915260400160002054600160801b900463ffffffff1611610dc957610dc160018261239d565b915050610ec9565b6000848152600d60209081526040808320838052909152902054600160801b900463ffffffff16831015610e01576000915050610ec9565b600080610e0f60018461239d565b90505b81811115610ec45760006002610e28848461239d565b610e3291906123b4565b610e3c908361239d565b6000888152600d602090815260408083208484528252918290208251808401909352546001600160801b0381168352600160801b900463ffffffff1690820181905291925090879003610e9557509350610ec992505050565b86816020015163ffffffff161015610eaf57819350610ebd565b610eba60018361239d565b92505b5050610e12565b509150505b92915050565b6000610ec982611cf4565b610ee26119ec565b610eeb82611cf4565b610f235760405162461bcd60e51b815260206004820152600960248201526808559154925192515160ba1b6044820152606401610659565b6001600160a01b03821660009081526011602052604090205460ff16610fa9576001600160a01b0382166000818152601160205260408120805460ff191660019081179091556012805491820181559091527fbb8a6a4669ba250d26cd7a459eca9d215f8307e33aebe50379bc5a3617ec34440180546001600160a01b03191690911790555b610fbe6001600160a01b038316333084611d84565b6000610fcf4262093a808106900390565b6001600160a01b03841660009081526002602090815260408083208484529091528120805492935084929091906110079084906123d6565b909155505060408051838152602081018390526001600160a01b038516917f6a6f77044107a33658235d41bedbbaf2fe9ccdceb313143c947a5e76e1ec8474910160405180910390a250610a336001600055565b60098054611068906123ee565b80601f0160208091040260200160405190810160405280929190818152602001828054611094906123ee565b80156110e15780601f106110b6576101008083540402835291602001916110e1565b820191906000526020600020905b8154815290600101906020018083116110c457829003601f168201915b505050505081565b6006546001600160a01b031633148061112a5750336001600160a01b037f000000000000000000000000fe842861b9f79bb77ccb6043731d433d63b365df16145b6111465760405162461bcd60e51b815260040161065990612278565b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa15801561118a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ae9190612294565b8111156111e85760405162461bcd60e51b81526020600482015260086024820152670a89e9ebe9aaa86960c31b6044820152606401610659565b60055460408051631a2732c160e31b815290516000926001600160a01b03169163d13996089160048083019260209291908290030181865afa158015611232573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112569190612294565b6001600160a01b0384166000908152600260209081526040808320848452909152902054909150611287838261239d565b6001600160a01b0380861660008181526002602090815260408083208884529091529020929092556006546112be92911685611984565b836001600160a01b03167f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa28846040516112f991815260200190565b60405180910390a250505050565b6006546001600160a01b03163314806113485750336001600160a01b037f000000000000000000000000fe842861b9f79bb77ccb6043731d433d63b365df16145b6113645760405162461bcd60e51b815260040161065990612278565b6001600160a01b03811661137757600080fd5b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6113a16119ec565b600082116113d65760405162461bcd60e51b81526020600482015260026024820152612d2b60f11b6044820152606401610659565b6003546001600160a01b031633146114005760405162461bcd60e51b815260040161065990612278565b81600a5461140e91906123d6565b600a556000818152600b602052604090205461142b9083906123d6565b6000828152600b60205260409020819055611447908290611a45565b61144f611bcd565b807f925435fa7e37e5d9555bb18ce0d62bb9627d0846942e58e5291e9a2dded462ed83604051610a2091815260200190565b6000828152600e6020526040812054810361149e57506000610ec9565b6001600160a01b0382166000908152600c6020908152604080832086845290915281205460019062093a8081069003826114d88783610d58565b6000888152600d602090815260408083208484528252918290208251808401909352546001600160801b0381168352600160801b900463ffffffff169082018190529192509061153190849062093a8081069003611dbc565b92506000600154846115484262093a808106900390565b611552919061239d565b61155c91906123b4565b905080156116915760005b8181101561168f5761158c8a600180548861158291906123d6565b610489919061239d565b60008b8152600d6020908152604080832084845282528083208151808301909252546001600160801b0381168252600160801b900463ffffffff16918101919091526001805493975090955061161992600f92916115f8916115ee908b6123d6565b610383919061239d565b81526020810191909152604001600020546001600160801b03166001611dbc565b6001600160a01b038a1660009081526002602090815260408083208984529091529020548451919750879161165791906001600160801b0316612428565b61166191906123b4565b61166b90886123d6565b96506001548561167b91906123d6565b94508061168781612384565b915050611567565b505b5093979650505050505050565b601281815481106116ae57600080fd5b6000918252602090912001546001600160a01b0316905081565b6116d06119ec565b6040516331a9108f60e11b8152600481018390526000907f000000000000000000000000eac562811cc6abdbb2c9ee88719eca4ee79ad7636001600160a01b031690636352211e90602401602060405180830381865afa158015611738573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061175c9190612447565b905061176781610832565b156117dc57600754604051632775d2df60e11b8152600481018590526001600160a01b0390911690634eeba5be90602401602060405180830381865afa1580156117b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d99190612447565b90505b6004546001600160a01b031633146118065760405162461bcd60e51b815260040161065990612278565b815160005b818110156118d25760006118388686848151811061182b5761182b612358565b6020026020010151611481565b905042600c600087858151811061185157611851612358565b6020908102919091018101516001600160a01b0316825281810192909252604090810160009081208a825290925290205580156118bf576118bf848287858151811061189f5761189f612358565b60200260200101516001600160a01b03166119849092919063ffffffff16565b50806118ca81612384565b91505061180b565b505050610a336001600055565b6006546001600160a01b03163314806119205750336001600160a01b037f000000000000000000000000fe842861b9f79bb77ccb6043731d433d63b365df16145b61193c5760405162461bcd60e51b815260040161065990612278565b6001600160a01b0381166119625760405162461bcd60e51b8152600401610659906122ad565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6040516001600160a01b0383166024820152604481018290526119e790849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611dd2565b505050565b600260005403611a3e5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610659565b6002600055565b6000828152600e6020526040902054428115801590611abc5750611a748163ffffffff1662093a808106900390565b6000858152600d60205260408120611aba91611a9160018761239d565b8152602081019190915260400160002054600160801b900463ffffffff1662093a808106900390565b145b15611b4c576040805180820182526001600160801b038516815263ffffffff83166020808301919091526000878152600d9091529182209091611b0060018661239d565b815260208082019290925260400160002082518154939092015163ffffffff16600160801b026001600160a01b03199093166001600160801b0390921691909117919091179055611bc7565b6040805180820182526001600160801b03808616825263ffffffff808516602080850191825260008a8152600d825286812089825290915294909420925183549451909116600160801b026001600160a01b0319909416911617919091179055611bb78260016123d6565b6000858152600e60205260409020555b50505050565b601054428115801590611c045750611bf08163ffffffff1662093a808106900390565b611c02600f6000611a9160018761239d565b145b15611c875760408051808201909152600a546001600160801b0316815263ffffffff82166020820152600f6000611c3c60018661239d565b815260208082019290925260400160002082518154939092015163ffffffff16600160801b026001600160a01b03199093166001600160801b03909216919091179190911790555050565b604080518082018252600a546001600160801b03908116825263ffffffff80851660208085019182526000888152600f90915294909420925183549451909116600160801b026001600160a01b0319909416911617919091179055611ced8260016123d6565b6010555050565b6001600160a01b03811660009081526011602052604081205460ff1680610ec957506008546040516347f37d1d60e01b81526001600160a01b038481166004830152909116906347f37d1d90602401602060405180830381865afa158015611d60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec99190612464565b6040516001600160a01b0380851660248301528316604482015260648101829052611bc79085906323b872dd60e01b906084016119b0565b6000818311611dcb5781610b35565b5090919050565b6000611e27826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611ea79092919063ffffffff16565b9050805160001480611e48575080806020019051810190611e489190612464565b6119e75760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610659565b6060611eb68484600085611ebe565b949350505050565b606082471015611f1f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610659565b600080866001600160a01b03168587604051611f3b9190612486565b60006040518083038185875af1925050503d8060008114611f78576040519150601f19603f3d011682016040523d82523d6000602084013e611f7d565b606091505b5091509150611f8e87838387611f99565b979650505050505050565b60608315612008578251600003612001576001600160a01b0385163b6120015760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610659565b5081611eb6565b611eb6838381511561201d5781518083602001fd5b8060405162461bcd60e51b815260040161065991906120ff565b6001600160a01b038116811461204c57600080fd5b50565b6000806040838503121561206257600080fd5b823561206d81612037565b946020939093013593505050565b60006020828403121561208d57600080fd5b8135610b3581612037565b600080604083850312156120ab57600080fd5b50508035926020909101359150565b6000602082840312156120cc57600080fd5b5035919050565b60005b838110156120ee5781810151838201526020016120d6565b83811115611bc75750506000910152565b602081526000825180602084015261211e8160408501602087016120d3565b601f01601f19169190910160400192915050565b6000806040838503121561214557600080fd5b82359150602083013561215781612037565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156121a1576121a1612162565b604052919050565b600067ffffffffffffffff8211156121c3576121c3612162565b5060051b60200190565b600080604083850312156121e057600080fd5b8235915060208084013567ffffffffffffffff8111156121ff57600080fd5b8401601f8101861361221057600080fd5b803561222361221e826121a9565b612178565b81815260059190911b8201830190838101908883111561224257600080fd5b928401925b8284101561226957833561225a81612037565b82529284019290840190612247565b80955050505050509250929050565b6020808252600290820152614e4160f01b604082015260600190565b6000602082840312156122a657600080fd5b5051919050565b6020808252600290820152615a4160f01b604082015260600190565b600060208083850312156122dc57600080fd5b825167ffffffffffffffff8111156122f357600080fd5b8301601f8101851361230457600080fd5b805161231261221e826121a9565b81815260059190911b8201830190838101908783111561233157600080fd5b928401925b82841015611f8e57835161234981612037565b82529284019290840190612336565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016123965761239661236e565b5060010190565b6000828210156123af576123af61236e565b500390565b6000826123d157634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156123e9576123e961236e565b500190565b600181811c9082168061240257607f821691505b60208210810361242257634e487b7160e01b600052602260045260246000fd5b50919050565b60008160001904831182151516156124425761244261236e565b500290565b60006020828403121561245957600080fd5b8151610b3581612037565b60006020828403121561247657600080fd5b81518015158114610b3557600080fd5b600082516124988184602087016120d3565b919091019291505056fea2646970667358221220282483440c9a6a73adea287f5b317a581d747e0a8ea7c705f3919737032d164664736f6c634300080d0033