0 txs
11.5k calls
constructor
constructor()
functions
balanceOf
viewfunction balanceOf(uint256 _pid) view returns (uint256)
calculateHarvestDcbRewards
viewfunction calculateHarvestDcbRewards(uint256 _pid) view returns (uint256 currentCallFee)
calculateTotalPendingRewards
viewfunction calculateTotalPendingRewards(uint256 _pid) view returns (uint256 amount)
callFee
viewfunction callFee() view returns (uint256)
canUnstake
viewfunction canUnstake(address _user, uint256 _pid) view returns (bool)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
ERC712_VERSION
viewfunction ERC712_VERSION() view returns (string)
fee
viewfunction fee() view returns (uint256 depositFee, address feeReceiver)
getDomainSeparator
viewfunction getDomainSeparator() view returns (bytes32)
getPricePerFullShare
viewfunction getPricePerFullShare(uint256 _pid) view returns (uint256)
getRewardOfUser
viewfunction getRewardOfUser(address _user, uint256 _pid) view returns (uint256 reward)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
masterchef
viewfunction masterchef() view returns (address)
paused
viewfunction paused() view returns (bool)
pools
viewfunction pools(uint256) view returns (uint256 totalShares, uint256 pendingClaim, uint256 lastHarvestedTime)
rebates
viewfunction rebates(uint256) view returns (bool isEarlyWithdrawActive, uint256 rebatePercent, uint256 earlyWithdrawPenalty)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
users
viewfunction users(uint256, address) view returns (uint256 shares, uint256 lastDepositedTime, uint256 totalInvested, uint256 totalClaimed)
deposit
nonpayablefunction deposit(uint256 _pid, uint256 _amount)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
harvest
nonpayablefunction harvest(uint256 _pid)
harvestAll
nonpayablefunction harvestAll()
initialize
nonpayablefunction initialize(address _masterchef, address _admin)
pause
nonpayablefunction pause()
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setCallFee
nonpayablefunction setCallFee(uint256 _callFee)
setDepositFee
nonpayablefunction setDepositFee(address _feeReceiver, uint256 _depositFee)
setDomainSeparator
nonpayablefunction setDomainSeparator(string name)
setManagerRole
nonpayablefunction setManagerRole(address _user, bool _status)
setRebateInfo
nonpayablefunction setRebateInfo(uint256 _pid, tuple _rebate)
transferUserStakeInfo
nonpayablefunction transferUserStakeInfo(address from, address to, uint256 pid, bytes signature)
unpause
nonpayablefunction unpause()
withdraw
nonpayablefunction withdraw(uint256 _pid, uint256 _shares)
withdrawAll
nonpayablefunction withdrawAll(uint256 _pid)
events
CallFeeSet
event CallFeeSet(uint256 callFee)
Deposit
event Deposit(address indexed sender, uint256 indexed poolId, uint256 amount, uint256 lastDepositedTime)
DepositFee
event DepositFee(address feeReceiver, uint256 depositFee)
Harvest
event Harvest(address indexed sender, uint256 indexed poolId, uint256 time)
Initialized
event Initialized(uint8 version)
ManagerRoleSet
event ManagerRoleSet(address _user, bool _status)
Pause
event Pause()
Paused
event Paused(address account)
RebateInfoSet
event RebateInfoSet(uint256 pid, (bool isEarlyWithdrawActive, uint256 rebatePercent, uint256 earlyWithdrawPenalty) rebate)
RebateSent
event RebateSent(address indexed sender, uint256 indexed poolId, uint256 amount)
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)
TokenTransferred
event TokenTransferred(address token, uint256 amount)
TransferUserInfo
event TransferUserInfo(address indexed from, address to, uint256 pid)
Unpause
event Unpause()
Unpaused
event Unpaused(address account)
Withdraw
event Withdraw(address indexed sender, uint256 indexed poolId, uint256 amount, uint256 time)
WithdrawPenalty
event WithdrawPenalty(address indexed sender, uint256 indexed poolId, uint256 amount)
errors
InvalidTransferUserInfoSignature
error InvalidTransferUserInfoSignature(bytes signature)
UserAlreadyHasShares
error UserAlreadyHasShares(address to, uint256 pid)
creation bytecode
0x60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b613ac980620000f36000396000f3fe608060405234801561001057600080fd5b506004361061025c5760003560e01c80638456cb5911610145578063b9d02df4116100bd578063ddc632621161008c578063e2bbb15811610071578063e2bbb15814610609578063ed24911d1461061c578063fb1db2781461062457600080fd5b8063ddc63262146105c2578063ddca3f43146105d557600080fd5b8063b9d02df4146104ec578063b9e22ec01461054c578063d3cb644c1461055f578063d547741f146105af57600080fd5b8063958e2d3111610114578063a217fddf116100f9578063a217fddf14610487578063a3d0eb931461048f578063ac4afa38146104a257600080fd5b8063958e2d31146104615780639cc7f7081461047457600080fd5b80638456cb591461040f5780638ed955b91461041757806390321e1a1461041f57806391d148541461042857600080fd5b80633bfac8aa116101d8578063485cc955116101a75780635c975abb1161018c5780635c975abb146103de5780635e598d12146103e95780637aed2b00146103fc57600080fd5b8063485cc955146103b857806354b147ed146103cb57600080fd5b80633bfac8aa146103775780633e9d591a1461038a5780633f4ba83a1461039d578063441a3e70146103a557600080fd5b8063209c0ba91161022f5780632646582611610214578063264658261461033e5780632f2ff15d1461035157806336568abe1461036457600080fd5b8063209c0ba914610308578063248a9ca31461031b57600080fd5b806301ffc9a7146102615780630f7e5970146102895780631116e09a146102d25780631a3fb14e146102e7575b600080fd5b61027461026f3660046133d1565b61064f565b60405190151581526020015b60405180910390f35b6102c56040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525081565b6040516102809190613437565b6102e56102e036600461347f565b6106e8565b005b6102fa6102f53660046134ab565b6107df565b604051908152602001610280565b6102e5610316366004613501565b61088b565b6102fa6103293660046134ab565b60009081526065602052604090206001015490565b6102e561034c3660046134ab565b6109f5565b6102e561035f366004613581565b610b09565b6102e5610372366004613581565b610b33565b6102e56103853660046135b1565b610bbf565b6102fa6103983660046134ab565b610d01565b6102e5610dd5565b6102e56103b3366004613662565b610e8e565b6102e56103c6366004613684565b61136a565b6102fa6103d936600461347f565b61159c565b60975460ff16610274565b6102746103f736600461347f565b61161d565b6102e561040a3660046136b2565b61170a565b6102e56117b4565b6102e561186d565b6102fa60ca5481565b610274610436366004613581565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6102e561046f3660046134ab565b611924565b6102fa6104823660046134ab565b611949565b6102fa600081565b6102e561049d3660046136e0565b6119fe565b6104d16104b03660046134ab565b60cc6020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610280565b61052c6104fa366004613581565b60cb60209081526000928352604080842090915290825290208054600182015460028301546003909301549192909184565b604080519485526020850193909352918301526060820152608001610280565b6102fa61055a3660046134ab565b611b9f565b61059261056d3660046134ab565b60cd6020526000908152604090208054600182015460029092015460ff909116919083565b604080519315158452602084019290925290820152606001610280565b6102e56105bd366004613581565b611c18565b6102e56105d03660046134ab565b611c3d565b60ce5460cf546105ec91906001600160a01b031682565b604080519283526001600160a01b03909116602083015201610280565b6102e5610617366004613662565b611eaf565b60d0546102fa565b60c954610637906001600160a01b031681565b6040516001600160a01b039091168152602001610280565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806106e257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60cf546001600160a01b031633146107475760405162461bcd60e51b815260206004820152600b60248201527f4e6f7420616c6c6f77656400000000000000000000000000000000000000000060448201526064015b60405180910390fd5b61075460026127106137ae565b81106107a25760405162461bcd60e51b815260206004820152600760248201527f496e76616c696400000000000000000000000000000000000000000000000000604482015260640161073e565b60ce5560cf80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b60c9546040517fbe95e01a000000000000000000000000000000000000000000000000000000008152600481018390523060248201526000916001600160a01b03169063be95e01a90604401602060405180830381865afa158015610848573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086c91906137e9565b600083815260cc60205260409020600101549091506106e29082613802565b3360009081527fcee91eb23e767f0f440dd9fce5554f355614443931e9ac5ce78c67b9e06e6f70602052604090205460ff166109095760405162461bcd60e51b815260206004820152600c60248201527f4f6e6c79206d616e616765720000000000000000000000000000000000000000604482015260640161073e565b6127108160200151111580156109255750612710816040015111155b6109715760405162461bcd60e51b815260206004820152601660248201527f496e76616c6964207265626174652070657263656e7400000000000000000000604482015260640161073e565b600082815260cd60209081526040918290208351815460ff191690151517815583820180516001830155848401805160029093019290925583518681528551151593810193909352518284015251606082015290517fdd1eaa1ec6917cd84c778bdf466dbe5795fbc0705c629707296f7f4c5f19945a916080908290030190a15050565b3360009081527fcee91eb23e767f0f440dd9fce5554f355614443931e9ac5ce78c67b9e06e6f70602052604090205460ff16610a735760405162461bcd60e51b815260206004820152600c60248201527f4f6e6c79206d616e616765720000000000000000000000000000000000000000604482015260640161073e565b610a8060026127106137ae565b8110610ace5760405162461bcd60e51b815260206004820152600760248201527f496e76616c696400000000000000000000000000000000000000000000000000604482015260640161073e565b60ca8190556040518181527f914a0ec1d1321eb63edd89bf2a52760c6f1099ddd5b10703222e8ba75e79c9369060200160405180910390a150565b600082815260656020526040902060010154610b24816124f6565b610b2e8383612500565b505050565b6001600160a01b0381163314610bb15760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c660000000000000000000000000000000000606482015260840161073e565b610bbb82826125a2565b5050565b3360009081527fcee91eb23e767f0f440dd9fce5554f355614443931e9ac5ce78c67b9e06e6f70602052604090205460ff16610c3d5760405162461bcd60e51b815260206004820152600c60248201527f4f6e6c79206d616e616765720000000000000000000000000000000000000000604482015260640161073e565b610cfe818051602080830191909120604080518082018252600181527f31000000000000000000000000000000000000000000000000000000000000009084015280517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f938101939093528201527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160408051601f19818403018152919052805160209091012060d05550565b50565b60c9546040517fbe95e01a0000000000000000000000000000000000000000000000000000000081526004810183905230602482015260009182916001600160a01b039091169063be95e01a90604401602060405180830381865afa158015610d6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9291906137e9565b600084815260cc6020526040902060010154909150610db19082613802565b905061271060ca5482610dc49190613815565b610dce91906137ae565b9392505050565b3360009081527fcee91eb23e767f0f440dd9fce5554f355614443931e9ac5ce78c67b9e06e6f70602052604090205460ff16610e535760405162461bcd60e51b815260206004820152600c60248201527f4f6e6c79206d616e616765720000000000000000000000000000000000000000604482015260640161073e565b610e5b612625565b610e63612679565b6040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3390600090a1565b610e9782611c3d565b600082815260cc6020908152604080832060cb835281842033855290925290912082610f055760405162461bcd60e51b815260206004820152601360248201527f4e6f7468696e6720746f20776974686472617700000000000000000000000000604482015260640161073e565b8054831115610f565760405162461bcd60e51b815260206004820152601860248201527f576974686472617720657863656564732062616c616e63650000000000000000604482015260640161073e565b610f60338561161d565b610fac5760405162461bcd60e51b815260206004820152601260248201527f5374616b65207374696c6c206c6f636b65640000000000000000000000000000604482015260640161073e565b815460009084610fbb87611949565b610fc59190613815565b610fcf91906137ae565b905060008260000154858460020154610fe89190613815565b610ff291906137ae565b610ffc908361382c565b60c9546040517ff686f35800000000000000000000000000000000000000000000000000000000815260048101899052336024820152604481018390529192506000916001600160a01b039091169063f686f358906064016020604051808303816000875af1158015611073573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109791906137e9565b905083600001548685600201546110ae9190613815565b6110b891906137ae565b8460020160008282546110cb919061382c565b90915550508354869085906000906110e490849061382c565b90915550508454869086906000906110fd90849061382c565b9091555061110d90508183613802565b8460030160008282546111209190613802565b9091555060009050611131886126cb565b60c9546040517f372caeb8000000000000000000000000000000000000000000000000000000008152600481018b9052602481018790529192506001600160a01b03169063372caeb8906044016020604051808303816000875af115801561119d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c1919061383f565b5060c9546040517f1526fe27000000000000000000000000000000000000000000000000000000008152600481018a90526000916001600160a01b031690631526fe279060240160e060405180830381865afa158015611225573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611249919061385c565b505050505091505080620151806112609190613815565b866001015461126f9190613802565b42101561130f57600089815260cd6020526040812060020154612710906112969088613815565b6112a091906137ae565b60c9549091506112bd906001600160a01b03858116911683612763565b6112c7818761382c565b955089336001600160a01b03167fe3f966d8d22399b4fb179621d9c066615897e2f653f3f20b59bd6f90832867d68360405161130591815260200190565b60405180910390a3505b6113236001600160a01b0383163387612763565b604080518681524260208201528a9133917f02f25270a4d87bea75db541cdfe559334a275b4a233520ed6c0a2429667cca94910160405180910390a3505050505050505050565b600054610100900460ff161580801561138a5750600054600160ff909116105b806113a45750303b1580156113a4575060005460ff166001145b6114165760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161073e565b6000805460ff19166001179055801561145657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6001600160a01b0383166114ac5760405162461bcd60e51b815260206004820152600c60248201527f5a65726f20616464726573730000000000000000000000000000000000000000604482015260640161073e565b6114b461280c565b6114bf600083612889565b6114e97f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b0883612889565b60c980546001600160a01b0385167fffffffffffffffffffffffff000000000000000000000000000000000000000091821617909155601960ca55600060ce5560cf8054909116331790558015610b2e57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a1505050565b600081815260cb602090815260408083206001600160a01b03861684529091528120816115c884611b9f565b90506000670de0b6b3a76400008284600001546115e59190613815565b6115ef91906137ae565b90508260020154811015611604576000611613565b6002830154611613908261382c565b9695505050505050565b600081815260cb602090815260408083206001600160a01b038681168552925280832060c95491517f1526fe2700000000000000000000000000000000000000000000000000000000815260048101869052909284921690631526fe279060240160e060405180830381865afa15801561169b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116bf919061385c565b505050505091505080620151806116d69190613815565b82600101546116e59190613802565b421015806117015750600084815260cd602052604090205460ff165b95945050505050565b6000611715816124f6565b811561174a576117457f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b0884610b09565b611774565b6117747f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b0884611c18565b604080516001600160a01b038516815283151560208201527f4e0821e9e83e6ed2861d90c07a96114379e9c5b5e6ea2afec5ac6e49d745314c910161158f565b3360009081527fcee91eb23e767f0f440dd9fce5554f355614443931e9ac5ce78c67b9e06e6f70602052604090205460ff166118325760405162461bcd60e51b815260206004820152600c60248201527f4f6e6c79206d616e616765720000000000000000000000000000000000000000604482015260640161073e565b61183a612893565b6118426128e6565b6040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62590600090a1565b611875612893565b60c954604080517f081e3eda00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163081e3eda9160048083019260209291908290030181865afa1580156118d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118fc91906137e9565b905060005b81811015610bbb5761191281611c3d565b8061191c816138bc565b915050611901565b600081815260cb60209081526040808320338452909152902054610cfe908290610e8e565b60c9546040517fb9d02df40000000000000000000000000000000000000000000000000000000081526004810183905230602482015260009182916001600160a01b039091169063b9d02df49060440160a060405180830381865afa1580156119b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119da91906138f4565b505050600085815260cc6020526040902060010154919250610dce91839150613802565b3360009081527fcee91eb23e767f0f440dd9fce5554f355614443931e9ac5ce78c67b9e06e6f70602052604090205460ff16611a7c5760405162461bcd60e51b815260206004820152600c60248201527f4f6e6c79206d616e616765720000000000000000000000000000000000000000604482015260640161073e565b600083815260cb602090815260408083206001600160a01b038816845290915290205415611ae8576040517f837fee120000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024810184905260440161073e565b611af58585858585612923565b600083815260cb602090815260408083206001600160a01b0389811680865291845282852090891680865283862082548155600180840180549183019190915560028085018054918401919091556003808601805491909401558589529388905587905591869055949055815193845291830186905290917f5715d83cf29d9b6c6988c83e4593268715b6930b4a42f8a0d9ada357d1fed086910160405180910390a25050505050565b600081815260cc6020908152604080832081516060810183528154808252600183015494820194909452600290910154918101919091529015611c08578051611be784611949565b611bf990670de0b6b3a7640000613815565b611c0391906137ae565b610dce565b670de0b6b3a76400009392505050565b600082815260656020526040902060010154611c33816124f6565b610b2e83836125a2565b611c45612893565b600081815260cc6020526040812090611c5d836126cb565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529091506000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611cc0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ce491906137e9565b60c9546040517f379607f5000000000000000000000000000000000000000000000000000000008152600481018790529192506001600160a01b03169063379607f5906024016020604051808303816000875af1158015611d49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d6d919061383f565b506040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009082906001600160a01b038516906370a0823190602401602060405180830381865afa158015611dd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611df491906137e9565b611dfe919061382c565b9050600061271060ca5483611e139190613815565b611e1d91906137ae565b9050611e29818361382c565b915042856002018190555081856001016000828254611e489190613802565b90915550508015611e6757611e676001600160a01b0385163383612763565b611e7086612a89565b604051428152869033907f71bab65ced2e5750775a0613be067df48ef06cf92a496ebf7663ae06609249549060200160405180910390a3505050505050565b611eb7612893565b60008111611f075760405162461bcd60e51b815260206004820152601260248201527f4e6f7468696e6720746f206465706f7369740000000000000000000000000000604482015260640161073e565b600082815260cc602052604080822060c95491517f1526fe2700000000000000000000000000000000000000000000000000000000815260048101869052909291829182918291829182916001600160a01b0390911690631526fe279060240160e060405180830381865afa158015611f84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fa8919061385c565b965096509650509550955050818885611fc19190613802565b111561200f5760405162461bcd60e51b815260206004820152600960248201527f506f6f6c2066756c6c0000000000000000000000000000000000000000000000604482015260640161073e565b600061201e8662015180613815565b612028908561382c565b90508042111561207a5760405162461bcd60e51b815260206004820152601e60248201527f5374616b696e672064697361626c656420666f72207468697320706f6f6c0000604482015260640161073e565b819650505050505050600061208e85611949565b60c9546040517fbe95e01a000000000000000000000000000000000000000000000000000000008152600481018890523060248201529192506001600160a01b03169063be95e01a90604401602060405180830381865afa1580156120f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061211b91906137e9565b6121259082613802565b905061213c6001600160a01b038316333087612b46565b60ce54156121c75760ce54600090612710906121589087613815565b61216291906137ae565b60cf5490915061217f906001600160a01b03858116911683612763565b60cf54604080516001600160a01b039092168252602082018390527fe978212c025bb06e911a95dea3ce2ab103251bfb63891d729191b249fa2dddfc910160405180910390a1505b8254600090156121f057835482906121df9087613815565b6121e991906137ae565b90506122a4565b60c9546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248201529084169063095ea7b3906044016020604051808303816000875af115801561227b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061229f919061383f565b508490505b600086815260cb6020908152604080832033845290915281208054909183918391906122d1908490613802565b90915550504260018201556002810180548791906000906122f3908490613802565b909155505084548290869060009061230c908490613802565b92505081905550858560010160008282546123279190613802565b90915550612336905087612a89565b600087815260cd6020526040812060010154612710906123569089613815565b61236091906137ae565b905080156124b057600061237389611949565b60c9546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152919250600091908816906370a0823190602401602060405180830381865afa1580156123dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061240091906137e9565b90508261240d838361382c565b101561245b5760405162461bcd60e51b815260206004820152601960248201527f4e6f7420656e6f756768207265626174652062616c616e636500000000000000604482015260640161073e565b60c954612476906001600160a01b0389811691163386612b46565b6040518381528a9033907f4b7ca6f39504d296f9c6310f7febbc2fc1608d318f5a4ae38f5f35f0965b8e6d9060200160405180910390a350505b60408051888152426020820152899133917f36af321ec8d3c75236829c5317affd40ddb308863a1236d2d277a4025cccee1e910160405180910390a35050505050505050565b610cfe8133612b9d565b60008281526065602090815260408083206001600160a01b038516845290915290205460ff16610bbb5760008281526065602090815260408083206001600160a01b03851684529091529020805460ff1916600117905561255e3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008281526065602090815260408083206001600160a01b038516845290915290205460ff1615610bbb5760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60975460ff166126775760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f7420706175736564000000000000000000000000604482015260640161073e565b565b612681612625565b6097805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b60c9546040517f1526fe270000000000000000000000000000000000000000000000000000000081526004810183905260009182916001600160a01b0390911690631526fe279060240160e060405180830381865afa158015612732573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612756919061385c565b9998505050505050505050565b6040516001600160a01b038316602482015260448101829052610b2e9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152612c12565b600054610100900460ff166126775760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161073e565b610bbb8282612500565b60975460ff16156126775760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161073e565b6128ee612893565b6097805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586126ae3390565b600083815260cb602090815260408083206001600160a01b038981168552908352818420825160808082018552825480835260018401548388018190526002850154848801819052600390950154606080860182905288517fbe4cf69af4ec2333c80cdaa9b1c0d1e1994b68159e6a9ebaf9c47e6a1b6195dc818c0152808a018f9052978f16908801529286019190915260a085015260c084019290925260e08084019290925283518084039092018252610100909201909252815191909201209091612a2e6129f283612cfa565b86868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612d5d92505050565b9050876001600160a01b0316816001600160a01b031614612a7f5784846040517fb1745f4400000000000000000000000000000000000000000000000000000000815260040161073e929190613934565b5050505050505050565b600081815260cc60205260409020600101548015610bbb5760c9546040517f7b0472f000000000000000000000000000000000000000000000000000000000815260048101849052602481018390526001600160a01b0390911690637b0472f0906044016020604051808303816000875af1158015612b0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b30919061383f565b5050600090815260cc6020526040812060010155565b6040516001600160a01b0380851660248301528316604482015260648101829052612b979085907f23b872dd00000000000000000000000000000000000000000000000000000000906084016127a8565b50505050565b60008281526065602090815260408083206001600160a01b038516845290915290205460ff16610bbb57612bd081612d81565b612bdb836020612d93565b604051602001612bec929190613963565b60408051601f198184030181529082905262461bcd60e51b825261073e91600401613437565b6000612c67826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612fbc9092919063ffffffff16565b9050805160001480612c88575080806020019051810190612c88919061383f565b610b2e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161073e565b6000612d0560d05490565b6040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b6000806000612d6c8585612fd3565b91509150612d7981613018565b509392505050565b60606106e26001600160a01b03831660145b60606000612da2836002613815565b612dad906002613802565b67ffffffffffffffff811115612dc557612dc56134c4565b6040519080825280601f01601f191660200182016040528015612def576020820181803683370190505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110612e2657612e266139e4565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110612e8957612e896139e4565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000612ec5846002613815565b612ed0906001613802565b90505b6001811115612f6d577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110612f1157612f116139e4565b1a60f81b828281518110612f2757612f276139e4565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c93612f6681613a13565b9050612ed3565b508315610dce5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161073e565b6060612fcb848460008561317d565b949350505050565b60008082516041036130095760208301516040840151606085015160001a612ffd8782858561326f565b94509450505050613011565b506000905060025b9250929050565b600081600481111561302c5761302c613a48565b036130345750565b600181600481111561304857613048613a48565b036130955760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161073e565b60028160048111156130a9576130a9613a48565b036130f65760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161073e565b600381600481111561310a5761310a613a48565b03610cfe5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f7565000000000000000000000000000000000000000000000000000000000000606482015260840161073e565b6060824710156131f55760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161073e565b600080866001600160a01b031685876040516132119190613a77565b60006040518083038185875af1925050503d806000811461324e576040519150601f19603f3d011682016040523d82523d6000602084013e613253565b606091505b509150915061326487838387613333565b979650505050505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156132a6575060009050600361332a565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156132fa573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166133235760006001925092505061332a565b9150600090505b94509492505050565b606083156133a257825160000361339b576001600160a01b0385163b61339b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161073e565b5081612fcb565b612fcb83838151156133b75781518083602001fd5b8060405162461bcd60e51b815260040161073e9190613437565b6000602082840312156133e357600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610dce57600080fd5b60005b8381101561342e578181015183820152602001613416565b50506000910152565b6020815260008251806020840152613456816040850160208701613413565b601f01601f19169190910160400192915050565b6001600160a01b0381168114610cfe57600080fd5b6000806040838503121561349257600080fd5b823561349d8161346a565b946020939093013593505050565b6000602082840312156134bd57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b8015158114610cfe57600080fd5b600080828403608081121561351557600080fd5b833592506060601f198201121561352b57600080fd5b506040516060810181811067ffffffffffffffff8211171561354f5761354f6134c4565b6040526020840135613560816134f3565b81526040848101356020830152606090940135938101939093525092909150565b6000806040838503121561359457600080fd5b8235915060208301356135a68161346a565b809150509250929050565b6000602082840312156135c357600080fd5b813567ffffffffffffffff808211156135db57600080fd5b818401915084601f8301126135ef57600080fd5b813581811115613601576136016134c4565b604051601f8201601f19908116603f01168101908382118183101715613629576136296134c4565b8160405282815287602084870101111561364257600080fd5b826020860160208301376000928101602001929092525095945050505050565b6000806040838503121561367557600080fd5b50508035926020909101359150565b6000806040838503121561369757600080fd5b82356136a28161346a565b915060208301356135a68161346a565b600080604083850312156136c557600080fd5b82356136d08161346a565b915060208301356135a6816134f3565b6000806000806000608086880312156136f857600080fd5b85356137038161346a565b945060208601356137138161346a565b935060408601359250606086013567ffffffffffffffff8082111561373757600080fd5b818801915088601f83011261374b57600080fd5b81358181111561375a57600080fd5b89602082850101111561376c57600080fd5b9699959850939650602001949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000826137e4577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000602082840312156137fb57600080fd5b5051919050565b808201808211156106e2576106e261377f565b80820281158282048414176106e2576106e261377f565b818103818111156106e2576106e261377f565b60006020828403121561385157600080fd5b8151610dce816134f3565b600080600080600080600060e0888a03121561387757600080fd5b875196506020880151955060408801519450606088015193506080880151925060a0880151915060c08801516138ac8161346a565b8091505092959891949750929550565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036138ed576138ed61377f565b5060010190565b600080600080600060a0868803121561390c57600080fd5b5050835160208501516040860151606087015160809097015192989197509594509092509050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161399b816017850160208801613413565b7f206973206d697373696e6720726f6c652000000000000000000000000000000060179184019182015283516139d8816028840160208801613413565b01602801949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081613a2257613a2261377f565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60008251613a89818460208701613413565b919091019291505056fea2646970667358221220a388fe8e2aee126983618208202b6152afbdfa50d54cf994a658d2275e6fef3e64736f6c63430008110033