0 txs
340 calls
constructor
constructor(address _owner)
functions
campaigns
viewfunction campaigns(uint256 campaignId) view returns (uint256 incentives, address pool, address token, bool canceled, bool paused, uint8 incentiveType, address creator, uint48 startTime, uint48 endTime, bytes rewardsOptions)
customFee
viewfunction customFee(address user) view returns (int256 fee)
distributor
viewfunction distributor() view returns (address)
getCampaignAddressList
viewfunction getCampaignAddressList(uint256 campaignId) view returns (address[])
incentiveTokens
viewfunction incentiveTokens(address token) view returns (bool allowed)
minIncentivePerToken
viewfunction minIncentivePerToken(address token) view returns (uint256 incentive)
nextId
viewfunction nextId() view returns (uint256)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
protocolFee
viewfunction protocolFee() view returns (int256)
allowToken
nonpayablefunction allowToken(address token, bool allowed)
cancel
nonpayablefunction cancel(uint256 campaignId)
create
nonpayablefunction create(address token, address pool, uint256 incentives, uint48 startTime, uint48 duration, uint8 incentiveType, address[] addressList, bytes rewardsOptions)
initialize
nonpayablefunction initialize(address _owner, address _distributor, address[] allowedTokens, uint256[] minAmounts, int256 fee)
pause
nonpayablefunction pause(uint256 campaignId)
pauseProtocol
nonpayablefunction pauseProtocol()
recoverERC20
nonpayablefunction recoverERC20(address to, address token, uint256 amount)
renounceOwnership
nonpayablefunction renounceOwnership()
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause(uint256 campaignId)
unpauseProtocol
nonpayablefunction unpauseProtocol()
updateCustomFee
nonpayablefunction updateCustomFee(address user, int256 fee)
updateDistributor
nonpayablefunction updateDistributor(address newDistributor)
updateMinIncentivePerToken
nonpayablefunction updateMinIncentivePerToken(address token, uint256 incentive)
updateProtocolFee
nonpayablefunction updateProtocolFee(int256 fee)
events
CampaignCanceled
event CampaignCanceled(uint256 campaignId)
CampaignCreated
event CampaignCreated(uint256 campaignId, address indexed creator, address indexed token, address indexed pool, uint256 rewards, uint48 startTime, uint48 endTime, uint8 incentiveType, bytes rewardsOptions)
CampaignPaused
event CampaignPaused(uint256 campaignId)
CampaignUnpaused
event CampaignUnpaused(uint256 campaignId)
CustomFeeUpdated
event CustomFeeUpdated(address user, int256 fee)
DistributorUpdated
event DistributorUpdated(address previousDistributor, address newDistributor)
Initialized
event Initialized(uint64 version)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
ProtocolFeeUpdated
event ProtocolFeeUpdated(int256 fee)
ProtocolPaused
event ProtocolPaused()
ProtocolUnpaused
event ProtocolUnpaused()
RecoveredERC20
event RecoveredERC20(address indexed to, address indexed token, uint256 amount)
TokenAllowedStatusUpdated
event TokenAllowedStatusUpdated(address indexed token, bool allowed)
TokenMinIncentiveUpdated
event TokenMinIncentiveUpdated(address indexed token, uint256 minIncentive)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
CampaignAlreadyPaused
error CampaignAlreadyPaused()
CampaignIsExpired
error CampaignIsExpired()
CampaignNotPaused
error CampaignNotPaused()
EmptyList
error EmptyList()
FailedInnerCall
error FailedInnerCall()
InsufficientIncentives
error InsufficientIncentives()
InvalidDuration
error InvalidDuration()
InvalidFee
error InvalidFee()
InvalidInitialization
error InvalidInitialization()
InvalidLengths
error InvalidLengths()
InvalidStartTime
error InvalidStartTime()
InvalidZeroAddress
error InvalidZeroAddress()
NotInitializing
error NotInitializing()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
Paused
error Paused()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
TokenNotSupported
error TokenNotSupported()
Unauthorized
error Unauthorized()
creation bytecode
0x60806040523480156200001157600080fd5b5060405162002d3c38038062002d3c8339810160408190526200003491620000c7565b806001600160a01b0381166200006457604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6200006f8162000077565b5050620000f9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208284031215620000da57600080fd5b81516001600160a01b0381168114620000f257600080fd5b9392505050565b612c3380620001096000396000f3fe608060405234801561001057600080fd5b50600436106101a35760003560e01c8063715018a6116100ee578063b4e8029b11610097578063dbf6248911610071578063dbf624891461039f578063f2fde38b146103a7578063f93b6be5146103ba578063fabc1cbc146103c257600080fd5b8063b4e8029b14610361578063bc30a61814610374578063bfe109281461038757600080fd5b806392cbe4a0116100c857806392cbe4a014610315578063a18f03b814610335578063b0e21e8a1461035857600080fd5b8063715018a6146102d5578063753f5b5e146102dd5780638da5cb5b146102f057600080fd5b80634cfafbf3116101505780635c975abb1161012a5780635c975abb1461028f57806361b8ce8c146102ac578063676977e3146102b557600080fd5b80634cfafbf31461023b5780634d419abc1461024e5780635bc35ae81461027c57600080fd5b8063141961bc11610181578063141961bc146101e357806340e58ee514610215578063471227221461022857600080fd5b80630ead3f67146101a85780631171bda9146101bd578063136439dd146101d0575b600080fd5b6101bb6101b63660046123b8565b6103d5565b005b6101bb6101cb3660046123ed565b6103e9565b6101bb6101de3660046123b8565b610457565b6101f66101f13660046123b8565b61088e565b60405161020c9a99989796959493929190612485565b60405180910390f35b6101bb6102233660046123b8565b610992565b6101bb6102363660046125f7565b610d76565b6101bb6102493660046126e2565b610fef565b61026e61025c36600461270c565b60076020526000908152604090205481565b60405190815260200161020c565b6101bb61028a366004612735565b611084565b60035461029c9060ff1681565b604051901515815260200161020c565b61026e60015481565b61026e6102c336600461270c565b60066020526000908152604090205481565b6101bb61109a565b6101bb6102eb366004612810565b6110ae565b6000546001600160a01b03165b6040516001600160a01b03909116815260200161020c565b6103286103233660046123b8565b6115cd565b60405161020c91906128e6565b61029c61034336600461270c565b60056020526000908152604090205460ff1681565b61026e60025481565b6101bb61036f3660046126e2565b6117ab565b6101bb61038236600461270c565b6117bd565b6003546102fd9061010090046001600160a01b031681565b6101bb611867565b6101bb6103b536600461270c565b6118a7565b6101bb611900565b6101bb6103d03660046123b8565b61193d565b6103dd611d1a565b6103e681611d5e565b50565b6103f1611d1a565b6104056001600160a01b0383168483611de0565b816001600160a01b0316836001600160a01b03167f0469918f24999e267065319b4027a9fcb08e498e4081aa6a8d216836ae36f1018360405161044a91815260200190565b60405180910390a3505050565b61045f611d1a565b6000818152600460209081526040808320815161016081018352815481526001808301546001600160a01b039081169583019590955260028301549485169382019390935260ff600160a01b8504811615156060830152600160a81b85048116151560808301529093919260a0850192600160b01b9004909116908111156104e9576104e9612429565b60018111156104fa576104fa612429565b815260038201546001600160a01b03811660208084019190915265ffffffffffff600160a01b83048116604080860191909152600160d01b909304166060840152600484018054835181840281018401909452808452608090940193909183018282801561059157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610573575b505050505081526020016005820180546105aa90612933565b80601f01602080910402602001604051908101604052809291908181526020018280546105d690612933565b80156106235780601f106105f857610100808354040283529160200191610623565b820191906000526020600020905b81548152906001019060200180831161060657829003601f168201915b50505050508152505090504265ffffffffffff1681610100015165ffffffffffff16101561067d576040517f182d3fc600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060800151156106b9576040517f5cebfd4a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160808201818152600084815260046020908152604091829020855181559085015181850180546001600160a01b0392831673ffffffffffffffffffffffffffffffffffffffff1990911617905591850151600282018054606088015195511515600160a81b0260ff60a81b19961515600160a01b0274ffffffffffffffffffffffffffffffffffffffffff199092169390951692909217919091179384168317815560a0860151869592949093919260ff60b01b1990921661ffff60a81b199091161790600160b01b90849081111561079657610796612429565b021790555060c082015160038201805460e08501516101008601516001600160a01b039094167fffffffffffff000000000000000000000000000000000000000000000000000090921691909117600160a01b65ffffffffffff928316021779ffffffffffffffffffffffffffffffffffffffffffffffffffff16600160d01b9190931602919091179055610120820151805161083d916004840191602090910190612331565b50610140820151600582019061085390826129bb565b50506040518381527fab1902ee37c92d1a78dda53814d64b815e7e3ee287d60843a3dbd6954e3206b491506020015b60405180910390a15050565b6004602052600090815260409020805460018201546002830154600384015460058501805494956001600160a01b039485169585851695600160a01b80870460ff90811697600160a81b8104821697600160b01b909104909116959281169491810465ffffffffffff90811694600160d01b90920416929061090f90612933565b80601f016020809104026020016040519081016040528092919081815260200182805461093b90612933565b80156109885780601f1061095d57610100808354040283529160200191610988565b820191906000526020600020905b81548152906001019060200180831161096b57829003601f168201915b505050505090508a565b6000818152600460209081526040808320815161016081018352815481526001808301546001600160a01b039081169583019590955260028301549485169382019390935260ff600160a01b8504811615156060830152600160a81b85048116151560808301529093919260a0850192600160b01b900490911690811115610a1c57610a1c612429565b6001811115610a2d57610a2d612429565b815260038201546001600160a01b03811660208084019190915265ffffffffffff600160a01b83048116604080860191909152600160d01b9093041660608401526004840180548351818402810184019094528084526080909401939091830182828015610ac457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610aa6575b50505050508152602001600582018054610add90612933565b80601f0160208091040260200160405190810160405280929190818152602001828054610b0990612933565b8015610b565780601f10610b2b57610100808354040283529160200191610b56565b820191906000526020600020905b815481529060010190602001808311610b3957829003601f168201915b50505050508152505090508060e0015165ffffffffffff164265ffffffffffff161115610b8a57610b85611d1a565b610b97565b610b978160c00151611e59565b60016060820181815265ffffffffffff4216610100840152600084815260046020908152604091829020855181559085015181850180546001600160a01b0392831673ffffffffffffffffffffffffffffffffffffffff1990911617905591850151600282018054945160808801511515600160a81b0260ff60a81b19911515600160a01b0274ffffffffffffffffffffffffffffffffffffffffff199097169390951692909217949094179081168317845560a0860151869592949093909260ff60b01b1990911661ffff60a81b199092169190911790600160b01b908490811115610c8657610c86612429565b021790555060c082015160038201805460e08501516101008601516001600160a01b039094167fffffffffffff000000000000000000000000000000000000000000000000000090921691909117600160a01b65ffffffffffff928316021779ffffffffffffffffffffffffffffffffffffffffffffffffffff16600160d01b91909316029190911790556101208201518051610d2d916004840191602090910190612331565b506101408201516005820190610d4390826129bb565b50506040518381527f1925581c2be6a6ef3cd786635d86c841eb4bbdb051dce32356a44c457d0349989150602001610882565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610dc15750825b905060008267ffffffffffffffff166001148015610dde5750303b155b905081158015610dec575080155b15610e23576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610e6e57845468ff00000000000000001916680100000000000000001785555b610e778a611eb4565b6001600160a01b038916610e9e5760405163f6b2911f60e01b815260040160405180910390fd5b8651885114610ed9576040517f1df89e8b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b038c1602179055610f1986611d5e565b60005b8851811015610f9757610f49898281518110610f3a57610f3a612a7b565b60200260200101516001611f11565b610f85898281518110610f5e57610f5e612a7b565b6020026020010151898381518110610f7857610f78612a7b565b6020026020010151611f98565b80610f8f81612aa7565b915050610f1c565b508315610fe357845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050565b610ff7611d1a565b600254811315611033576040517f58d620b300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216600081815260076020908152604091829020849055815192835282018390527f2c6536eb63a5abf8d661d830348e1e94afde8757a13717a648f85b5d5a993bdc9101610882565b61108c611d1a565b6110968282611f11565b5050565b6110a2611fe5565b6110ac6000611eb4565b565b6110b661202b565b6001600160a01b038a1660009081526005602052604090205460ff16611108576040517f3dd1b30500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61111442611c20612ac1565b65ffffffffffff168765ffffffffffff16101561115d576040517fb290253c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018665ffffffffffff1610156111a0576040517f7616640100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038a166000908152600660205260409020546111cc9065ffffffffffff881690612ae7565b881015611205576040517f295f515500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600185600181111561121957611219612429565b148015611224575082155b1561125b576040517f615fd3c000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611267338a612068565b60035490915061129d90339061010090046001600160a01b031661128b848d612afe565b6001600160a01b038f169291906120f4565b6112b26001600160a01b038c163330846120f4565b876112c06201518089612b11565b6112ca9190612ac1565b96506040518061016001604052808a81526020018b6001600160a01b031681526020018c6001600160a01b0316815260200160001515815260200160001515815260200187600181111561132057611320612429565b8152602001336001600160a01b031681526020018965ffffffffffff1681526020018865ffffffffffff168152602001868680806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250505090825250604080516020601f870181900481028201810190925285815291810191908690869081908401838280828437600092018290525093909452505060018054825260046020908152604092839020855181559085015181830180546001600160a01b0392831673ffffffffffffffffffffffffffffffffffffffff1990911617905592850151600282018054606088015160808901511515600160a81b0260ff60a81b19911515600160a01b0274ffffffffffffffffffffffffffffffffffffffffff199093169490971693909317179182168517815560a08701519295509193919260ff60b01b1990921661ffff60a81b199091161790600160b01b90849081111561149457611494612429565b021790555060c082015160038201805460e08501516101008601516001600160a01b039094167fffffffffffff000000000000000000000000000000000000000000000000000090921691909117600160a01b65ffffffffffff928316021779ffffffffffffffffffffffffffffffffffffffffffffffffffff16600160d01b9190931602919091179055610120820151805161153b916004840191602090910190612331565b50610140820151600582019061155190826129bb565b50905050896001600160a01b03168b6001600160a01b0316336001600160a01b03167fc02da750db1189b5790b38eead8f1f9eb8ded5ea2d898ad47d91e590eb9a29c06001548d8d8d8d8b8b6040516115b09796959493929190612b3b565b60405180910390a450506001805481019055505050505050505050565b6000818152600460209081526040808320815161016081018352815481526001808301546001600160a01b039081169583019590955260028301549485169382019390935260ff600160a01b850481161515606083810191909152600160a81b86048216151560808401529594919360a0850192600160b01b90049091169081111561165b5761165b612429565b600181111561166c5761166c612429565b815260038201546001600160a01b03811660208084019190915265ffffffffffff600160a01b83048116604080860191909152600160d01b909304166060840152600484018054835181840281018401909452808452608090940193909183018282801561170357602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116116e5575b5050505050815260200160058201805461171c90612933565b80601f016020809104026020016040519081016040528092919081815260200182805461174890612933565b80156117955780601f1061176a57610100808354040283529160200191611795565b820191906000526020600020905b81548152906001019060200180831161177857829003601f168201915b5050509190925250505061012001519392505050565b6117b3611d1a565b6110968282611f98565b6117c5611d1a565b6001600160a01b0381166117ec5760405163f6b2911f60e01b815260040160405180910390fd5b600380546001600160a01b038381166101008181027fffffffffffffffffffffff0000000000000000000000000000000000000000ff85161790945560408051949093049091168084526020840191909152917f111a961d91cf441fe07e7bfddc128b30ab56974d1a76851e969e0642fdb2dd509101610882565b61186f611d1a565b6003805460ff191660011790556040517f442792558b9a96e0f079309b45d9c253e8c39f6394bd465b3c4ffa8f834de07990600090a1565b6118af611fe5565b6001600160a01b0381166118f7576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6103e681611eb4565b611908611d1a565b6003805460ff191690556040517f4cb3d6140b72ba86787ec31591f74ca57f8fd93a9ff34d2f6349365eb01f915f90600090a1565b611945611d1a565b6000818152600460209081526040808320815161016081018352815481526001808301546001600160a01b039081169583019590955260028301549485169382019390935260ff600160a01b8504811615156060830152600160a81b85048116151560808301529093919260a0850192600160b01b9004909116908111156119cf576119cf612429565b60018111156119e0576119e0612429565b815260038201546001600160a01b03811660208084019190915265ffffffffffff600160a01b83048116604080860191909152600160d01b9093041660608401526004840180548351818402810184019094528084526080909401939091830182828015611a7757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611a59575b50505050508152602001600582018054611a9090612933565b80601f0160208091040260200160405190810160405280929190818152602001828054611abc90612933565b8015611b095780601f10611ade57610100808354040283529160200191611b09565b820191906000526020600020905b815481529060010190602001808311611aec57829003601f168201915b50505050508152505090508060800151611b4f576040517fc851109a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060808201818152838252600460209081526040928390208451815590840151600182810180546001600160a01b0393841673ffffffffffffffffffffffffffffffffffffffff1990911617905593850151600283018054606088015195511515600160a81b0260ff60a81b19961515600160a01b0274ffffffffffffffffffffffffffffffffffffffffff199092169390941692909217919091179384168217815560a0860151869593949093919260ff60b01b191661ffff60a81b199091161790600160b01b908490811115611c2a57611c2a612429565b021790555060c082015160038201805460e08501516101008601516001600160a01b039094167fffffffffffff000000000000000000000000000000000000000000000000000090921691909117600160a01b65ffffffffffff928316021779ffffffffffffffffffffffffffffffffffffffffffffffffffff16600160d01b91909316029190911790556101208201518051611cd1916004840191602090910190612331565b506101408201516005820190611ce790826129bb565b50506040518381527f11aa0bd3fb4d9c5622c703f91610a74140a4f88a7ebc7b4faaeaf52e3cb7aa949150602001610882565b6000546001600160a01b031633146110ac576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101f4811380611d6e5750600081125b15611da5576040517f58d620b300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028190556040518181527f34d888e5b5e975d2ee06e24cc848a5cff08ef6a478b8571e06d9a3c9aa6b7eb99060200160405180910390a150565b6040516001600160a01b03838116602483015260448201839052611e5491859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612133565b505050565b6000546001600160a01b03163314801590611e7d5750336001600160a01b03821614155b156103e6576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038216611f385760405163f6b2911f60e01b815260040160405180910390fd5b6001600160a01b038216600081815260056020908152604091829020805460ff191685151590811790915591519182527fca3e1be225e57361436a8bb42354b5c9f0717b5b072f6f9caf74d01bb367403691015b60405180910390a25050565b6001600160a01b03821660008181526006602052604090819020839055517f78fd1cfa310486bfe7ffaa061a48ff68c1b5409cc6a21a75c86c989a2bf54d2a90611f8c9084815260200190565b6000546001600160a01b031633146110ac576040517f118cdaa70000000000000000000000000000000000000000000000000000000081523360048201526024016118ee565b60035460ff16156110ac576040517f9e87fac800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216600090815260076020526040812054811315612090575060006120ee565b6001600160a01b03831660009081526007602052604081205481126120b7576002546120d1565b6001600160a01b0384166000908152600760205260409020545b90506127106120e08285612ae7565b6120ea9190612ba2565b9150505b92915050565b6040516001600160a01b03848116602483015283811660448301526064820183905261212d9186918216906323b872dd90608401611e0d565b50505050565b60006121486001600160a01b038416836121af565b9050805160001415801561216d57508080602001905181019061216b9190612bc4565b155b15611e54576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016118ee565b60606121bd838360006121c4565b9392505050565b606081471015612202576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016118ee565b600080856001600160a01b0316848660405161221e9190612be1565b60006040518083038185875af1925050503d806000811461225b576040519150601f19603f3d011682016040523d82523d6000602084013e612260565b606091505b509150915061227086838361227a565b9695505050505050565b60608261228f5761228a826122ef565b6121bd565b81511580156122a657506001600160a01b0384163b155b156122e8576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016118ee565b50806121bd565b8051156122ff5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828054828255906000526020600020908101928215612393579160200282015b82811115612393578251825473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03909116178255602090920191600190910190612351565b5061239f9291506123a3565b5090565b5b8082111561239f57600081556001016123a4565b6000602082840312156123ca57600080fd5b5035919050565b80356001600160a01b03811681146123e857600080fd5b919050565b60008060006060848603121561240257600080fd5b61240b846123d1565b9250612419602085016123d1565b9150604084013590509250925092565b634e487b7160e01b600052602160045260246000fd5b6002811061245d57634e487b7160e01b600052602160045260246000fd5b9052565b60005b8381101561247c578181015183820152602001612464565b50506000910152565b60006101408c83526001600160a01b03808d166020850152808c1660408501528a1515606085015289151560808501526124c260a085018a61243f565b871660c084015265ffffffffffff86811660e0850152851661010084015261012083018190528351908301819052610160906125048183860160208801612461565b601f01601f1916929092019091019b9a5050505050505050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561256057612560612521565b604052919050565b600067ffffffffffffffff82111561258257612582612521565b5060051b60200190565b600082601f83011261259d57600080fd5b813560206125b26125ad83612568565b612537565b82815260059290921b840181019181810190868411156125d157600080fd5b8286015b848110156125ec57803583529183019183016125d5565b509695505050505050565b600080600080600060a0868803121561260f57600080fd5b612618866123d1565b945060206126278188016123d1565b9450604087013567ffffffffffffffff8082111561264457600080fd5b818901915089601f83011261265857600080fd5b81356126666125ad82612568565b81815260059190911b8301840190848101908c83111561268557600080fd5b938501935b828510156126aa5761269b856123d1565b8252938501939085019061268a565b9750505060608901359250808311156126c257600080fd5b50506126d08882890161258c565b95989497509295608001359392505050565b600080604083850312156126f557600080fd5b6126fe836123d1565b946020939093013593505050565b60006020828403121561271e57600080fd5b6121bd826123d1565b80151581146103e657600080fd5b6000806040838503121561274857600080fd5b612751836123d1565b9150602083013561276181612727565b809150509250929050565b803565ffffffffffff811681146123e857600080fd5b60008083601f84011261279457600080fd5b50813567ffffffffffffffff8111156127ac57600080fd5b6020830191508360208260051b85010111156127c757600080fd5b9250929050565b60008083601f8401126127e057600080fd5b50813567ffffffffffffffff8111156127f857600080fd5b6020830191508360208285010111156127c757600080fd5b6000806000806000806000806000806101008b8d03121561283057600080fd5b6128398b6123d1565b995061284760208c016123d1565b985060408b0135975061285c60608c0161276c565b965061286a60808c0161276c565b955060a08b01356002811061287e57600080fd5b945060c08b013567ffffffffffffffff8082111561289b57600080fd5b6128a78e838f01612782565b909650945060e08d01359150808211156128c057600080fd5b506128cd8d828e016127ce565b915080935050809150509295989b9194979a5092959850565b6020808252825182820181905260009190848201906040850190845b818110156129275783516001600160a01b031683529284019291840191600101612902565b50909695505050505050565b600181811c9082168061294757607f821691505b60208210810361296757634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115611e5457600081815260208120601f850160051c810160208610156129945750805b601f850160051c820191505b818110156129b3578281556001016129a0565b505050505050565b815167ffffffffffffffff8111156129d5576129d5612521565b6129e9816129e38454612933565b8461296d565b602080601f831160018114612a1e5760008415612a065750858301515b600019600386901b1c1916600185901b1785556129b3565b600085815260208120601f198616915b82811015612a4d57888601518255948401946001909101908401612a2e565b5085821015612a6b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198203612aba57612aba612a91565b5060010190565b65ffffffffffff818116838216019080821115612ae057612ae0612a91565b5092915050565b80820281158282048414176120ee576120ee612a91565b818103818111156120ee576120ee612a91565b65ffffffffffff818116838216028082169190828114612b3357612b33612a91565b505092915050565b8781526020810187905265ffffffffffff8681166040830152851660608201526000612b6a608083018661243f565b60c060a08301528260c0830152828460e0840137600060e0848401015260e0601f19601f850116830101905098975050505050505050565b600082612bbf57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215612bd657600080fd5b81516121bd81612727565b60008251612bf3818460208701612461565b919091019291505056fea2646970667358221220424db384c0b5c77d7c752c590f85d438bed10112be4118602593e3771f6b1d3d64736f6c6343000814003300000000000000000000000001bb7b44cc398aaa2b76ac6253f0f5634279db9d