181 txs
187 calls
constructor
constructor(address _voter, address _admin, string _name, address _router, address _optimizer, address _relayFactory)
functions
ALLOWED_CALLER
viewfunction ALLOWED_CALLER() view returns (bytes32)
amountTokenEarned
viewfunction amountTokenEarned(uint256 epoch) view returns (uint256 amount)
autoCompounderFactory
viewfunction autoCompounderFactory() view returns (address)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
distributor
viewfunction distributor() view returns (address)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getRoleMember
viewfunction getRoleMember(bytes32 role, uint256 index) view returns (address)
getRoleMemberCount
viewfunction getRoleMemberCount(bytes32 role) view returns (uint256)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
keeperLastRun
viewfunction keeperLastRun() view returns (uint256)
MAX_SLIPPAGE
viewfunction MAX_SLIPPAGE() view returns (uint256)
mTokenId
viewfunction mTokenId() view returns (uint256)
name
viewfunction name() view returns (string)
optimizer
viewfunction optimizer() view returns (address)
POINTS
viewfunction POINTS() view returns (uint256)
relayFactory
viewfunction relayFactory() view returns (address)
router
viewfunction router() view returns (address)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
token
viewfunction token() view returns (address)
ve
viewfunction ve() view returns (address)
velo
viewfunction velo() view returns (address)
voter
viewfunction voter() view returns (address)
claimBribes
nonpayablefunction claimBribes(address[] _bribes, address[][] _tokens)
claimFees
nonpayablefunction claimFees(address[] _fees, address[][] _tokens)
compound
nonpayablefunction compound()
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
increaseAmount
nonpayablefunction increaseAmount(uint256 _value)
initialize
nonpayablefunction initialize(uint256 _mTokenId)
multicall
nonpayablefunction multicall(bytes[] _calls)
onERC721Received
nonpayablefunction onERC721Received(address, address, uint256, bytes) returns (bytes4)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
rewardAndCompound
nonpayablefunction rewardAndCompound()
setName
nonpayablefunction setName(string _name)
setOptimizer
nonpayablefunction setOptimizer(address _optimizer)
swapTokenToVELOWithOptionalRoute
nonpayablefunction swapTokenToVELOWithOptionalRoute(address _token, uint256 _slippage, tuple[] _optionalRoute)
sweep
nonpayablefunction sweep(address[] _tokensToSweep, address[] _recipients)
vote
nonpayablefunction vote(address[] _poolVote, uint256[] _weights)
events
Compound
event Compound(uint256 balanceCompounded)
Initialized
event Initialized(uint8 version)
Reward
event Reward(address indexed sender, uint256 balanceRewarded)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
SetName
event SetName(string oldName, string newName)
SetOptimizer
event SetOptimizer(address indexed _optimizer)
SwapTokenToVELO
event SwapTokenToVELO(address indexed claimer, address indexed token, uint256 amountIn, uint256 amountOut, (address from, address to, bool stable, address factory)[] routes)
Sweep
event Sweep(address indexed token, address indexed claimer, address indexed recipient, uint256 amount)
errors
AmountInTooHigh
error AmountInTooHigh()
AmountInZero
error AmountInZero()
HighLiquidityToken
error HighLiquidityToken()
InvalidPath
error InvalidPath()
ManagedTokenNotOwned
error ManagedTokenNotOwned()
MulticallFailed
error MulticallFailed()
NoRouteFound
error NoRouteFound()
NotHighLiquidityToken
error NotHighLiquidityToken()
NotKeeper
error NotKeeper()
OptimizerNotApproved
error OptimizerNotApproved()
SameOptimizer
error SameOptimizer()
SlippageTooHigh
error SlippageTooHigh()
TokenIdNotManaged
error TokenIdNotManaged()
TooLate
error TooLate()
TooSoon
error TooSoon()
UnequalLengths
error UnequalLengths()
ZeroAddress
error ZeroAddress()
creation bytecode
0x6101406040523480156200001257600080fd5b5060405162003fb838038062003fb88339810160408190526200003591620003a8565b85858284876001600081905550846001600160a01b03166080816001600160a01b0316815250506080516001600160a01b0316631f8507166040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200009d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000c39190620004d9565b6001600160a01b031660a081905260408051637e062a3560e11b8152905163fc0c546a916004808201926020929091908290030181865afa1580156200010d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001339190620004d9565b6001600160a01b0390811660c052600680546001600160a01b03191685831617905560a051604080516317fc212560e31b81529051919092169163bfe109289160048083019260209291908290030181865afa15801562000198573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001be9190620004d9565b6001600160a01b0390811660e052600780546001600160a01b0319169184169190911790556005620001f1828262000585565b50620001ff6000856200024f565b505033610100525050506001600160a01b03831661012052620002437f7437720917ffc71be5dbfd61616849063f25aa1b112e64e43aaa76f282aaddff866200024f565b50505050505062000651565b6200025b82826200027a565b600082815260026020526040902062000275908262000303565b505050565b60008281526001602090815260408083206001600160a01b038516845290915290205460ff16620002ff5760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45b5050565b60006200031a836001600160a01b03841662000323565b90505b92915050565b60008181526001830160205260408120546200036c575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556200031d565b5060006200031d565b80516001600160a01b03811681146200038d57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60008060008060008060c08789031215620003c257600080fd5b620003cd8762000375565b95506020620003de81890162000375565b60408901519096506001600160401b0380821115620003fc57600080fd5b818a0191508a601f8301126200041157600080fd5b81518181111562000426576200042662000392565b604051601f8201601f19908116603f0116810190838211818310171562000451576200045162000392565b816040528281528d868487010111156200046a57600080fd5b600093505b828410156200048e57848401860151818501870152928501926200046f565b6000868483010152809950505050505050620004ad6060880162000375565b9250620004bd6080880162000375565b9150620004cd60a0880162000375565b90509295509295509295565b600060208284031215620004ec57600080fd5b6200031a8262000375565b600181811c908216806200050c57607f821691505b6020821081036200052d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200027557600081815260208120601f850160051c810160208610156200055c5750805b601f850160051c820191505b818110156200057d5782815560010162000568565b505050505050565b81516001600160401b03811115620005a157620005a162000392565b620005b981620005b28454620004f7565b8462000533565b602080601f831160018114620005f15760008415620005d85750858301515b600019600386901b1c1916600185901b1785556200057d565b600085815260208120601f198616915b82811015620006225788860151825594840194600190910190840162000601565b5085821015620006415787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05160c05160e051610100516101205161385362000765600039600081816105700152818161115a01526111990152600081816104470152818161092f01528181610fc401526113eb01526000818161049b0152818161225501526122e40152600081816103e70152818161059d015281816106ea015281816107650152818161089f015281816109e401528181610cbb01528181610de201528181610f4801528181611a490152611ac90152600081816102ba01528181610786015281816107c9015281816119b401528181611aea01528181611b2d01528181611be601528181611d7c0152611e3e01526000818161037f01528181611617015281816117a9015261192401526138536000f3fe608060405234801561001057600080fd5b50600436106102325760003560e01c806398cf471511610130578063c47f0027116100b8578063f69e20461161007c578063f69e204614610563578063f887ea401461056b578063f975951814610592578063fc0c546a1461059b578063fe4b84df146105c157600080fd5b8063c47f0027146104f0578063c991866d14610503578063ca15c87314610516578063d547741f14610529578063eb1410e91461053c57600080fd5b8063adadb50d116100ff578063adadb50d14610484578063b2da6c501461048d578063bfe1092814610496578063bff136a9146104bd578063c2b79e98146104dd57600080fd5b806398cf47151461042f5780639d1898e214610442578063a217fddf14610469578063ac9650d81461047157600080fd5b806336568abe116101be57806370156bf21161018257806370156bf2146103c75780637f6e4281146103da5780638c7c53ce146103e25780639010d07c1461040957806391d148541461041c57600080fd5b806336568abe146103545780633fee1d501461036757806346c96aac1461037a5780636e7e1978146103a15780636f816a20146103b457600080fd5b80631f850716116102055780631f850716146102b5578063229d6c28146102f4578063248a9ca3146102fc5780632f2ff15d1461032e5780633103ccb71461034157600080fd5b806301ffc9a71461023757806306fdde031461025f578063150b7a021461027457806315456eba146102a0575b600080fd5b61024a610245366004612b7f565b6105d4565b60405190151581526020015b60405180910390f35b6102676105ff565b6040516102569190612bf9565b610287610282366004612c8f565b61068d565b6040516001600160e01b03199091168152602001610256565b6102b36102ae366004612d52565b61069e565b005b6102dc7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610256565b6102b3610831565b61032061030a366004612d52565b6000908152600160208190526040909120015490565b604051908152602001610256565b6102b361033c366004612d6b565b610aa1565b6102b361034f366004612d9b565b610acc565b6102b3610362366004612d6b565b610c02565b6102b3610375366004612de9565b610c85565b6102dc7f000000000000000000000000000000000000000000000000000000000000000081565b6102b36103af366004612f45565b611318565b6102b36103c2366004612f45565b6115d2565b6006546102dc906001600160a01b031681565b610320600381565b6102dc7f000000000000000000000000000000000000000000000000000000000000000081565b6102dc610417366004612fb0565b61168f565b61024a61042a366004612d6b565b6116ae565b6007546102dc906001600160a01b031681565b6102dc7f000000000000000000000000000000000000000000000000000000000000000081565b610320600081565b6102b361047f366004612fd2565b6116d9565b61032060045481565b61032060085481565b6102dc7f000000000000000000000000000000000000000000000000000000000000000081565b6103206104cb366004612d52565b60096020526000908152604090205481565b6102b36104eb366004612f45565b61178e565b6102b36104fe366004613013565b61181c565b6102b3610511366004612f45565b611909565b610320610524366004612d52565b61195d565b6102b3610537366004612d6b565b611974565b6103207f7437720917ffc71be5dbfd61616849063f25aa1b112e64e43aaa76f282aaddff81565b6102b361199a565b6102dc7f000000000000000000000000000000000000000000000000000000000000000081565b6103206101f481565b7f00000000000000000000000000000000000000000000000000000000000000006102dc565b6102b36105cf366004612d52565b611ca6565b60006001600160e01b03198216635a05180f60e01b14806105f957506105f982611f1e565b92915050565b6005805461060c90613084565b80601f016020809104026020016040519081016040528092919081815260200182805461063890613084565b80156106855780601f1061065a57610100808354040283529160200191610685565b820191906000526020600020905b81548152906001019060200180831161066857829003601f168201915b505050505081565b630a85bd0160e11b5b949350505050565b7f7437720917ffc71be5dbfd61616849063f25aa1b112e64e43aaa76f282aaddff6106c881611f53565b6040516323b872dd60e01b8152336004820152306024820152604481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd906064016020604051808303816000875af115801561073b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075f91906130be565b506107ab7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000084611f60565b6004805460405163b2383e5560e01b815291820152602481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b2383e5590604401600060405180830381600087803b15801561081557600080fd5b505af1158015610829573d6000803e3d6000fd5b505050505050565b4260006201518062093a8061084681856130f1565b610850908561311b565b61085a919061312e565b610864919061311b565b90508082101561088757604051636fed7d8560e01b815260040160405180910390fd5b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156108ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109129190613141565b905060008115610a9357600061092960648461315a565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f7b2a7be6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561098b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109af9190613141565b90508082106109be57806109c0565b815b92508215610a5b5760405163a9059cbb60e01b8152336004820152602481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb906044016020604051808303816000875af1158015610a35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5991906130be565b505b60405183815233907f619caafabdd75649b302ba8419e48cccf64f37f1983ac4727cfb38b57703ffc99060200160405180910390a250505b610a9b61199a565b50505050565b60008281526001602081905260409091200154610abd81611f53565b610ac78383612004565b505050565b6000610ad781611f53565b6001600160a01b038216610afe5760405163d92e233d60e01b815260040160405180910390fd5b6007546001600160a01b03808416911603610b2c57604051635a72cb4560e01b815260040160405180910390fd5b600654604051630cb1ecc760e31b81526001600160a01b0384811660048301529091169063658f663890602401602060405180830381865afa158015610b76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9a91906130be565b610bb757604051631a29c06b60e11b815260040160405180910390fd5b600780546001600160a01b0319166001600160a01b0384169081179091556040517f301c03671785e657bc9c566c6a1be1dacedb60210c848fa360eeaf56ae0f0a4090600090a25050565b6001600160a01b0381163314610c775760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b610c818282612026565b5050565b610c8d612048565b610c96336120a1565b6101f4821115610cb95760405163428637bb60e11b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031603610d0b576040516320db826760e01b815260040160405180910390fd5b6001600160a01b038316610d325760405163d92e233d60e01b815260040160405180910390fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa158015610d79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9d9190613141565b905080600003610dc0576040516340561e0d60e01b815260040160405180910390fd5b6007546040516350e5a49360e01b81526001600160a01b0386811660048301527f0000000000000000000000000000000000000000000000000000000000000000811660248301526044820184905260009216906350e5a49390606401600060405180830381865afa158015610e3a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e62919081019061316e565b600754604051637cb49a8f60e11b81529192506000916001600160a01b039091169063f969351e90610e9f90859087906003908b906004016132bc565b602060405180830381865afa158015610ebc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee09190613141565b8451909150600181111561113357866001600160a01b031685600081518110610f0b57610f0b6132eb565b6020026020010151600001516001600160a01b031614610f3e576040516320db826760e01b815260040160405180910390fd5b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001685610f7460018461311b565b81518110610f8457610f846132eb565b6020026020010151602001516001600160a01b031614610fb7576040516320db826760e01b815260040160405180910390fd5b60015b818110156110a6577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166307e1eaa4878381518110611003576110036132eb565b6020908102919091010151516040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015611053573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107791906130be565b6110945760405163b1b3464d60e01b815260040160405180910390fd5b8061109e81613301565b915050610fba565b50600754604051637cb49a8f60e11b81526000916001600160a01b03169063f969351e906110df90899089906003908d906004016132bc565b602060405180830381865afa1580156110fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111209190613141565b905082811115611131578593508092505b505b81600003611154576040516305fcedf360e01b815260040160405180910390fd5b61117f877f000000000000000000000000000000000000000000000000000000000000000086611f60565b60405163cac88ea960e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063cac88ea9906111d6908890879089903090429060040161331a565b6000604051808303816000875af11580156111f5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261121d9190810190613356565b6006546040516335d2155560e11b81523360048201529192506001600160a01b031690636ba42aaa90602401602060405180830381865afa158015611266573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061128a91906130be565b1561129457426008555b876001600160a01b0316336001600160a01b03167f5231e9caf9fa6856b27890f39a8e29bb8c0e984a5426200cf0e7ce3bcd2136d58784600186516112d9919061311b565b815181106112e9576112e96132eb565b602002602001015188604051611301939291906133db565b60405180910390a35050505050610ac76001600055565b600061132381611f53565b42600061133362093a80836130f1565b61133d908361311b565b61134a906201518061312e565b905080821061136c5760405163ecdd1c2960e01b815260040160405180910390fd5b611374612048565b858481146113955760405163332ac86360e21b815260040160405180910390fd5b60005b818110156115bd5760008989838181106113b4576113b46132eb565b90506020020160208101906113c99190612d9b565b6040516301f87aa960e21b81526001600160a01b0380831660048301529192507f0000000000000000000000000000000000000000000000000000000000000000909116906307e1eaa490602401602060405180830381865afa158015611434573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145891906130be565b15611476576040516322794f5d60e11b815260040160405180910390fd5b600088888481811061148a5761148a6132eb565b905060200201602081019061149f9190612d9b565b90506001600160a01b0381166114c85760405163d92e233d60e01b815260040160405180910390fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa15801561150f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115339190613141565b905080156115a75761154f6001600160a01b03841683836121c9565b816001600160a01b0316336001600160a01b0316846001600160a01b03167ffe6f9ffae65cf2c41cdbb3faf5a94e71eab2c2c62215df2efd79e12e451d0b628460405161159e91815260200190565b60405180910390a45b50505080806115b590613301565b915050611398565b50506115c96001600055565b50505050505050565b7f7437720917ffc71be5dbfd61616849063f25aa1b112e64e43aaa76f282aaddff6115fc81611f53565b60048054604051637ac09bf760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692637ac09bf7926116529290918a918a918a918a9101613441565b600060405180830381600087803b15801561166c57600080fd5b505af1158015611680573d6000803e3d6000fd5b50504260085550505050505050565b60008281526002602052604081206116a7908361222c565b9392505050565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60005b81811015610ac7576000308484848181106116f9576116f96132eb565b905060200281019061170b9190613494565b6040516117199291906134da565b600060405180830381855af49150503d8060008114611754576040519150601f19603f3d011682016040523d82523d6000602084013e611759565b606091505b505090508061177b576040516309ad446560e31b815260040160405180910390fd5b508061178681613301565b9150506116dc565b60048054604051637715ee7560e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692637715ee75926117e2928992899289928992016134ea565b600060405180830381600087803b1580156117fc57600080fd5b505af1158015611810573d6000803e3d6000fd5b50505050610a9b612238565b600061182781611f53565b60006005805461183690613084565b80601f016020809104026020016040519081016040528092919081815260200182805461186290613084565b80156118af5780601f10611884576101008083540402835291602001916118af565b820191906000526020600020905b81548152906001019060200180831161189257829003601f168201915b505050505090508383600591826118c79291906135ee565b507fbcfc2e8e6857ca26084ba5543a45251aaf7690f73043fff1d18c7d5f80e5cbb18185856040516118fb939291906136ae565b60405180910390a150505050565b600480546040516333312b5560e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169263666256aa926117e2928992899289928992016134ea565b60008181526002602052604081206105f990612359565b6000828152600160208190526040909120015461199081611f53565b610ac78383612026565b600480546040516339f890b560e21b8152918201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e7e242d490602401602060405180830381865afa158015611a03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a279190613141565b9050611a31612238565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015611a98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611abc9190613141565b90508015611bcb57611b0f7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000083611f60565b6004805460405163b2383e5560e01b815291820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b2383e5590604401600060405180830381600087803b158015611b7957600080fd5b505af1158015611b8d573d6000803e3d6000fd5b505050507f75d46d90b68dabaae9c3f83d09c4dbe472247c44e5f7b51dbf62b44487c7896b81604051611bc291815260200190565b60405180910390a15b50600480546040516339f890b560e21b8152918201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e7e242d490602401602060405180830381865afa158015611c35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c599190613141565b905080821015610c8157611c6d828261311b565b60096000611c804262093a808106900390565b81526020019081526020016000206000828254611c9d919061312e565b90915550505050565b600354610100900460ff1615808015611cc65750600354600160ff909116105b80611ce05750303b158015611ce0575060035460ff166001145b611d435760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610c6e565b6003805460ff191660011790558015611d66576003805461ff0019166101001790555b600260405161f8e560ef1b8152600481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690637c72800090602401602060405180830381865afa158015611dcb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611def919061370a565b6002811115611e0057611e006136f4565b14611e1e57604051634bc9d63360e11b815260040160405180910390fd5b6040516331a9108f60e11b81526004810183905230906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa158015611e85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ea9919061372b565b6001600160a01b031614611ed05760405163e927bfbd60e01b815260040160405180910390fd5b60048290558015610c81576003805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b60006001600160e01b03198216637965db0b60e01b14806105f957506301ffc9a760e01b6001600160e01b03198316146105f9565b611f5d8133612363565b50565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526000919085169063dd62ed3e90604401602060405180830381865afa158015611fb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fd49190613141565b90508015611ff057611ff06001600160a01b03851684836123bc565b610a9b6001600160a01b03851684846124c5565b61200e8282612572565b6000828152600260205260409020610ac790826125dd565b61203082826125f2565b6000828152600260205260409020610ac79082612659565b60026000540361209a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610c6e565b6002600055565b6120ac6000826116ae565b156120b45750565b4260006120c462093a80836130f1565b6120ce908361311b565b6120da90610e1061312e565b6006546040516335d2155560e11b81526001600160a01b038681166004830152929350911690636ba42aaa90602401602060405180830381865afa158015612126573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061214a91906130be565b156121745780821061215b57505050565b604051636fed7d8560e01b815260040160405180910390fd5b60006201518062093a8061218881866130f1565b612192908661311b565b61219c919061312e565b6121a6919061311b565b905080831015610a9b57604051636fed7d8560e01b815260040160405180910390fd5b6040516001600160a01b038316602482015260448101829052610ac790849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261266e565b60006116a78383612743565b6004805460405163d1d58b2560e01b8152918201819052906000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063d1d58b2590602401602060405180830381865afa1580156122a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c89190613141565b1115611f5d5760405163379607f560e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063379607f5906024016020604051808303816000875af1158015612335573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c819190613141565b60006105f9825490565b61236d82826116ae565b610c815761237a8161276d565b61238583602061277f565b604051602001612396929190613748565b60408051601f198184030181529082905262461bcd60e51b8252610c6e91600401612bf9565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526000919085169063dd62ed3e90604401602060405180830381865afa15801561240c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124309190613141565b9050818110156124945760405162461bcd60e51b815260206004820152602960248201527f5361666545524332303a2064656372656173656420616c6c6f77616e63652062604482015268656c6f77207a65726f60b81b6064820152608401610c6e565b6040516001600160a01b03841660248201528282036044820152610a9b90859063095ea7b360e01b906064016121f5565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526000919085169063dd62ed3e90604401602060405180830381865afa158015612515573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125399190613141565b9050610a9b8463095ea7b360e01b85612552868661312e565b6040516001600160a01b03909216602483015260448201526064016121f5565b61257c82826116ae565b610c815760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b60006116a7836001600160a01b03841661291a565b6125fc82826116ae565b15610c815760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60006116a7836001600160a01b038416612969565b60006126c3826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612a5c9092919063ffffffff16565b90508051600014806126e45750808060200190518101906126e491906130be565b610ac75760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610c6e565b600082600001828154811061275a5761275a6132eb565b9060005260206000200154905092915050565b60606105f96001600160a01b03831660145b6060600061278e8360026137bd565b61279990600261312e565b6001600160401b038111156127b0576127b0612c21565b6040519080825280601f01601f1916602001820160405280156127da576020820181803683370190505b509050600360fc1b816000815181106127f5576127f56132eb565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110612824576128246132eb565b60200101906001600160f81b031916908160001a90535060006128488460026137bd565b61285390600161312e565b90505b60018111156128cb576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110612887576128876132eb565b1a60f81b82828151811061289d5761289d6132eb565b60200101906001600160f81b031916908160001a90535060049490941c936128c4816137d4565b9050612856565b5083156116a75760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610c6e565b6000818152600183016020526040812054612961575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556105f9565b5060006105f9565b60008181526001830160205260408120548015612a5257600061298d60018361311b565b85549091506000906129a19060019061311b565b9050818114612a065760008660000182815481106129c1576129c16132eb565b90600052602060002001549050808760000184815481106129e4576129e46132eb565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612a1757612a176137eb565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506105f9565b60009150506105f9565b6060610696848460008585600080866001600160a01b03168587604051612a839190613801565b60006040518083038185875af1925050503d8060008114612ac0576040519150601f19603f3d011682016040523d82523d6000602084013e612ac5565b606091505b5091509150612ad687838387612ae1565b979650505050505050565b60608315612b50578251600003612b49576001600160a01b0385163b612b495760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610c6e565b5081610696565b6106968383815115612b655781518083602001fd5b8060405162461bcd60e51b8152600401610c6e9190612bf9565b600060208284031215612b9157600080fd5b81356001600160e01b0319811681146116a757600080fd5b60005b83811015612bc4578181015183820152602001612bac565b50506000910152565b60008151808452612be5816020860160208601612ba9565b601f01601f19169290920160200192915050565b6020815260006116a76020830184612bcd565b6001600160a01b0381168114611f5d57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b0381118282101715612c5957612c59612c21565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612c8757612c87612c21565b604052919050565b60008060008060808587031215612ca557600080fd5b8435612cb081612c0c565b9350602085810135612cc181612c0c565b93506040860135925060608601356001600160401b0380821115612ce457600080fd5b818801915088601f830112612cf857600080fd5b813581811115612d0a57612d0a612c21565b612d1c601f8201601f19168501612c5f565b91508082528984828501011115612d3257600080fd5b808484018584013760008482840101525080935050505092959194509250565b600060208284031215612d6457600080fd5b5035919050565b60008060408385031215612d7e57600080fd5b823591506020830135612d9081612c0c565b809150509250929050565b600060208284031215612dad57600080fd5b81356116a781612c0c565b60006001600160401b03821115612dd157612dd1612c21565b5060051b60200190565b8015158114611f5d57600080fd5b60008060006060808587031215612dff57600080fd5b8435612e0a81612c0c565b935060208581013593506040808701356001600160401b03811115612e2e57600080fd5b8701601f81018913612e3f57600080fd5b8035612e52612e4d82612db8565b612c5f565b81815260079190911b8201840190848101908b831115612e7157600080fd5b928501925b82841015612ee9576080848d031215612e8f5760008081fd5b612e97612c37565b8435612ea281612c0c565b815284870135612eb181612c0c565b8188015284860135612ec281612ddb565b8187015284880135612ed381612c0c565b8189015282526080939093019290850190612e76565b809750505050505050509250925092565b60008083601f840112612f0c57600080fd5b5081356001600160401b03811115612f2357600080fd5b6020830191508360208260051b8501011115612f3e57600080fd5b9250929050565b60008060008060408587031215612f5b57600080fd5b84356001600160401b0380821115612f7257600080fd5b612f7e88838901612efa565b90965094506020870135915080821115612f9757600080fd5b50612fa487828801612efa565b95989497509550505050565b60008060408385031215612fc357600080fd5b50508035926020909101359150565b60008060208385031215612fe557600080fd5b82356001600160401b03811115612ffb57600080fd5b61300785828601612efa565b90969095509350505050565b6000806020838503121561302657600080fd5b82356001600160401b038082111561303d57600080fd5b818501915085601f83011261305157600080fd5b81358181111561306057600080fd5b86602082850101111561307257600080fd5b60209290920196919550909350505050565b600181811c9082168061309857607f821691505b6020821081036130b857634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156130d057600080fd5b81516116a781612ddb565b634e487b7160e01b600052601260045260246000fd5b600082613100576131006130db565b500690565b634e487b7160e01b600052601160045260246000fd5b818103818111156105f9576105f9613105565b808201808211156105f9576105f9613105565b60006020828403121561315357600080fd5b5051919050565b600082613169576131696130db565b500490565b6000602080838503121561318157600080fd5b82516001600160401b0381111561319757600080fd5b8301601f810185136131a857600080fd5b80516131b6612e4d82612db8565b81815260079190911b820183019083810190878311156131d557600080fd5b928401925b82841015612ad657608084890312156131f35760008081fd5b6131fb612c37565b845161320681612c0c565b81528486015161321581612c0c565b8187015260408581015161322881612ddb565b9082015260608581015161323b81612c0c565b90820152825260809390930192908401906131da565b600081518084526020808501945080840160005b838110156132b157815180516001600160a01b039081168952848201518116858a01526040808301511515908a0152606091820151169088015260809096019590820190600101613265565b509495945050505050565b6080815260006132cf6080830187613251565b6020830195909552506040810192909252606090910152919050565b634e487b7160e01b600052603260045260246000fd5b60006001820161331357613313613105565b5060010190565b85815284602082015260a06040820152600061333960a0830186613251565b6001600160a01b0394909416606083015250608001529392505050565b6000602080838503121561336957600080fd5b82516001600160401b0381111561337f57600080fd5b8301601f8101851361339057600080fd5b805161339e612e4d82612db8565b81815260059190911b820183019083810190878311156133bd57600080fd5b928401925b82841015612ad6578351825292840192908401906133c2565b8381528260208201526060604082015260006133fa6060830184613251565b95945050505050565b8183526000602080850194508260005b858110156132b157813561342681612c0c565b6001600160a01b031687529582019590820190600101613413565b85815260606020820152600061345b606083018688613403565b82810360408401528381526001600160fb1b0384111561347a57600080fd5b8360051b8086602084013701602001979650505050505050565b6000808335601e198436030181126134ab57600080fd5b8301803591506001600160401b038211156134c557600080fd5b602001915036819003821315612f3e57600080fd5b8183823760009101908152919050565b6060815260006134fe606083018789613403565b60208382038185015281868352818301905060058288821b8501018960005b8a81101561358e57868303601f190185528135368d9003601e1901811261354357600080fd5b8c0186810190356001600160401b0381111561355e57600080fd5b80861b360382131561356f57600080fd5b61357a858284613403565b96880196945050509085019060010161351d565b505080955050505050508260408301529695505050505050565b601f821115610ac757600081815260208120601f850160051c810160208610156135cf5750805b601f850160051c820191505b81811015610829578281556001016135db565b6001600160401b0383111561360557613605612c21565b613619836136138354613084565b836135a8565b6000601f84116001811461364d57600085156136355750838201355b600019600387901b1c1916600186901b1783556136a7565b600083815260209020601f19861690835b8281101561367e578685013582556020948501946001909201910161365e565b508682101561369b5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b6040815260006136c16040830186612bcd565b8281036020840152838152838560208301376000602085830101526020601f19601f860116820101915050949350505050565b634e487b7160e01b600052602160045260246000fd5b60006020828403121561371c57600080fd5b8151600381106116a757600080fd5b60006020828403121561373d57600080fd5b81516116a781612c0c565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351613780816017850160208801612ba9565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516137b1816028840160208801612ba9565b01602801949350505050565b80820281158282048414176105f9576105f9613105565b6000816137e3576137e3613105565b506000190190565b634e487b7160e01b600052603160045260246000fd5b60008251613813818460208701612ba9565b919091019291505056fea2646970667358221220ba9c161c7e3f5c49138c9ac957f3e7824b0454f4b5fb632468c310812c2b417764736f6c6343000813003300000000000000000000000016613524e02ad97edfef371bc883f2f5d6c480a500000000000000000000000066f8cfe0ff5a9cb4cf83efef8ad2f3ebbc746c2d00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000cf77a3ba9a5ca399b7c97c74d54e5b1beb874e4300000000000000000000000079cf636530790602e74500ae560047c98a6990d3000000000000000000000000d36dab3bef6dd077bc4d59098d03ff1053e17397000000000000000000000000000000000000000000000000000000000000000b4c69646f2076654145524f000000000000000000000000000000000000000000