0 txs
54.4k calls
constructor
constructor(address _ethPOS, address _eigenPodBeacon, address _delegationManager, address _pauserRegistry, string _version)
functions
beaconChainETHStrategy
viewfunction beaconChainETHStrategy() view returns (address)
beaconChainSlashingFactor
viewfunction beaconChainSlashingFactor(address podOwner) view returns (uint64)
burnableETHShares
viewfunction burnableETHShares() view returns (uint256)
delegationManager
viewfunction delegationManager() view returns (address)
eigenPodBeacon
viewfunction eigenPodBeacon() view returns (address)
ethPOS
viewfunction ethPOS() view returns (address)
getPod
viewfunction getPod(address podOwner) view returns (address)
hasPod
viewfunction hasPod(address podOwner) view returns (bool)
numPods
viewfunction numPods() view returns (uint256)
owner
viewfunction owner() view returns (address)
ownerToPod
viewfunction ownerToPod(address podOwner) view returns (address)
paused
viewfunction paused() view returns (uint256)
paused
viewfunction paused(uint8 index) view returns (bool)
pauserRegistry
viewfunction pauserRegistry() view returns (address)
podOwnerDepositShares
viewfunction podOwnerDepositShares(address podOwner) view returns (int256 shares)
stakerDepositShares
viewfunction stakerDepositShares(address user, address strategy) view returns (uint256 depositShares)
version
viewfunction version() view returns (string)
addShares
nonpayablefunction addShares(address staker, address strategy, uint256 shares) returns (uint256, uint256)
createPod
nonpayablefunction createPod() returns (address)
increaseBurnableShares
nonpayablefunction increaseBurnableShares(address, uint256 addedSharesToBurn)
initialize
nonpayablefunction initialize(address initialOwner, uint256 _initPausedStatus)
pause
nonpayablefunction pause(uint256 newPausedStatus)
pauseAll
nonpayablefunction pauseAll()
recordBeaconChainETHBalanceUpdate
nonpayablefunction recordBeaconChainETHBalanceUpdate(address podOwner, uint256 prevRestakedBalanceWei, int256 balanceDeltaWei)
removeDepositShares
nonpayablefunction removeDepositShares(address staker, address strategy, uint256 depositSharesToRemove) returns (uint256)
renounceOwnership
nonpayablefunction renounceOwnership()
stake
payablefunction stake(bytes pubkey, bytes signature, bytes32 depositDataRoot) payable
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause(uint256 newPausedStatus)
withdrawSharesAsTokens
nonpayablefunction withdrawSharesAsTokens(address staker, address strategy, address, uint256 shares)
events
BeaconChainETHDeposited
event BeaconChainETHDeposited(address indexed podOwner, uint256 amount)
BeaconChainETHWithdrawalCompleted
event BeaconChainETHWithdrawalCompleted(address indexed podOwner, uint256 shares, uint96 nonce, address delegatedAddress, address withdrawer, bytes32 withdrawalRoot)
BeaconChainSlashingFactorDecreased
event BeaconChainSlashingFactorDecreased(address staker, uint64 prevBeaconChainSlashingFactor, uint64 newBeaconChainSlashingFactor)
BurnableETHSharesIncreased
event BurnableETHSharesIncreased(uint256 shares)
Initialized
event Initialized(uint8 version)
NewTotalShares
event NewTotalShares(address indexed podOwner, int256 newTotalShares)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address indexed account, uint256 newPausedStatus)
PodDeployed
event PodDeployed(address indexed eigenPod, address indexed podOwner)
PodSharesUpdated
event PodSharesUpdated(address indexed podOwner, int256 sharesDelta)
Unpaused
event Unpaused(address indexed account, uint256 newPausedStatus)
errors
CurrentlyPaused
error CurrentlyPaused()
EigenPodAlreadyExists
error EigenPodAlreadyExists()
InputAddressZero
error InputAddressZero()
InvalidNewPausedStatus
error InvalidNewPausedStatus()
InvalidShortString
error InvalidShortString()
InvalidStrategy
error InvalidStrategy()
LegacyWithdrawalsNotCompleted
error LegacyWithdrawalsNotCompleted()
OnlyDelegationManager
error OnlyDelegationManager()
OnlyEigenPod
error OnlyEigenPod()
OnlyPauser
error OnlyPauser()
OnlyUnpauser
error OnlyUnpauser()
SharesNegative
error SharesNegative()
SharesNotMultipleOfGwei
error SharesNotMultipleOfGwei()
StringTooLong
error StringTooLong(string str)
creation bytecode
0x610120604052348015610010575f5ffd5b50604051612da0380380612da083398101604081905261002f916101c2565b80858585856001600160a01b03811661005b576040516339b190bb60e11b815260040160405180910390fd5b6001600160a01b0390811660805292831660a05290821660c0521660e05261008281610099565b610100525061008f6100df565b505050505061031a565b5f5f829050601f815111156100cc578260405163305a27a960e01b81526004016100c391906102bf565b60405180910390fd5b80516100d7826102f4565b179392505050565b5f54610100900460ff16156101465760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084016100c3565b5f5460ff90811614610195575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146101ab575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f5f60a086880312156101d6575f5ffd5b85516101e181610197565b60208701519095506101f281610197565b604087015190945061020381610197565b606087015190935061021481610197565b60808701519092506001600160401b0381111561022f575f5ffd5b8601601f8101881361023f575f5ffd5b80516001600160401b03811115610258576102586101ae565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610286576102866101ae565b6040528181528282016020018a101561029d575f5ffd5b8160208401602083015e5f602083830101528093505050509295509295909350565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80516020808301519190811015610314575f198160200360031b1b821691505b50919050565b60805160a05160c05160e051610100516129fc6103a45f395f610a0e01525f818161055c015281816107090152818161096401528181610b0301528181610ebd01528181610f72015261120601525f81816101fb01528181611008015261182101525f61036301525f81816103aa0152818161063e01528181610a4c015261131a01526129fc5ff3fe6080604052600436106101c5575f3560e01c80639b4e4634116100f2578063d48e889411610092578063f5d4fed311610062578063f5d4fed31461059d578063f6848d24146105b2578063fabc1cbc146105eb578063fe243a171461060a575f5ffd5b8063d48e889414610501578063debe1eab1461052c578063ea4d3c9b1461054b578063f2fde38b1461057e575f5ffd5b8063a38406a3116100cd578063a38406a314610476578063a3d75e0914610495578063a6a509be146104cd578063cd6dc687146104e2575f5ffd5b80639b4e4634146104105780639ba0627514610423578063a1ca780b14610457575f5ffd5b80635c975abb1161016857806384d810621161013857806384d8106214610385578063886f1195146103995780638da5cb5b146103cc5780639104c319146103e9575f5ffd5b80635c975abb14610301578063715018a61461031f578063724af4231461033357806374cdd79814610352575f5ffd5b806350ff7225116101a357806350ff72251461025957806354fd4d501461028d578063595c6a67146102ae5780635ac86ab7146102c2575f5ffd5b8063136439dd146101c9578063292b7b2b146101ea5780632eae418c1461023a575b5f5ffd5b3480156101d4575f5ffd5b506101e86101e3366004611c73565b610629565b005b3480156101f5575f5ffd5b5061021d7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b348015610245575f5ffd5b506101e8610254366004611c9e565b6106fe565b348015610264575f5ffd5b50610278610273366004611cec565b610957565b60408051928352602083019190915201610231565b348015610298575f5ffd5b506102a1610a07565b6040516102319190611d2a565b3480156102b9575f5ffd5b506101e8610a37565b3480156102cd575f5ffd5b506102f16102dc366004611d5f565b606654600160ff9092169190911b9081161490565b6040519015158152602001610231565b34801561030c575f5ffd5b506066545b604051908152602001610231565b34801561032a575f5ffd5b506101e8610ae6565b34801561033e575f5ffd5b5061031161034d366004611cec565b610af7565b34801561035d575f5ffd5b5061021d7f000000000000000000000000000000000000000000000000000000000000000081565b348015610390575f5ffd5b5061021d610c3c565b3480156103a4575f5ffd5b5061021d7f000000000000000000000000000000000000000000000000000000000000000081565b3480156103d7575f5ffd5b506033546001600160a01b031661021d565b3480156103f4575f5ffd5b5061021d73beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac081565b6101e861041e366004611dbd565b610cbe565b34801561042e575f5ffd5b5061021d61043d366004611e30565b60986020525f90815260409020546001600160a01b031681565b348015610462575f5ffd5b506101e8610471366004611e4b565b610d8d565b348015610481575f5ffd5b5061021d610490366004611e30565b610fae565b3480156104a0575f5ffd5b506104b46104af366004611e30565b61107f565b60405167ffffffffffffffff9091168152602001610231565b3480156104d8575f5ffd5b5061031160995481565b3480156104ed575f5ffd5b506101e86104fc366004611e7d565b6110df565b34801561050c575f5ffd5b5061031161051b366004611e30565b609b6020525f908152604090205481565b348015610537575f5ffd5b506101e8610546366004611e7d565b6111fb565b348015610556575f5ffd5b5061021d7f000000000000000000000000000000000000000000000000000000000000000081565b348015610589575f5ffd5b506101e8610598366004611e30565b61129f565b3480156105a8575f5ffd5b50610311609e5481565b3480156105bd575f5ffd5b506102f16105cc366004611e30565b6001600160a01b039081165f9081526098602052604090205416151590565b3480156105f6575f5ffd5b506101e8610605366004611c73565b611318565b348015610615575f5ffd5b50610311610624366004611ea7565b61142e565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa15801561068b573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106af9190611ede565b6106cc57604051631d77d47760e21b815260040160405180910390fd5b60665481811681146106f15760405163c61dca5d60e01b815260040160405180910390fd5b6106fa826114ae565b5050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107475760405163f739589b60e01b815260040160405180910390fd5b61074f6114eb565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac01461078c57604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0384166107b3576040516339b190bb60e11b815260040160405180910390fd5b5f81136107d35760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384165f908152609b60205260408120549082908212156108cd575f6107ff83611f11565b90505f8185111561081d5750806108168186611f2b565b9250610823565b505f9150835b5f61082e8286611f3e565b6001600160a01b038a165f818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c61939061087e9085815260200190565b60405180910390a2886001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe077098826040516108c191815260200190565b60405180910390a25050505b8015610945576001600160a01b038681165f81815260986020526040908190205490516362483a2160e11b81526004810192909252602482018490529091169063c4907442906044015b5f604051808303815f87803b15801561092e575f5ffd5b505af1158015610940573d5f5f3e3d5ffd5b505050505b5050610951600160c955565b50505050565b5f80336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109a25760405163f739589b60e01b815260040160405180910390fd5b6109aa6114eb565b6001600160a01b03841673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0146109e757604051632711b74d60e11b815260040160405180910390fd5b6109f18584611544565b915091506109ff600160c955565b935093915050565b6060610a327f000000000000000000000000000000000000000000000000000000000000000061168b565b905090565b60405163237dfb4760e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906346fbf68e90602401602060405180830381865afa158015610a99573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610abd9190611ede565b610ada57604051631d77d47760e21b815260040160405180910390fd5b610ae45f196114ae565b565b610aee6116c8565b610ae45f611722565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b415760405163f739589b60e01b815260040160405180910390fd5b610b496114eb565b6001600160a01b03831673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac014610b8657604051632711b74d60e11b815260040160405180910390fd5b5f610b9083611773565b6001600160a01b0386165f908152609b6020526040902054610bb29190611f65565b90505f811215610bd55760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0385165f818152609b602052604090819020839055517fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe07709890610c219084815260200190565b60405180910390a29050610c35600160c955565b9392505050565b6066545f908190600190811603610c665760405163840a48d560e01b815260040160405180910390fd5b610c6e6114eb565b335f908152609860205260409020546001600160a01b031615610ca45760405163031a852160e21b815260040160405180910390fd5b5f610cad6117dc565b925050610cba600160c955565b5090565b6066545f90600190811603610ce65760405163840a48d560e01b815260040160405180910390fd5b610cee6114eb565b335f908152609860205260409020546001600160a01b031680610d1657610d136117dc565b90505b6040516326d3918d60e21b81526001600160a01b03821690639b4e4634903490610d4c908b908b908b908b908b90600401611fb3565b5f604051808303818588803b158015610d63575f5ffd5b505af1158015610d75573d5f5f3e3d5ffd5b505050505050610d85600160c955565b505050505050565b6001600160a01b038084165f908152609860205260409020548491163314610dc8576040516312e16d7160e11b815260040160405180910390fd5b610dd06114eb565b6001600160a01b038416610df7576040516339b190bb60e11b815260040160405180910390fd5b610e05633b9aca0083612000565b15610e23576040516347d072bb60e11b815260040160405180910390fd5b6001600160a01b0384165f908152609b602052604081205490811215610e5c57604051634b692bcf60e01b815260040160405180910390fd5b5f831315610f1d575f5f610e708786611544565b604051631e328e7960e11b81526001600160a01b038a8116600483015273beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac0602483015260448201849052606482018390529294509092507f000000000000000000000000000000000000000000000000000000000000000090911690633c651cf2906084015f604051808303815f87803b158015610f00575f5ffd5b505af1158015610f12573d5f5f3e3d5ffd5b505050505050610fa3565b5f831215610fa3575f610f398686610f3487611f11565b611937565b60405163305068e760e11b81526001600160a01b0388811660048301526024820185905267ffffffffffffffff831660448301529192507f0000000000000000000000000000000000000000000000000000000000000000909116906360a0d1ce90606401610917565b50610951600160c955565b6001600160a01b038082165f908152609860205260408120549091168061107957611076836001600160a01b03165f1b60405180610940016040528061090e81526020016120b961090e9139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091525f606082015260800160408051601f198184030181529082905261105b9291602001612036565b60405160208183030381529060405280519060200120611a30565b90505b92915050565b6001600160a01b0381165f908152609d6020908152604080832081518083019092525460ff8116151580835261010090910467ffffffffffffffff1692820192909252906110d557670de0b6b3a7640000610c35565b6020015192915050565b5f54610100900460ff16158080156110fd57505f54600160ff909116105b806111165750303b15801561111657505f5460ff166001145b61117e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff19166001179055801561119f575f805461ff0019166101001790555b6111a883611722565b6111b1826114ae565b80156111f6575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146112445760405163f739589b60e01b815260040160405180910390fd5b61124c6114eb565b80609e5f82825461125d9190612052565b90915550506040518181527f1ed04b7fd262c0d9e50fa02957f32a81a151f03baaa367faeedc7521b001c4a49060200160405180910390a16106fa600160c955565b6112a76116c8565b6001600160a01b03811661130c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611175565b61131581611722565b50565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611374573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113989190612065565b6001600160a01b0316336001600160a01b0316146113c95760405163794821ff60e01b815260040160405180910390fd5b606654801982198116146113f05760405163c61dca5d60e01b815260040160405180910390fd5b606682905560405182815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c9060200160405180910390a25050565b5f6001600160a01b03821673beac0eeeeeeeeeeeeeeeeeeeeeeeeeeeeeebeac01461146c57604051632711b74d60e11b815260040160405180910390fd5b6001600160a01b0383165f908152609b6020526040812054126114a6576001600160a01b0383165f908152609b6020526040902054611076565b505f92915050565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a250565b600260c9540361153d5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611175565b600260c955565b5f806001600160a01b03841661156d576040516339b190bb60e11b815260040160405180910390fd5b5f83121561158e5760405163ef147de160e01b815260040160405180910390fd5b6001600160a01b0384165f908152609b602052604081205484916115b28383611f3e565b6001600160a01b0388165f818152609b60205260409081902083905551919250907f4e2b791dedccd9fb30141b088cabf5c14a8912b52f59375c95c010700b8c6193906116029086815260200190565b60405180910390a2866001600160a01b03167fd4def76d6d2bed6f14d5cd9af73cc2913d618d00edde42432e81c09bfe0770988260405161164591815260200190565b60405180910390a25f8113611662575f5f94509450505050611684565b5f821215611677575f94509250611684915050565b5092508391506116849050565b9250929050565b60605f61169783611a3c565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6033546001600160a01b03163314610ae45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611175565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6001600160ff1b03821115610cba5760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401611175565b5f60995f81546117eb90612080565b9091555060408051610940810190915261090e8082525f9161188891839133916120b96020830139604080516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166020820152808201919091525f606082015260800160408051601f19818403018152908290526118749291602001612036565b604051602081830303815290604052611a63565b60405163189acdbd60e31b81523360048201529091506001600160a01b0382169063c4d66de8906024015f604051808303815f87803b1580156118c9575f5ffd5b505af11580156118db573d5f5f3e3d5ffd5b5050335f8181526098602052604080822080546001600160a01b0319166001600160a01b038816908117909155905192945092507f21c99d0db02213c32fff5b05cf0a718ab5f858802b91498f80d82270289d856a91a3919050565b5f806119438385611f2b565b90505f61194f8661107f565b90505f61196767ffffffffffffffff83168488611b65565b90505f6119748284612098565b6040805180820182526001815267ffffffffffffffff85811660208084018281526001600160a01b038f165f818152609d845287902095518654925168ffffffffffffffffff1990931690151568ffffffffffffffff001916176101009286169290920291909117909455845193845291881691830191909152918101919091529091507fb160ab8589bf47dc04ea11b50d46678d21590cea2ed3e454e7bd3e41510f98cf9060600160405180910390a1979650505050505050565b5f611076838330611c4a565b5f60ff8216601f81111561107957604051632cd44ac360e21b815260040160405180910390fd5b5f83471015611ab45760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e63650000006044820152606401611175565b81515f03611b045760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f6044820152606401611175565b8282516020840186f590506001600160a01b038116610c355760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f79000000000000006044820152606401611175565b5f80805f19858709858702925082811083820303915050805f03611b9c57838281611b9257611b92611fec565b0492505050610c35565b808411611be35760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401611175565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b5f60208284031215611c83575f5ffd5b5035919050565b6001600160a01b0381168114611315575f5ffd5b5f5f5f5f60808587031215611cb1575f5ffd5b8435611cbc81611c8a565b93506020850135611ccc81611c8a565b92506040850135611cdc81611c8a565b9396929550929360600135925050565b5f5f5f60608486031215611cfe575f5ffd5b8335611d0981611c8a565b92506020840135611d1981611c8a565b929592945050506040919091013590565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215611d6f575f5ffd5b813560ff81168114610c35575f5ffd5b5f5f83601f840112611d8f575f5ffd5b50813567ffffffffffffffff811115611da6575f5ffd5b602083019150836020828501011115611684575f5ffd5b5f5f5f5f5f60608688031215611dd1575f5ffd5b853567ffffffffffffffff811115611de7575f5ffd5b611df388828901611d7f565b909650945050602086013567ffffffffffffffff811115611e12575f5ffd5b611e1e88828901611d7f565b96999598509660400135949350505050565b5f60208284031215611e40575f5ffd5b8135610c3581611c8a565b5f5f5f60608486031215611e5d575f5ffd5b8335611e6881611c8a565b95602085013595506040909401359392505050565b5f5f60408385031215611e8e575f5ffd5b8235611e9981611c8a565b946020939093013593505050565b5f5f60408385031215611eb8575f5ffd5b8235611ec381611c8a565b91506020830135611ed381611c8a565b809150509250929050565b5f60208284031215611eee575f5ffd5b81518015158114610c35575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b5f600160ff1b8201611f2557611f25611efd565b505f0390565b8181038181111561107957611079611efd565b8082018281125f831280158216821582161715611f5d57611f5d611efd565b505092915050565b8181035f831280158383131683831282161715611f8457611f84611efd565b5092915050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b606081525f611fc6606083018789611f8b565b8281036020840152611fd9818688611f8b565b9150508260408301529695505050505050565b634e487b7160e01b5f52601260045260245ffd5b5f8261201a57634e487b7160e01b5f52601260045260245ffd5b500790565b5f81518060208401855e5f93019283525090919050565b5f61204a612044838661201f565b8461201f565b949350505050565b8082018082111561107957611079611efd565b5f60208284031215612075575f5ffd5b8151610c3581611c8a565b5f6001820161209157612091611efd565b5060010190565b67ffffffffffffffff828116828216039081111561107957611079611efd56fe608060405260405161090e38038061090e83398101604081905261002291610460565b61002e82826000610035565b505061058a565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610520565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610520565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108e7602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053b565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c65782516103bf576001600160a01b0385163b6103bf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d0565b6103d083836103d8565b949350505050565b8151156103e85781518083602001fd5b8060405162461bcd60e51b81526004016101699190610557565b80516001600160a01b038116811461041957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561044f578181015183820152602001610437565b838111156100f95750506000910152565b6000806040838503121561047357600080fd5b61047c83610402565b60208401519092506001600160401b038082111561049957600080fd5b818501915085601f8301126104ad57600080fd5b8151818111156104bf576104bf61041e565b604051601f8201601f19908116603f011681019083821181831017156104e7576104e761041e565b8160405282815288602084870101111561050057600080fd5b610511836020830160208801610434565b80955050505050509250929050565b60006020828403121561053257600080fd5b6102c882610402565b6000825161054d818460208701610434565b9190910192915050565b6020815260008251806020840152610576816040850160208701610434565b601f01601f19169190910160400192915050565b61034e806105996000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f260279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb9190610249565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a2565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b6060831561020d578251610206576001600160a01b0385163b6102065760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b5081610217565b610217838361021f565b949350505050565b81511561022f5781518083602001fd5b8060405162461bcd60e51b81526004016101fd91906102be565b60006020828403121561025b57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b8381101561028d578181015183820152602001610275565b8381111561029c576000848401525b50505050565b600082516102b4818460208701610272565b9190910192915050565b60208152600082518060208401526102dd816040850160208701610272565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d51e81d3bc5ed20a26aeb05dce7e825c503b2061aa78628027300c8d65b9d89a64736f6c634300080c0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220cbdc18eab0d6586f86542a10e04092fe3f48030b0322afd813dc9ee6bb79df8664736f6c634300081b003300000000000000000000000000000000219ab540356cbb839cbe05303d7705fa0000000000000000000000005a2a4f2f3c18f09179b6703e63d9edd16590907300000000000000000000000039053d51b77dc0d36036fc1fcc8cb819df8ef37a000000000000000000000000b8765ed72235d279c3fb53936e4606db0ef1280600000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000005312e332e30000000000000000000000000000000000000000000000000000000