0 txs
0 calls
constructor
constructor(address _controller)
functions
controller
viewfunction controller() view returns (address)
currentRoundTotalActiveStake
viewfunction currentRoundTotalActiveStake() view returns (uint256)
delegatorStatus
viewfunction delegatorStatus(address _delegator) view returns (uint8)
getDelegator
viewfunction getDelegator(address _delegator) view returns (uint256 bondedAmount, uint256 fees, address delegateAddress, uint256 delegatedAmount, uint256 startRound, uint256 lastClaimRound, uint256 nextUnbondingLockId)
getDelegatorUnbondingLock
viewfunction getDelegatorUnbondingLock(address _delegator, uint256 _unbondingLockId) view returns (uint256 amount, uint256 withdrawRound)
getFirstTranscoderInPool
viewfunction getFirstTranscoderInPool() view returns (address)
getNextTranscoderInPool
viewfunction getNextTranscoderInPool(address _transcoder) view returns (address)
getTotalBonded
viewfunction getTotalBonded() view returns (uint256)
getTranscoder
viewfunction getTranscoder(address _transcoder) view returns (uint256 lastRewardRound, uint256 rewardCut, uint256 feeShare, uint256 lastActiveStakeUpdateRound, uint256 activationRound, uint256 deactivationRound, uint256 activeCumulativeRewards, uint256 cumulativeRewards, uint256 cumulativeFees, uint256 lastFeeRound)
getTranscoderEarningsPoolForRound
viewfunction getTranscoderEarningsPoolForRound(address _transcoder, uint256 _round) view returns (uint256 totalStake, uint256 transcoderRewardCut, uint256 transcoderFeeShare, uint256 cumulativeRewardFactor, uint256 cumulativeFeeFactor)
getTranscoderPoolMaxSize
viewfunction getTranscoderPoolMaxSize() view returns (uint256)
getTranscoderPoolSize
viewfunction getTranscoderPoolSize() view returns (uint256)
isActiveTranscoder
viewfunction isActiveTranscoder(address _transcoder) view returns (bool)
isRegisteredTranscoder
viewfunction isRegisteredTranscoder(address _transcoder) view returns (bool)
isValidUnbondingLock
viewfunction isValidUnbondingLock(address _delegator, uint256 _unbondingLockId) view returns (bool)
nextRoundTotalActiveStake
viewfunction nextRoundTotalActiveStake() view returns (uint256)
pendingFees
viewfunction pendingFees(address _delegator, uint256 _endRound) view returns (uint256)
pendingStake
viewfunction pendingStake(address _delegator, uint256 _endRound) view returns (uint256)
targetContractId
viewfunction targetContractId() view returns (bytes32)
transcoderStatus
viewfunction transcoderStatus(address _transcoder) view returns (uint8)
transcoderTotalStake
viewfunction transcoderTotalStake(address _transcoder) view returns (uint256)
unbondingPeriod
viewfunction unbondingPeriod() view returns (uint64)
bond
nonpayablefunction bond(uint256 _amount, address _to)
bondForWithHint
nonpayablefunction bondForWithHint(uint256 _amount, address _owner, address _to, address _oldDelegateNewPosPrev, address _oldDelegateNewPosNext, address _currDelegateNewPosPrev, address _currDelegateNewPosNext)
bondWithHint
nonpayablefunction bondWithHint(uint256 _amount, address _to, address _oldDelegateNewPosPrev, address _oldDelegateNewPosNext, address _currDelegateNewPosPrev, address _currDelegateNewPosNext)
claimEarnings
nonpayablefunction claimEarnings(uint256 _endRound)
rebond
nonpayablefunction rebond(uint256 _unbondingLockId)
rebondFromUnbonded
nonpayablefunction rebondFromUnbonded(address _to, uint256 _unbondingLockId)
rebondFromUnbondedWithHint
nonpayablefunction rebondFromUnbondedWithHint(address _to, uint256 _unbondingLockId, address _newPosPrev, address _newPosNext)
rebondWithHint
nonpayablefunction rebondWithHint(uint256 _unbondingLockId, address _newPosPrev, address _newPosNext)
reward
nonpayablefunction reward()
rewardWithHint
nonpayablefunction rewardWithHint(address _newPosPrev, address _newPosNext)
setController
nonpayablefunction setController(address _controller)
setCurrentRoundTotalActiveStake
nonpayablefunction setCurrentRoundTotalActiveStake()
setNumActiveTranscoders
nonpayablefunction setNumActiveTranscoders(uint256 _numActiveTranscoders)
setUnbondingPeriod
nonpayablefunction setUnbondingPeriod(uint64 _unbondingPeriod)
slashTranscoder
nonpayablefunction slashTranscoder(address _transcoder, address _finder, uint256 _slashAmount, uint256 _finderFee)
transcoder
nonpayablefunction transcoder(uint256 _rewardCut, uint256 _feeShare)
transcoderWithHint
nonpayablefunction transcoderWithHint(uint256 _rewardCut, uint256 _feeShare, address _newPosPrev, address _newPosNext)
transferBond
nonpayablefunction transferBond(address _delegator, uint256 _amount, address _oldDelegateNewPosPrev, address _oldDelegateNewPosNext, address _newDelegateNewPosPrev, address _newDelegateNewPosNext)
unbond
nonpayablefunction unbond(uint256 _amount)
unbondWithHint
nonpayablefunction unbondWithHint(uint256 _amount, address _newPosPrev, address _newPosNext)
updateTranscoderWithFees
nonpayablefunction updateTranscoderWithFees(address _transcoder, uint256 _fees, uint256 _round)
withdrawFees
nonpayablefunction withdrawFees(address _recipient, uint256 _amount)
withdrawStake
nonpayablefunction withdrawStake(uint256 _unbondingLockId)
events
Bond
event Bond(address indexed newDelegate, address indexed oldDelegate, address indexed delegator, uint256 additionalAmount, uint256 bondedAmount)
EarningsClaimed
event EarningsClaimed(address indexed delegate, address indexed delegator, uint256 rewards, uint256 fees, uint256 startRound, uint256 endRound)
ParameterUpdate
event ParameterUpdate(string param)
Rebond
event Rebond(address indexed delegate, address indexed delegator, uint256 unbondingLockId, uint256 amount)
Reward
event Reward(address indexed transcoder, uint256 amount)
SetController
event SetController(address controller)
TranscoderActivated
event TranscoderActivated(address indexed transcoder, uint256 activationRound)
TranscoderDeactivated
event TranscoderDeactivated(address indexed transcoder, uint256 deactivationRound)
TranscoderSlashed
event TranscoderSlashed(address indexed transcoder, address finder, uint256 penalty, uint256 finderReward)
TranscoderUpdate
event TranscoderUpdate(address indexed transcoder, uint256 rewardCut, uint256 feeShare)
TransferBond
event TransferBond(address indexed oldDelegator, address indexed newDelegator, uint256 oldUnbondingLockId, uint256 newUnbondingLockId, uint256 amount)
Unbond
event Unbond(address indexed delegate, address indexed delegator, uint256 unbondingLockId, uint256 amount, uint256 withdrawRound)
WithdrawFees
event WithdrawFees(address indexed delegator, address recipient, uint256 amount)
WithdrawStake
event WithdrawStake(address indexed delegator, uint256 unbondingLockId, uint256 amount, uint256 withdrawRound)
errors
No errors.
creation bytecode
0x60806040523480156200001157600080fd5b50604051620049743803806200497483398101604081905262000034916200005a565b600080546001600160a01b0319166001600160a01b03929092169190911790556200008c565b6000602082840312156200006d57600080fd5b81516001600160a01b03811681146200008557600080fd5b9392505050565b6148d8806200009c6000396000f3fe608060405234801561001057600080fd5b506004361061027f5760003560e01c80635c50c3561161015c57806392eefe9b116100ce578063b78d27dc11610087578063b78d27dc14610751578063eaffb3f914610764578063ee4e804a14610777578063f10d1de11461078a578063f595f1cc1461079d578063f77c4791146107b057600080fd5b806392eefe9b146106545780639500ed9b146106675780639d0b2c7a1461067a5780639ef9df941461068d578063a64ad595146106a0578063ad3b1b471461073e57600080fd5b80636cf6d675116101205780636cf6d675146105d1578063713f2216146105fe5780637fc4606f14610606578063818710561461061957806388a6c7491461062c5780638b2f16521461063457600080fd5b80635c50c356146104de5780635dce9948146104e6578063673a456b1461059857806368ba170c146105ab5780636bd9add4146105be57600080fd5b806327de9e32116101f5578063412f83b6116101b9578063412f83b6146104515780634196ee75146104a857806343d3461a146104b1578063465501d3146104c457806351720b41146104cd5780635a2a75a9146104d657600080fd5b806327de9e32146103ef5780632a4e0d55146104025780633550aa10146104185780633a080e931461042b5780633aeb512c1461043e57600080fd5b8063228cb73311610247578063228cb7331461030757806322bf9d7c1461030f578063235c96031461032257806324454fc41461034d57806324b1babf146103c957806325d5971f146103dc57600080fd5b80630584a37314610284578063062e98b81461029957806308802374146102ac5780630fd02fc1146102d45780631544fc67146102e7575b600080fd5b6102976102923660046143c6565b6107c3565b005b6102976102a7366004614419565b610913565b6102bf6102ba366004614492565b610b81565b60405190151581526020015b60405180910390f35b6102bf6102e23660046144af565b610c33565b6102fa6102f5366004614492565b610c64565b6040516102cb91906144f1565b610297610d20565b61029761031d36600461450b565b610d2d565b610335610330366004614492565b611104565b6040516001600160a01b0390911681526020016102cb565b6103a161035b3660046144af565b6001600160a01b03909116600090815260046020818152604080842094845260039485019091529091208054600182015460028301549483015492909301549094929392565b604080519586526020860194909452928401919091526060830152608082015260a0016102cb565b6102976103d7366004614551565b61119f565b6102976103ea366004614551565b6111ba565b6102976103fd366004614551565b6113fa565b61040a611406565b6040519081526020016102cb565b61029761042636600461456a565b611492565b6102976104393660046144af565b6118c6565b61029761044c366004614599565b6118d7565b61049361045f3660046144af565b6001600160a01b03919091166000908152600360209081526040808320938352600790930190522080546001909101549091565b604080519283526020830191909152016102cb565b61040a60055481565b6102976104bf3660046145ce565b611bde565b61040a60065481565b61040a60015481565b61040a611beb565b60055461040a565b61054e6104f4366004614492565b6001600160a01b031660009081526004602081905260409091208054600182015460028301549383015460058401546006850154600786015460088701546009880154600a90980154969995989794969395929491939092565b604080519a8b5260208b0199909952978901969096526060880194909452608087019290925260a086015260c085015260e0840152610100830152610120820152610140016102cb565b6102976105a6366004614551565b611c26565b6102bf6105b9366004614492565b611cf9565b6102976105cc3660046145f0565b611d31565b6002546105e59067ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016102cb565b610297611d48565b61029761061436600461462b565b611d58565b61029761062736600461466d565b611de3565b610335612086565b610647610642366004614492565b61210c565b6040516102cb91906146a6565b610297610662366004614492565b61212c565b61029761067536600461462b565b612182565b61040a6106883660046144af565b6124db565b61040a61069b366004614492565b61256e565b6106fb6106ae366004614492565b6001600160a01b0390811660009081526003602081905260409091208054600182015460028301549383015460048401546005850154600690950154939792969590951694909390929091565b6040805197885260208801969096526001600160a01b03909416948601949094526060850191909152608084015260a083019190915260c082015260e0016102cb565b61029761074c3660046144af565b61258d565b61029761075f3660046146ba565b612724565b610297610772366004614551565b612734565b6102976107853660046146df565b612740565b61029761079836600461476c565b612b2f565b61040a6107ab3660046144af565b612ba8565b600054610335906001600160a01b031681565b6107cb612c3b565b6107d3612cff565b6107db612dc3565b60026107e633610c64565b60028111156107f7576107f76144db565b146108495760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206d75737420626520756e626f6e64656400000000000000000060448201526064015b60405180910390fd5b6108cc6001610856612e66565b6001600160a01b0316638a19c8bc6040518163ffffffff1660e01b815260040160206040518083038186803b15801561088e57600080fd5b505afa1580156108a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c69190614796565b90612edf565b3360008181526003602052604090206004810192909255600290910180546001600160a01b0319166001600160a01b03871617905561090d90848484612eeb565b50505050565b61091b612c3b565b610923612cff565b61092b612dc3565b610936858585612182565b336000908152600360205260408082206001600160a01b0389168352908220600682015491929091610969906001612ffb565b905060008360070160008381526020019081526020016000206001015490508360070160008381526020019081526020016000206000808201600090556001820160009055505060008360060154905060405180604001604052808b8152602001838152508460070160008381526020019081526020016000206000820151816000015560208201518160010155905050610a1260018560060154612edf90919063ffffffff16565b600685015560408051848152602081018390529081018b90526001600160a01b038c169033907ff136b986590e86cf1abd7b6600186a7a1178ad3cbbdf0f3312e79f6214a2a5679060600160405180910390a36000610a6f612e66565b6001600160a01b0316638a19c8bc6040518163ffffffff1660e01b815260040160206040518083038186803b158015610aa757600080fd5b505afa158015610abb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610adf9190614796565b600586015490915081811015610afa57610afa8d8383613007565b60028601546001600160a01b0316610b335760028088015490870180546001600160a01b0319166001600160a01b039092169190911790555b6002610b3e8e610c64565b6002811115610b4f57610b4f6144db565b1415610b6657610b60826001612edf565b60048701555b610b728d848b8b612eeb565b50505050505050505050505050565b6001600160a01b038116600090815260046020526040812081610ba2612e66565b6001600160a01b0316638a19c8bc6040518163ffffffff1660e01b815260040160206040518083038186803b158015610bda57600080fd5b505afa158015610bee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c129190614796565b905080826005015411158015610c2b5750816006015481105b949350505050565b6001600160a01b03919091166000908152600360209081526040808320938352600790930190522060010154151590565b6001600160a01b03811660009081526003602052604081208054610c8b5750600292915050565b610c93612e66565b6001600160a01b0316638a19c8bc6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ccb57600080fd5b505afa158015610cdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d039190614796565b81600401541115610d175750600092915050565b50600192915050565b610d2b600080611de3565b565b610d35612c3b565b610d3d613193565b6001600160a01b03841660009081526003602052604090208054156110a9576001600160a01b038516600090815260036020526040812054610d7f908561328e565b60405163b0138c4760e01b8152600760048201526001600160a01b038816602482015290915073c45f6918f7bcac7abc8fe05302b3cdf39776cdeb9063b0138c479060440160206040518083038186803b158015610ddc57600080fd5b505af4158015610df0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1491906147af565b15610e2257610e22866132a7565b8154610e2e9082612ffb565b82556001610e3b87610c64565b6002811115610e4c57610e4c6144db565b1415610e9f5760028201546001600160a01b031660009081526003602081905260409091200154610e7d9082612ffb565b60028301546001600160a01b0316600090815260036020819052604090912001555b806001600160a01b03861615610fee576000610ebb838661328e565b9050610ec56133a0565b60405163e7a49c2b60e01b81526001600160a01b03898116600483015260248201849052919091169063e7a49c2b90604401600060405180830381600087803b158015610f1157600080fd5b505af1158015610f25573d6000803e3d6000fd5b50505050610f316133a0565b6001600160a01b031663c7ee98c2610f498484612ffb565b6040518263ffffffff1660e01b8152600401610f6791815260200190565b600060405180830381600087803b158015610f8157600080fd5b505af1158015610f95573d6000803e3d6000fd5b5050604080516001600160a01b038b8116825260208201889052918101859052908b1692507ff4b71fed8e2c9a8c67c388bc6d35ad20b9368a24eed6d565459f2b277b6c0c22915060600160405180910390a2506110a2565b610ff66133a0565b6001600160a01b031663c7ee98c2826040518263ffffffff1660e01b815260040161102391815260200190565b600060405180830381600087803b15801561103d57600080fd5b505af1158015611051573d6000803e3d6000fd5b5050604080516000808252602082018790528183015290516001600160a01b038b1693507ff4b71fed8e2c9a8c67c388bc6d35ad20b9368a24eed6d565459f2b277b6c0c2292509081900360600190a25b50506110fd565b604080516001600160a01b03868116825260006020830181905292820192909252908616907ff4b71fed8e2c9a8c67c388bc6d35ad20b9368a24eed6d565459f2b277b6c0c22906060015b60405180910390a25b5050505050565b60405163e189dedb60e01b8152600760048201526001600160a01b038216602482015260009073c45f6918f7bcac7abc8fe05302b3cdf39776cdeb9063e189dedb9060440160206040518083038186803b15801561116157600080fd5b505af4158015611175573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119991906147d1565b92915050565b6111a7612c3b565b6111af612cff565b6111b7612dc3565b50565b6111c2612c3b565b6111ca612cff565b3360008181526003602090815260408083208584526007810190925290912090916111f59084610c33565b61123d5760405162461bcd60e51b81526020600482015260196024820152781a5b9d985b1a59081d5b989bdb991a5b99c81b1bd8dac81251603a1b6044820152606401610840565b611245612e66565b6001600160a01b0316638a19c8bc6040518163ffffffff1660e01b815260040160206040518083038186803b15801561127d57600080fd5b505afa158015611291573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b59190614796565b8160010154111561132e5760405162461bcd60e51b815260206004820152603b60248201527f776974686472617720726f756e64206d757374206265206265666f7265206f7260448201527f20657175616c20746f207468652063757272656e7420726f756e6400000000006064820152608401610840565b805460018083015460008681526007860160205260408120818155909201919091556113586133a0565b60405163e7a49c2b60e01b8152336004820152602481018490526001600160a01b03919091169063e7a49c2b90604401600060405180830381600087803b1580156113a257600080fd5b505af11580156113b6573d6000803e3d6000fd5b505060408051888152602081018690529081018490523392507f1340f1a8f3d456a649e1a12071dfa15655e3d09252131d0f980c3b405cc8dd2e91506060016110f4565b6111b781600080612182565b604051631665d9cb60e31b81526007600482015260009073c45f6918f7bcac7abc8fe05302b3cdf39776cdeb9063b32ece58906024015b60206040518083038186803b15801561145557600080fd5b505af4158015611469573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061148d9190614796565b905090565b61149a612c3b565b6114a2612cff565b6114aa612e66565b6001600160a01b0316636841f2536040518163ffffffff1660e01b815260040160206040518083038186803b1580156114e257600080fd5b505afa1580156114f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061151a91906147af565b1561158d5760405162461bcd60e51b815260206004820152603760248201527f63616e277420757064617465207472616e73636f64657220706172616d732c2060448201527f63757272656e7420726f756e64206973206c6f636b65640000000000000000006064820152608401610840565b61159a84620f4240101590565b6115e65760405162461bcd60e51b815260206004820152601c60248201527f696e76616c6964207265776172644375742070657263656e74616765000000006044820152606401610840565b6115f383620f4240101590565b61163f5760405162461bcd60e51b815260206004820152601b60248201527f696e76616c69642066656553686172652070657263656e7461676500000000006044820152606401610840565b61164833611cf9565b6116945760405162461bcd60e51b815260206004820152601d60248201527f7472616e73636f646572206d75737420626520726567697374657265640000006044820152606401610840565b336000908152600460205260408120906116ac612e66565b6001600160a01b0316638a19c8bc6040518163ffffffff1660e01b815260040160206040518083038186803b1580156116e457600080fd5b505afa1580156116f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171c9190614796565b905061172733610b81565b15806117335750815481145b6117bd5760405162461bcd60e51b815260206004820152604f60248201527f63616c6c65722063616e277420626520616374697665206f72206d757374206860448201527f61766520616c72656164792063616c6c65642072657761726420666f7220746860648201526e194818dd5c9c995b9d081c9bdd5b99608a1b608482015260a401610840565b600182018690556002820185905560405163b0138c4760e01b81526007600482015233602482015273c45f6918f7bcac7abc8fe05302b3cdf39776cdeb9063b0138c479060440160206040518083038186803b15801561181c57600080fd5b505af4158015611830573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185491906147af565b611883573360008181526003602081905260409091200154611883919061187c846001612edf565b87876133f1565b604080518781526020810187905233917f7346854431dbb3eb8e373c604abf89e90f4865b8447e1e2834d7b3e4677bf544910160405180910390a2505050505050565b6118d382826000806107c3565b5050565b6118df612c3b565b6118e7613708565b6118f083611cf9565b61193c5760405162461bcd60e51b815260206004820152601d60248201527f7472616e73636f646572206d75737420626520726567697374657265640000006044820152606401610840565b6000611946612e66565b6001600160a01b0316638a19c8bc6040518163ffffffff1660e01b815260040160206040518083038186803b15801561197e57600080fd5b505afa158015611992573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119b69190614796565b6001600160a01b038516600090815260046020908152604080832080546007820154868652600383019094529184209495509390926119ff856119fa886001612ffb565b613803565b905083861115611a495760018581015460028088015492850191909155830155600485015486811015611a4057600081815260038701602052604090205483555b85600801549350505b81546060820151158015611a5c57508685145b15611b6e576000611a6b6133a0565b90506000611b28611b1f836001600160a01b0316632de22cdb6040518163ffffffff1660e01b815260040160206040518083038186803b158015611aae57600080fd5b505afa158015611ac2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ae69190614796565b846001600160a01b0316639ae6309a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561088e57600080fd5b846005546138a8565b90506000611b3a82876001015461328e565b90506000611b488383612ffb565b6003880154909150611b649086611b5f8482612edf565b6138a8565b6060870152505050505b6000611b7e8a856002015461328e565b90506000611b8c8b83612ffb565b90506000611b9b8388866138a8565b9050611bb8826108c6838c60090154612edf90919063ffffffff16565b60098a0155611bc88686856138ce565b50505050600a9094019490945550505050505050565b6118d38282600080611492565b6040516339ade16560e11b81526007600482015260009073c45f6918f7bcac7abc8fe05302b3cdf39776cdeb9063735bc2ca9060240161143d565b611c2e613949565b60405163a176adaf60e01b8152600760048201526024810182905273c45f6918f7bcac7abc8fe05302b3cdf39776cdeb9063a176adaf9060440160006040518083038186803b158015611c8057600080fd5b505af4158015611c94573d6000803e3d6000fd5b505050507f9f5033568d78ae30f29f01e944f97b2216493bd19d1b46d429673acff3dcd674604051611cee906020808252601490820152736e756d4163746976655472616e73636f6465727360601b604082015260600190565b60405180910390a150565b6001600160a01b0380821660008181526003602052604081206002810154919390929116148015611d2a5750805415155b9392505050565b611d4086338787878787612740565b505050505050565b611d50613a2d565b600654600555565b611d60612c3b565b611d68612cff565b611d70612dc3565b6002611d7b33610c64565b6002811115611d8c57611d8c6144db565b1415611dd25760405162461bcd60e51b815260206004820152601560248201527418d85b1b195c881b5d5cdd08189948189bdb991959605a1b6044820152606401610840565b611dde33848484612eeb565b505050565b611deb612c3b565b611df3612cff565b6000611dfd612e66565b6001600160a01b0316638a19c8bc6040518163ffffffff1660e01b815260040160206040518083038186803b158015611e3557600080fd5b505afa158015611e49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e6d9190614796565b9050611e7833610b81565b611ed05760405162461bcd60e51b815260206004820152602360248201527f63616c6c6572206d75737420626520616e20616374697665207472616e73636f6044820152623232b960e91b6064820152608401610840565b33600090815260046020526040902054811415611f4e5760405162461bcd60e51b815260206004820152603660248201527f63616c6c65722068617320616c72656164792063616c6c65642072657761726460448201527508199bdc881d1a194818dd5c9c995b9d081c9bdd5b9960521b6064820152608401610840565b3360009081526004602090815260408083208484526003810190925290912060018083015460028085015492840191909155820155600482015483811015611fa457600081815260038401602052604090205482555b6000611fae6133a0565b8354600554604051637dbedad560e01b8152600481019290925260248201526001600160a01b039190911690637dbedad590604401602060405180830381600087803b158015611ffd57600080fd5b505af1158015612011573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120359190614796565b90506120443382878a8a613b28565b84845560405181815233907f619caafabdd75649b302ba8419e48cccf64f37f1983ac4727cfb38b57703ffc9906020015b60405180910390a250505050505050565b604051632ebb2fed60e01b81526007600482015260009073c45f6918f7bcac7abc8fe05302b3cdf39776cdeb90632ebb2fed9060240160206040518083038186803b1580156120d457600080fd5b505af41580156120e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061148d91906147d1565b600061211782611cf9565b1561212457506001919050565b506000919050565b612134613bea565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f4ff638452bbf33c012645d18ae6f05515ff5f2d1dfb0cece8cbf018c60903f7090602001611cee565b61218a612c3b565b612192612cff565b61219a612dc3565b60016121a533610c64565b60028111156121b6576121b66144db565b146121fb5760405162461bcd60e51b815260206004820152601560248201527418d85b1b195c881b5d5cdd08189948189bdb991959605a1b6044820152606401610840565b336000908152600360205260409020836122635760405162461bcd60e51b8152602060048201526024808201527f756e626f6e6420616d6f756e74206d75737420626520677265617465722074686044820152630616e20360e41b6064820152608401610840565b80548411156122c05760405162461bcd60e51b8152602060048201526024808201527f616d6f756e742069732067726561746572207468616e20626f6e64656420616d6044820152631bdd5b9d60e21b6064820152608401610840565b60028101546001600160a01b031660006122d8612e66565b6001600160a01b0316638a19c8bc6040518163ffffffff1660e01b815260040160206040518083038186803b15801561231057600080fd5b505afa158015612324573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123489190614796565b60025490915060009061236690839067ffffffffffffffff16612edf565b60068501546040805180820182528a81526020808201858152600085815260078b01909252929020905181559051600191820155919250906123a9908290612edf565b600686015584546123ba9089612ffb565b808655612477576002850180546001600160a01b0319169055600060048087019190915560405163b0138c4760e01b815260079181019190915233602482015273c45f6918f7bcac7abc8fe05302b3cdf39776cdeb9063b0138c479060440160206040518083038186803b15801561243157600080fd5b505af4158015612445573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061246991906147af565b1561247757612477336132a7565b61248384898989613c44565b60408051828152602081018a905290810183905233906001600160a01b038616907f2d5d98d189bee5496a08db2a5948cb7e5e786f09d17d0c3f228eb41776c24a069060600160405180910390a35050505050505050565b6000806124e6612e66565b6001600160a01b0316638a19c8bc6040518163ffffffff1660e01b815260040160206040518083038186803b15801561251e57600080fd5b505afa158015612532573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125569190614796565b905060006125648583613ea7565b5095945050505050565b6001600160a01b03166000908152600360208190526040909120015490565b612595612c3b565b61259d612cff565b6125a5612dc3565b6001600160a01b0382166125ef5760405162461bcd60e51b81526020600482015260116024820152701a5b9d985b1a59081c9958da5c1a595b9d607a1b6044820152606401610840565b33600090815260036020526040902060010154818110156126525760405162461bcd60e51b815260206004820152601d60248201527f696e73756666696369656e74206665657320746f2077697468647261770000006044820152606401610840565b61265c8183612ffb565b336000908152600360205260409020600101556126776133a0565b6040516320283da960e01b81526001600160a01b0385811660048301526024820185905291909116906320283da990604401600060405180830381600087803b1580156126c357600080fd5b505af11580156126d7573d6000803e3d6000fd5b5050604080516001600160a01b0387168152602081018690523393507f4f1b51dd7a2fcb861aa2670f668be66835c4ee12b4bbbf037e4d0018f39819e492500160405180910390a2505050565b6118d38282600080600080611d31565b6111b781600080611d58565b612748612c3b565b612750612cff565b612758612dc3565b6001600160a01b038616600090815260036020526040812090612779612e66565b6001600160a01b0316638a19c8bc6040518163ffffffff1660e01b815260040160206040518083038186803b1580156127b157600080fd5b505afa1580156127c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127e99190614796565b6002808401549192508a916001600160a01b0316906128078b610c64565b6002811115612818576128186144db565b141561283357612829836001612edf565b600485015561290d565b6001600160a01b0381161580159061285d5750886001600160a01b0316816001600160a01b031614155b1561290d5761286b8a611cf9565b156128de5760405162461bcd60e51b815260206004820152603d60248201527f72656769737465726564207472616e73636f646572732063616e27742064656c60448201527f656761746520746f7761726473206f74686572206164647265737365730000006064820152608401610840565b6128e9836001612edf565b600485015583546128fb908390612edf565b915061290d8185600001548a8a613c44565b6001600160a01b038916600090815260046020908152604080832086845260038082019093529220908101546129555761294b828360000154613f6c565b6060015160038201555b60048101546129765761296c8283600a0154613f6c565b6080015160048201555b5050600082116129d95760405162461bcd60e51b815260206004820152602860248201527f64656c65676174696f6e20616d6f756e74206d75737420626520677265617465604482015267072207468616e20360c41b6064820152608401610840565b6002840180546001600160a01b0319166001600160a01b038b161790558354612a02908c612edf565b8455612a1089838888613fcf565b8a15612abe57612a1e61422d565b6001600160a01b03166323b872dd33612a356133a0565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604481018e9052606401602060405180830381600087803b158015612a8457600080fd5b505af1158015612a98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612abc91906147af565b505b896001600160a01b0316816001600160a01b03168a6001600160a01b03167fe5917769f276ddca9f2ee7c6b0b33e1d1e1b61008010ce622c632dd20d168a238e8860000154604051612b1a929190918252602082015260400190565b60405180910390a45050505050505050505050565b612b37613949565b6002805467ffffffffffffffff831667ffffffffffffffff199091161790556040517f9f5033568d78ae30f29f01e944f97b2216493bd19d1b46d429673acff3dcd67490611cee906020808252600f908201526e1d5b989bdb991a5b99d4195c9a5bd9608a1b604082015260600190565b600080612bb3612e66565b6001600160a01b0316638a19c8bc6040518163ffffffff1660e01b815260040160206040518083038186803b158015612beb57600080fd5b505afa158015612bff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c239190614796565b90506000612c318583613ea7565b9695505050505050565b60008054906101000a90046001600160a01b03166001600160a01b0316635c975abb6040518163ffffffff1660e01b815260040160206040518083038186803b158015612c8757600080fd5b505afa158015612c9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cbf91906147af565b15610d2b5760405162461bcd60e51b815260206004820152601060248201526f1cde5cdd195b481a5cc81c185d5cd95960821b6044820152606401610840565b612d07612e66565b6001600160a01b031663219bc76c6040518163ffffffff1660e01b815260040160206040518083038186803b158015612d3f57600080fd5b505afa158015612d53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d7791906147af565b610d2b5760405162461bcd60e51b815260206004820181905260248201527f63757272656e7420726f756e64206973206e6f7420696e697469616c697a65646044820152606401610840565b6000612dcd612e66565b6001600160a01b0316638a19c8bc6040518163ffffffff1660e01b815260040160206040518083038186803b158015612e0557600080fd5b505afa158015612e19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e3d9190614796565b33600090815260036020526040902060050154909150818110156118d3576118d3338383613007565b60008054604051631c2d8fb360e31b81527fe8438ea868df48e3fc21f2f087b993c9b1837dc0f6135064161ce7d7a1701fe860048201526001600160a01b039091169063e16c7d98906024015b60206040518083038186803b158015612ecb57600080fd5b505afa1580156120e8573d6000803e3d6000fd5b6000611d2a8284614804565b6001600160a01b038416600090815260036020908152604080832086845260078101909252909120612f1d8686610c33565b612f655760405162461bcd60e51b81526020600482015260196024820152781a5b9d985b1a59081d5b989bdb991a5b99c81b1bd8dac81251603a1b6044820152606401610840565b80548254612f739082612edf565b835560008681526007840160205260408120818155600101556002830154612fa6906001600160a01b0316828787613fcf565b600283015460408051888152602081018490526001600160a01b038a81169316917f9f5b64cc71e1e26ff178caaa7877a04d8ce66fde989251870e80e6fbee690c17910160405180910390a350505050505050565b6000611d2a828461481c565b6001600160a01b03831660009081526003602052604081209061302b836001612edf565b82546001840154600285015492935090916001600160a01b031615613105576130548787613ea7565b60028601546001600160a01b031660009081526004602090815260408083208b84526003808201909352922090810154939550919350916130af578154888110156130ad576130a38382613f6c565b6060015160038301555b505b60048101546130db57600a820154888110156130d9576130cf8382613f6c565b6080015160048301555b505b60028601546001600160a01b038a8116911614156131025760006009830181905560088301555b50505b600284015484546001600160a01b03808a169216907fd7eab0765b772ea6ea859d5633baf737502198012e930f257f90013d9b21109490613147908690612ffb565b6001880154613157908690612ffb565b6040805192835260208301919091528101879052606081018a905260800160405180910390a36005840195909555825550600101919091555050565b600054604051631c2d8fb360e31b81527f121833d5ee4fda5e1a4034c2b7be8155c158142541dea26f39122c796649233f60048201526001600160a01b039091169063e16c7d989060240160206040518083038186803b1580156131f657600080fd5b505afa15801561320a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061322e91906147d1565b6001600160a01b0316336001600160a01b031614610d2b5760405162461bcd60e51b815260206004820152601760248201527f63616c6c6572206d7573742062652056657269666965720000000000000000006044820152606401610840565b6000611d2a620f42406132a1858561427e565b9061428a565b604051635d35e00760e01b8152600760048201526001600160a01b038216602482015273c45f6918f7bcac7abc8fe05302b3cdf39776cdeb90635d35e0079060440160006040518083038186803b15801561330157600080fd5b505af4158015613315573d6000803e3d6000fd5b5050505061332e6133258261256e565b60065490612ffb565b60065560006133406001610856612e66565b6001600160a01b0383166000818152600460205260409081902060060183905551919250907ffee3e693fc72d0a0a673805f3e606c551f4c677b9072444b90dd2d0406bc995c906133949084815260200190565b60405180910390a25050565b60008054604051631c2d8fb360e31b81527f6e58ad548d72b425ea94c15f453bf26caddb061d82b2551db7fdd3cefe0e994060048201526001600160a01b039091169063e16c7d9890602401612eb3565b6006546040516304aa129960e41b81526007600482015273c45f6918f7bcac7abc8fe05302b3cdf39776cdeb90634aa129909060240160206040518083038186803b15801561343f57600080fd5b505af4158015613453573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061347791906147af565b1561360257604051633972059360e11b81526007600482015260009073c45f6918f7bcac7abc8fe05302b3cdf39776cdeb906372e40b269060240160206040518083038186803b1580156134ca57600080fd5b505af41580156134de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061350291906147d1565b9050600061350f8261256e565b9050808711613520575050506110fd565b604051635d35e00760e01b8152600760048201526001600160a01b038316602482015273c45f6918f7bcac7abc8fe05302b3cdf39776cdeb90635d35e0079060440160006040518083038186803b15801561357a57600080fd5b505af415801561358e573d6000803e3d6000fd5b5050506001600160a01b0383166000908152600460205260409020600601879055506135ba8382612ffb565b9250816001600160a01b03167ffee3e693fc72d0a0a673805f3e606c551f4c677b9072444b90dd2d0406bc995c876040516135f791815260200190565b60405180910390a250505b6040516327dd54d360e11b815273c45f6918f7bcac7abc8fe05302b3cdf39776cdeb90634fbaa9a690613642906007908a908a9089908990600401614833565b60006040518083038186803b15801561365a57600080fd5b505af415801561366e573d6000803e3d6000fd5b505050506136858582612edf90919063ffffffff16565b6001600160a01b03871660009081526004602081815260408084209283018990556005830189905560001960068401558884526003830190915290912087905590915060068290556040518581526001600160a01b038816907f65d72d782835d64c3287844a829608d5abdc7e864cc9affe96d910ab3db665e990602001612075565b600054604051631c2d8fb360e31b81527fbd1aa3e8d2464256d7fd3dcf645c16418d5d8c51d971f1ad7d57e7b1b5eee23960048201526001600160a01b039091169063e16c7d989060240160206040518083038186803b15801561376b57600080fd5b505afa15801561377f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137a391906147d1565b6001600160a01b0316336001600160a01b031614610d2b5760405162461bcd60e51b815260206004820152601b60248201527f63616c6c6572206d757374206265205469636b657442726f6b657200000000006044820152606401610840565b6138356040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b61383f8383613f6c565b835460608201519192509015801561385657508281105b15613870576138658482613f6c565b606090810151908301525b600a840154608083015115801561388657508381105b156138a0576138958582613f6c565b608090810151908401525b505092915050565b6000610c2b6b033b2e3c9fd0803ce80000006132a16138c78686614296565b879061427e565b608082015160608301516000906138ef576138ea600180614296565b6138f5565b83606001515b905084600401546000141561392c5761391d613916828588600001546138a8565b8390612edf565b85600401819055505050505050565b61391d61393e828588600001546138a8565b600487015490612edf565b60008054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561399557600080fd5b505afa1580156139a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139cd91906147d1565b6001600160a01b0316336001600160a01b031614610d2b5760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206d75737420626520436f6e74726f6c6c6572206f776e6572006044820152606401610840565b600054604051631c2d8fb360e31b81527fe8438ea868df48e3fc21f2f087b993c9b1837dc0f6135064161ce7d7a1701fe860048201526001600160a01b039091169063e16c7d989060240160206040518083038186803b158015613a9057600080fd5b505afa158015613aa4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ac891906147d1565b6001600160a01b0316336001600160a01b031614610d2b5760405162461bcd60e51b815260206004820152601c60248201527f63616c6c6572206d75737420626520526f756e64734d616e61676572000000006044820152606401610840565b6001600160a01b0385166000908152600460209081526040808320868452600381019092528220815491929091613b60908490613f6c565b9050826008015483600701819055506000613b7f88846001015461328e565b90506000613b8d8983612ffb565b90506000613ba482876007015487600001546138a8565b9050613bc1836108c6838960080154612edf90919063ffffffff16565b6008870155613bd18585846142b2565b613bdd8b8b8a8a613fcf565b5050505050505050505050565b6000546001600160a01b03163314610d2b5760405162461bcd60e51b815260206004820152601960248201527f63616c6c6572206d75737420626520436f6e74726f6c6c6572000000000000006044820152606401610840565b60405163b0138c4760e01b8152600760048201526001600160a01b038516602482015273c45f6918f7bcac7abc8fe05302b3cdf39776cdeb9063b0138c479060440160206040518083038186803b158015613c9e57600080fd5b505af4158015613cb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cd691906147af565b15613e5a576000613ce68561256e565b90506000613cf48286612ffb565b90506000613d00612e66565b6001600160a01b0316638a19c8bc6040518163ffffffff1660e01b815260040160206040518083038186803b158015613d3857600080fd5b505afa158015613d4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d709190614796565b90506000613d7f826001612edf565b604051631c11bf7f60e11b815290915073c45f6918f7bcac7abc8fe05302b3cdf39776cdeb906338237efe90613dc2906007908c9088908c908c90600401614833565b60006040518083038186803b158015613dda57600080fd5b505af4158015613dee573d6000803e3d6000fd5b5050600654613e009250905088612ffb565b6006556001600160a01b038816600090815260046020819052604090912090810154831115613e3d57600083815260038201602052604090208590555b600481018290556000918252600301602052604090209190915550505b6001600160a01b03841660009081526003602081905260409091200154613e819084612ffb565b6001600160a01b0390941660009081526003602081905260409091200193909355505050565b6001600160a01b03808316600090815260036020908152604080832060028101549094168352600490915281206001808401548454600586015490959194919392613ef29190612edf565b60028401549091506001600160a01b039081169088168114878311613f2e57613f2884613f20856001612ffb565b8a8a8a614300565b90975095505b8015613f60576008840154613f44908890612edf565b9650613f5d846009015487612edf90919063ffffffff16565b95505b50505050509250929050565b613f9e6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6000828152600393840160208181526040832095860154606085015293909152909152600490910154608082015290565b613fd884611cf9565b15614206576000613fe88561256e565b90506000613ff68286612edf565b90506000614002612e66565b6001600160a01b0316638a19c8bc6040518163ffffffff1660e01b815260040160206040518083038186803b15801561403a57600080fd5b505afa15801561404e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140729190614796565b90506000614081826001612edf565b60405163b0138c4760e01b8152600760048201526001600160a01b038a16602482015290915073c45f6918f7bcac7abc8fe05302b3cdf39776cdeb9063b0138c479060440160206040518083038186803b1580156140de57600080fd5b505af41580156140f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061411691906147af565b156141f457604051631c11bf7f60e11b815273c45f6918f7bcac7abc8fe05302b3cdf39776cdeb906338237efe9061415b906007908c9088908c908c90600401614833565b60006040518083038186803b15801561417357600080fd5b505af4158015614187573d6000803e3d6000fd5b50506006546141999250905088612edf565b6006556001600160a01b0388166000908152600460208190526040909120908101548311156141d657600083815260038201602052604090208590555b60008281526003820160205260409020849055600401819055614201565b61420188848389896133f1565b505050505b6001600160a01b03841660009081526003602081905260409091200154613e819084612edf565b60008054604051631c2d8fb360e31b81527f3443e257065fe41dd0e4d1f5a1b73a22a62e300962b57f30cddf41d0f8273ba760048201526001600160a01b039091169063e16c7d9890602401612eb3565b6000611d2a8284614861565b6000611d2a8284614880565b6000611d2a826132a1856b033b2e3c9fd0803ce800000061427e565b60008260600151600014156142d1576142cc600180614296565b6142d7565b82606001515b90506142f26142eb828487600001546138a8565b8290612edf565b846003018190555050505050565b600080600061430f8888613f6c565b905080606001516000141561432f57614329600180614296565b60608201525b600061433b8988613803565b905080606001516000141561435b57614355600180614296565b60608201525b61438e6143878761437d85608001518560800151612ffb90919063ffffffff16565b85606001516138a8565b8690612edf565b92506143a386826060015184606001516138a8565b935050509550959350505050565b6001600160a01b03811681146111b757600080fd5b600080600080608085870312156143dc57600080fd5b84356143e7816143b1565b93506020850135925060408501356143fe816143b1565b9150606085013561440e816143b1565b939692955090935050565b60008060008060008060c0878903121561443257600080fd5b863561443d816143b1565b9550602087013594506040870135614454816143b1565b93506060870135614464816143b1565b92506080870135614474816143b1565b915060a0870135614484816143b1565b809150509295509295509295565b6000602082840312156144a457600080fd5b8135611d2a816143b1565b600080604083850312156144c257600080fd5b82356144cd816143b1565b946020939093013593505050565b634e487b7160e01b600052602160045260246000fd5b6020810160038310614505576145056144db565b91905290565b6000806000806080858703121561452157600080fd5b843561452c816143b1565b9350602085013561453c816143b1565b93969395505050506040820135916060013590565b60006020828403121561456357600080fd5b5035919050565b6000806000806080858703121561458057600080fd5b843593506020850135925060408501356143fe816143b1565b6000806000606084860312156145ae57600080fd5b83356145b9816143b1565b95602085013595506040909401359392505050565b600080604083850312156145e157600080fd5b50508035926020909101359150565b60008060008060008060c0878903121561460957600080fd5b86359550602087013561461b816143b1565b94506040870135614454816143b1565b60008060006060848603121561464057600080fd5b833592506020840135614652816143b1565b91506040840135614662816143b1565b809150509250925092565b6000806040838503121561468057600080fd5b823561468b816143b1565b9150602083013561469b816143b1565b809150509250929050565b6020810160028310614505576145056144db565b600080604083850312156146cd57600080fd5b82359150602083013561469b816143b1565b600080600080600080600060e0888a0312156146fa57600080fd5b87359650602088013561470c816143b1565b9550604088013561471c816143b1565b9450606088013561472c816143b1565b9350608088013561473c816143b1565b925060a088013561474c816143b1565b915060c088013561475c816143b1565b8091505092959891949750929550565b60006020828403121561477e57600080fd5b813567ffffffffffffffff81168114611d2a57600080fd5b6000602082840312156147a857600080fd5b5051919050565b6000602082840312156147c157600080fd5b81518015158114611d2a57600080fd5b6000602082840312156147e357600080fd5b8151611d2a816143b1565b634e487b7160e01b600052601160045260246000fd5b60008219821115614817576148176147ee565b500190565b60008282101561482e5761482e6147ee565b500390565b9485526001600160a01b03938416602086015260408501929092528216606084015216608082015260a00190565b600081600019048311821515161561487b5761487b6147ee565b500290565b60008261489d57634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220f132d3fee77c8b09e2888b9f4b814e0d90062ef1b21525414d4cf78aef02ced764736f6c63430008090033000000000000000000000000d8e8328501e9645d16cf49539efc04f734606ee4