6 txs
7 calls
constructor
constructor()
functions
divider
viewfunction divider() view returns (uint256)
getPublicCampaignInfo
viewfunction getPublicCampaignInfo(bytes32 campaignId) view returns (tuple)
getPublicCampaignsPaginated
viewfunction getPublicCampaignsPaginated(uint256 offset, uint256 limit) view returns (bytes32[] campaigns, uint256 total)
getTargetedCampaignInfo
viewfunction getTargetedCampaignInfo(bytes32 campaignId) view returns (tuple)
getTargetedCampaignsPaginated
viewfunction getTargetedCampaignsPaginated(uint256 offset, uint256 limit) view returns (bytes32[] campaigns, uint256 total)
getUserPublicCampaigns
viewfunction getUserPublicCampaigns(address userAddress) view returns (bytes32[])
getUserTargetedCampaigns
viewfunction getUserTargetedCampaigns(address userAddress) view returns (bytes32[])
MINIMUM_OFFERING
viewfunction MINIMUM_OFFERING() view returns (uint256)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
platformFeesPercentage
viewfunction platformFeesPercentage() view returns (uint256)
completePublicCampaign
nonpayablefunction completePublicCampaign(bytes32 campaignId)
createPublicCampaign
nonpayablefunction createPublicCampaign(uint256 offerEndsIn, uint256 poolAmount, address tokenAddress)
createTargetedCampaign
nonpayablefunction createTargetedCampaign(address selectedKol, uint256 offeringAmount, uint256 offerEndsIn, address tokenAddress)
discardPublicCampaign
nonpayablefunction discardPublicCampaign(bytes32 campaignId)
discardTargetedCampaign
nonpayablefunction discardTargetedCampaign(bytes32 campaignId)
fulfilTargetedCampaign
nonpayablefunction fulfilTargetedCampaign(bytes32 campaignId)
pause
nonpayablefunction pause()
renounceOwnership
nonpayablefunction renounceOwnership()
setMinimumOffering
nonpayablefunction setMinimumOffering(uint256 newMinimumOffering)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause()
updatePlatformFees
nonpayablefunction updatePlatformFees(uint256 newFees)
updateTargetedCampaign
nonpayablefunction updateTargetedCampaign(bytes32 campaignId, address selectedKol, uint256 offerEndsIn, uint256 newAmountOffered)
withdrawEth
nonpayablefunction withdrawEth()
withdrawToken
nonpayablefunction withdrawToken(address tokenAddress)
events
MinimumOfferingUpdated
event MinimumOfferingUpdated(uint256 newMinimumOffering)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
PlatformFeesUpdated
event PlatformFeesUpdated(uint256 previousFees, uint256 updatedFees)
PublicCampaignCompleted
event PublicCampaignCompleted(bytes32 indexed campaignId, address completedBy)
PublicCampaignCreated
event PublicCampaignCreated(bytes32 indexed campaignId, address user, uint256 poolAmount)
PublicCampaignDiscarded
event PublicCampaignDiscarded(bytes32 indexed campaignId, address discardedBy)
PublicCampaignUpdated
event PublicCampaignUpdated(bytes32 indexed campaignId, address updatedBy)
TargetedCampaignCreated
event TargetedCampaignCreated(bytes32 indexed campaignId, address user, uint256 amount)
TargetedCampaignDiscarded
event TargetedCampaignDiscarded(bytes32 indexed campaignId, address discardedBy)
TargetedCampaignFulfilled
event TargetedCampaignFulfilled(bytes32 indexed campaignId, address fulfilledBy)
TargetedCampaignUpdated
event TargetedCampaignUpdated(bytes32 indexed campaignId, address updatedBy)
Unpaused
event Unpaused(address account)
errors
CampaignExpired
error CampaignExpired(uint256 deadline, uint256 currentTime)
CampaignNotFound
error CampaignNotFound(bytes32 campaignId)
ContractBalanceInsufficient
error ContractBalanceInsufficient(uint256 required, uint256 available)
EnforcedPause
error EnforcedPause()
ExpectedPause
error ExpectedPause()
FundTransferError
error FundTransferError()
InsufficientFundsError
error InsufficientFundsError(uint256 requiredFunds, uint256 sentFunds)
InvalidAddress
error InvalidAddress(address provided)
InvalidAmount
error InvalidAmount(uint256 amount)
InvalidCampaignStatus
error InvalidCampaignStatus(uint8 expected, uint8 actual)
InvalidDeadline
error InvalidDeadline(uint256 deadline, uint256 currentTime)
InvalidERC20Implementation
error InvalidERC20Implementation()
InvalidTokenAddress
error InvalidTokenAddress(address tokenAddress)
NotAContract
error NotAContract()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
Unauthorized
error Unauthorized()
ZeroAddressToken
error ZeroAddressToken()
creation bytecode
0x6080604052606460045534801561001557600080fd5b5033600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100895760006040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161008091906101ce565b60405180910390fd5b610098816100c960201b60201c565b50600180819055506000600260006101000a81548160ff0219169083151502179055506127106003819055506101e9565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006101b88261018d565b9050919050565b6101c8816101ad565b82525050565b60006020820190506101e360008301846101bf565b92915050565b6148cc806101f86000396000f3fe6080604052600436106101855760003560e01c806389476069116100d1578063b51506481161008a578063eab9466c11610064578063eab9466c1461053f578063f2fde38b14610568578063f3018f1b14610591578063f93232ca146105ba5761018c565b8063b5150648146104b0578063c0360301146104d9578063e8136a51146105165761018c565b8063894760691461039e5780638cd83ddd146103c75780638da5cb5b1461040557806394dffd3014610430578063a0ef91df1461046e578063b37df594146104855761018c565b8063378efa371161013e57806346680efa1161011857806346680efa1461031c5780635c975abb14610345578063715018a6146103705780638456cb59146103875761018c565b8063378efa371461029d5780633f4ba83a146102c857806341b7e35e146102df5761018c565b806304173fa3146101915780630abda840146101ba5780630ef86db3146101e35780631417c76e1461020c57806323222d95146102355780633781f32d146102605761018c565b3661018c57005b600080fd5b34801561019d57600080fd5b506101b860048036038101906101b39190613ea4565b6105f7565b005b3480156101c657600080fd5b506101e160048036038101906101dc9190613f65565b6109f9565b005b3480156101ef57600080fd5b5061020a60048036038101906102059190613ea4565b6111b3565b005b34801561021857600080fd5b50610233600480360381019061022e9190613ea4565b611683565b005b34801561024157600080fd5b5061024a611b53565b6040516102579190613fdb565b60405180910390f35b34801561026c57600080fd5b5061028760048036038101906102829190613ff6565b611b59565b60405161029491906140e1565b60405180910390f35b3480156102a957600080fd5b506102b2611c61565b6040516102bf9190613fdb565b60405180910390f35b3480156102d457600080fd5b506102dd611c68565b005b3480156102eb57600080fd5b5061030660048036038101906103019190613ff6565b611c7a565b60405161031391906140e1565b60405180910390f35b34801561032857600080fd5b50610343600480360381019061033e9190614103565b611d82565b005b34801561035157600080fd5b5061035a612267565b6040516103679190614171565b60405180910390f35b34801561037c57600080fd5b5061038561227e565b005b34801561039357600080fd5b5061039c612292565b005b3480156103aa57600080fd5b506103c560048036038101906103c09190613ff6565b6122a4565b005b3480156103d357600080fd5b506103ee60048036038101906103e9919061418c565b612468565b6040516103fc9291906141cc565b60405180910390f35b34801561041157600080fd5b5061041a6125ad565b604051610427919061420b565b60405180910390f35b34801561043c57600080fd5b506104576004803603810190610452919061418c565b6125d6565b6040516104659291906141cc565b60405180910390f35b34801561047a57600080fd5b5061048361271b565b005b34801561049157600080fd5b5061049a6127de565b6040516104a79190613fdb565b60405180910390f35b3480156104bc57600080fd5b506104d760048036038101906104d29190614226565b6127e4565b005b3480156104e557600080fd5b5061050060048036038101906104fb9190613ea4565b612da0565b60405161050d919061439d565b60405180910390f35b34801561052257600080fd5b5061053d600480360381019061053891906143b8565b612f4d565b005b34801561054b57600080fd5b50610566600480360381019061056191906143b8565b612ff0565b005b34801561057457600080fd5b5061058f600480360381019061058a9190613ff6565b613041565b005b34801561059d57600080fd5b506105b860048036038101906105b39190613ea4565b6130c7565b005b3480156105c657600080fd5b506105e160048036038101906105dc9190613ea4565b613729565b6040516105ee9190614473565b60405180910390f35b6105ff61392c565b610607613972565b6000600a60008381526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff168160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036106b357816040517fce1befcb0000000000000000000000000000000000000000000000000000000081526004016106aa919061449d565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415801561074657503373ffffffffffffffffffffffffffffffffffffffff1661072d6125ad565b73ffffffffffffffffffffffffffffffffffffffff1614155b1561077d576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006002811115610791576107906142ab565b5b8160040160149054906101000a900460ff1660028111156107b5576107b46142ab565b5b1461080b5760008160040160149054906101000a900460ff166040517f1e8a8fcc0000000000000000000000000000000000000000000000000000000081526004016108029291906144c7565b60405180910390fd5b80600201544211801561085157503373ffffffffffffffffffffffffffffffffffffffff166108386125ad565b73ffffffffffffffffffffffffffffffffffffffff1614155b15610899578060020154426040517f9501b6aa0000000000000000000000000000000000000000000000000000000081526004016108909291906144f0565b60405180910390fd5b60018160040160146101000a81548160ff021916908360028111156108c1576108c06142ab565b5b021790555060008160040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6109156125ad565b85600301546040518363ffffffff1660e01b8152600401610937929190614519565b6020604051808303816000875af1158015610956573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097a919061456e565b9050806109b3576040517f0f9310f900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b837f2a55abe3e9bd2822f0f7afc0b133435993903a3675f471023983e8a02d1979f5336040516109e3919061420b565b60405180910390a25050506109f66139b3565b50565b610a0161392c565b610a09613972565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a7a57826040517f8e4c8aa6000000000000000000000000000000000000000000000000000000008152600401610a71919061420b565b60405180910390fd5b60008103610abf57806040517f3728b83d000000000000000000000000000000000000000000000000000000008152600401610ab69190613fdb565b60405180910390fd5b6000429050808311610b0a5782816040517f8848019e000000000000000000000000000000000000000000000000000000008152600401610b019291906144f0565b60405180910390fd5b6000600760008781526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff168160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610bb657856040517fce1befcb000000000000000000000000000000000000000000000000000000008152600401610bad919061449d565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015610c4957503373ffffffffffffffffffffffffffffffffffffffff16610c306125ad565b73ffffffffffffffffffffffffffffffffffffffff1614155b15610c80576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006002811115610c9457610c936142ab565b5b8160050160149054906101000a900460ff166002811115610cb857610cb76142ab565b5b14610d0e5760008160050160149054906101000a900460ff166040517f1e8a8fcc000000000000000000000000000000000000000000000000000000008152600401610d059291906144c7565b60405180910390fd5b600081600401549050858260020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084826003018190555083826004018190555060008260050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905084821115610fca5760008583610dab91906145ca565b9050808273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610de7919061420b565b602060405180830381865afa158015610e04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e289190614613565b1015610ee657808273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610e68919061420b565b602060405180830381865afa158015610e85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea99190614613565b6040517faa1f42bd000000000000000000000000000000000000000000000000000000008152600401610edd9291906144f0565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8660010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401610f47929190614519565b6020604051808303816000875af1158015610f66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f8a919061456e565b905080610fc3576040517f0f9310f900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050611169565b818511156111685760008286610fe091906145ca565b905060008273ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff1660e01b815260040161101f929190614640565b602060405180830381865afa15801561103c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110609190614613565b9050818110156110a95781816040517f8cdd90830000000000000000000000000000000000000000000000000000000081526004016110a09291906144f0565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166323b872dd3330866040518463ffffffff1660e01b81526004016110e893929190614669565b6020604051808303816000875af1158015611107573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112b919061456e565b905080611164576040517f0f9310f900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505b5b877fe0f05aade364c77eb5ff3568d93dc6717122468c791b1e54acd674f7979b098033604051611199919061420b565b60405180910390a2505050506111ad6139b3565b50505050565b6111bb61392c565b6111c3613972565b6000600a60008381526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff168160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361126f57816040517fce1befcb000000000000000000000000000000000000000000000000000000008152600401611266919061449d565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415801561130257503373ffffffffffffffffffffffffffffffffffffffff166112e96125ad565b73ffffffffffffffffffffffffffffffffffffffff1614155b15611339576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600281111561134d5761134c6142ab565b5b8160040160149054906101000a900460ff166002811115611371576113706142ab565b5b146113c75760008160040160149054906101000a900460ff166040517f1e8a8fcc0000000000000000000000000000000000000000000000000000000081526004016113be9291906144c7565b60405180910390fd5b60028160040160146101000a81548160ff021916908360028111156113ef576113ee6142ab565b5b021790555060008160030154905060008260040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050818173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611460919061420b565b602060405180830381865afa15801561147d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a19190614613565b101561155f57818173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016114e1919061420b565b602060405180830381865afa1580156114fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115229190614613565b6040517faa1f42bd0000000000000000000000000000000000000000000000000000000081526004016115569291906144f0565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8560010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856040518363ffffffff1660e01b81526004016115c0929190614519565b6020604051808303816000875af11580156115df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611603919061456e565b90508061163c576040517f0f9310f900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b847f10ebfb60b40125de8adc6c5e86e4f4250c199d1ca235922bb2105632021c4dd83360405161166c919061420b565b60405180910390a2505050506116806139b3565b50565b61168b61392c565b611693613972565b6000600760008381526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff168160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361173f57816040517fce1befcb000000000000000000000000000000000000000000000000000000008152600401611736919061449d565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141580156117d257503373ffffffffffffffffffffffffffffffffffffffff166117b96125ad565b73ffffffffffffffffffffffffffffffffffffffff1614155b15611809576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600281111561181d5761181c6142ab565b5b8160050160149054906101000a900460ff166002811115611841576118406142ab565b5b146118975760008160050160149054906101000a900460ff166040517f1e8a8fcc00000000000000000000000000000000000000000000000000000000815260040161188e9291906144c7565b60405180910390fd5b60028160050160146101000a81548160ff021916908360028111156118bf576118be6142ab565b5b021790555060008160040154905060008260050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050818173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611930919061420b565b602060405180830381865afa15801561194d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119719190614613565b1015611a2f57818173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016119b1919061420b565b602060405180830381865afa1580156119ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119f29190614613565b6040517faa1f42bd000000000000000000000000000000000000000000000000000000008152600401611a269291906144f0565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8560010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856040518363ffffffff1660e01b8152600401611a90929190614519565b6020604051808303816000875af1158015611aaf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad3919061456e565b905080611b0c576040517f0f9310f900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b847f7b2cf50dfd40497eccd839397188b315c88b1fd74f487a8a98c0be7d1ef5c22333604051611b3c919061420b565b60405180910390a250505050611b506139b3565b50565b60045481565b6060600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bcc57816040517f8e4c8aa6000000000000000000000000000000000000000000000000000000008152600401611bc3919061420b565b60405180910390fd5b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480602002602001604051908101604052809291908181526020018280548015611c5557602002820191906000526020600020905b815481526020019060010190808311611c41575b50505050509050919050565b620186a081565b611c706139bc565b611c78613a43565b565b6060600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ced57816040517f8e4c8aa6000000000000000000000000000000000000000000000000000000008152600401611ce4919061420b565b60405180910390fd5b600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480602002602001604051908101604052809291908181526020018280548015611d7657602002820191906000526020600020905b815481526020019060010190808311611d62575b50505050509050919050565b611d8a61392c565b611d92613972565b60008203611dd757816040517f3728b83d000000000000000000000000000000000000000000000000000000008152600401611dce9190613fdb565b60405180910390fd5b600454821015611e1e57816040517f3728b83d000000000000000000000000000000000000000000000000000000008152600401611e159190613fdb565b60405180910390fd5b611e2781613aa6565b6000429050808411611e725783816040517f8848019e000000000000000000000000000000000000000000000000000000008152600401611e699291906144f0565b60405180910390fd5b600082905060008173ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff1660e01b8152600401611eb4929190614640565b602060405180830381865afa158015611ed1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ef59190614613565b905084811015611f3e5784816040517f8cdd9083000000000000000000000000000000000000000000000000000000008152600401611f359291906144f0565b60405180910390fd5b6000338643604051602001611f55939291906146a0565b60405160208183030381529060405280519060200120905060008373ffffffffffffffffffffffffffffffffffffffff166323b872dd33308a6040518463ffffffff1660e01b8152600401611fac93929190614669565b6020604051808303816000875af1158015611fcb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fef919061456e565b905080612028576040517f0f9310f900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060c001604052808481526020013373ffffffffffffffffffffffffffffffffffffffff1681526020018a81526020018981526020018873ffffffffffffffffffffffffffffffffffffffff16815260200160006002811115612093576120926142ab565b5b815250905080600a60008581526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600201556060820151816003015560808201518160040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060a08201518160040160146101000a81548160ff02191690836002811115612183576121826142ab565b5b02179055509050506008839080600181540180825580915050600190039060005260206000200160009091909190915055600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020839080600181540180825580915050600190039060005260206000200160009091909190915055827f29082b7b3a4bc6157c49be834a34ce577ba253315d9d576735c082fa91d3332a338a60405161224c929190614519565b60405180910390a25050505050506122626139b3565b505050565b6000600260009054906101000a900460ff16905090565b6122866139bc565b6122906000613bef565b565b61229a6139bc565b6122a2613cb3565b565b6122ac6139bc565b6122b4613972565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361232557806040517f7330680300000000000000000000000000000000000000000000000000000000815260040161231c919061420b565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612360919061420b565b602060405180830381865afa15801561237d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123a19190614613565b905060008273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6123c96125ad565b846040518363ffffffff1660e01b81526004016123e7929190614519565b6020604051808303816000875af1158015612406573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061242a919061456e565b905080612463576040517f0f9310f900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b6060600060088054905090506000838561248291906146d7565b905081811115612490578190505b8185106124e957600067ffffffffffffffff8111156124b2576124b161470b565b5b6040519080825280602002602001820160405280156124e05781602001602082028036833780820191505090505b509250506125a6565b84816124f591906145ca565b67ffffffffffffffff81111561250e5761250d61470b565b5b60405190808252806020026020018201604052801561253c5781602001602082028036833780820191505090505b50925060008590505b818110156125a357600881815481106125615761256061473a565b5b906000526020600020015484878361257991906145ca565b8151811061258a5761258961473a565b5b6020026020010181815250508080600101915050612545565b50505b9250929050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060006005805490509050600083856125f091906146d7565b9050818111156125fe578190505b81851061265757600067ffffffffffffffff8111156126205761261f61470b565b5b60405190808252806020026020018201604052801561264e5781602001602082028036833780820191505090505b50925050612714565b848161266391906145ca565b67ffffffffffffffff81111561267c5761267b61470b565b5b6040519080825280602002602001820160405280156126aa5781602001602082028036833780820191505090505b50925060008590505b8181101561271157600581815481106126cf576126ce61473a565b5b90600052602060002001548487836126e791906145ca565b815181106126f8576126f761473a565b5b60200260200101818152505080806001019150506126b3565b50505b9250929050565b6127236139bc565b61272b613972565b6000479050600061273a6125ad565b73ffffffffffffffffffffffffffffffffffffffff168260405161275d9061479a565b60006040518083038185875af1925050503d806000811461279a576040519150601f19603f3d011682016040523d82523d6000602084013e61279f565b606091505b50509050806127da576040517f0f9310f900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b60035481565b6127ec61392c565b6127f4613972565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361286557836040517f8e4c8aa600000000000000000000000000000000000000000000000000000000815260040161285c919061420b565b60405180910390fd5b600083036128aa57826040517f3728b83d0000000000000000000000000000000000000000000000000000000081526004016128a19190613fdb565b60405180910390fd5b6004548310156128f157826040517f3728b83d0000000000000000000000000000000000000000000000000000000081526004016128e89190613fdb565b60405180910390fd5b6128fa81613aa6565b60004290508083116129455782816040517f8848019e00000000000000000000000000000000000000000000000000000000815260040161293c9291906144f0565b60405180910390fd5b600082905060008173ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff1660e01b8152600401612987929190614640565b602060405180830381865afa1580156129a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129c89190614613565b905085811015612a115785816040517f8cdd9083000000000000000000000000000000000000000000000000000000008152600401612a089291906144f0565b60405180910390fd5b600033888843604051602001612a2a94939291906147af565b60405160208183030381529060405280519060200120905060008373ffffffffffffffffffffffffffffffffffffffff166323b872dd33308b6040518463ffffffff1660e01b8152600401612a8193929190614669565b6020604051808303816000875af1158015612aa0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ac4919061456e565b905080612afd576040517f0f9310f900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060e001604052808481526020013373ffffffffffffffffffffffffffffffffffffffff1681526020018b73ffffffffffffffffffffffffffffffffffffffff1681526020018981526020018a81526020018873ffffffffffffffffffffffffffffffffffffffff16815260200160006002811115612b8457612b836142ab565b5b815250905080600760008581526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606082015181600301556080820151816004015560a08201518160050160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060c08201518160050160146101000a81548160ff02191690836002811115612cbb57612cba6142ab565b5b02179055509050506005839080600181540180825580915050600190039060005260206000200160009091909190915055600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020839080600181540180825580915050600190039060005260206000200160009091909190915055827f58eabacbedee8d4917aaa8e68cf876508399e8c08caebbe9a7211c348154fdf8338b604051612d84929190614519565b60405180910390a2505050505050612d9a6139b3565b50505050565b612da8613d5e565b6000600a60008481526020019081526020016000206040518060c0016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382015481526020016004820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016004820160149054906101000a900460ff166002811115612eb757612eb66142ab565b5b6002811115612ec957612ec86142ab565b5b815250509050600073ffffffffffffffffffffffffffffffffffffffff16816020015173ffffffffffffffffffffffffffffffffffffffff1603612f4457826040517fce1befcb000000000000000000000000000000000000000000000000000000008152600401612f3b919061449d565b60405180910390fd5b80915050919050565b612f556139bc565b612f5d613972565b620186a0811115612fa557806040517f3728b83d000000000000000000000000000000000000000000000000000000008152600401612f9c9190613fdb565b60405180910390fd5b60006003549050816003819055507fd8e832f816c1cbad9f319fc8017ca9d81476c84945de3610a3cf813538f737518183604051612fe49291906144f0565b60405180910390a15050565b612ff86139bc565b613000613972565b806004819055507f9fd7b0ddb6c31e6311e26da78c6a4b6ec03bd238fb722649f26e25f06cd4f8c3816040516130369190613fdb565b60405180910390a150565b6130496139bc565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036130bb5760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016130b2919061420b565b60405180910390fd5b6130c481613bef565b50565b6130cf61392c565b6130d7613972565b6000600760008381526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff168160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361318357816040517fce1befcb00000000000000000000000000000000000000000000000000000000815260040161317a919061449d565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415801561321657503373ffffffffffffffffffffffffffffffffffffffff166131fd6125ad565b73ffffffffffffffffffffffffffffffffffffffff1614155b1561324d576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006002811115613261576132606142ab565b5b8160050160149054906101000a900460ff166002811115613285576132846142ab565b5b146132db5760008160050160149054906101000a900460ff166040517f1e8a8fcc0000000000000000000000000000000000000000000000000000000081526004016132d29291906144c7565b60405180910390fd5b80600301544211801561332157503373ffffffffffffffffffffffffffffffffffffffff166133086125ad565b73ffffffffffffffffffffffffffffffffffffffff1614155b15613369578060030154426040517f9501b6aa0000000000000000000000000000000000000000000000000000000081526004016133609291906144f0565b60405180910390fd5b6000816004015490506000620186a06003548361338691906147f4565b6133909190614865565b9050600081836133a091906145ca565b905060008460050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600083836133d991906146d7565b9050808273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613415919061420b565b602060405180830381865afa158015613432573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134569190614613565b101561351457808273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613496919061420b565b602060405180830381865afa1580156134b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134d79190614613565b6040517faa1f42bd00000000000000000000000000000000000000000000000000000000815260040161350b9291906144f0565b60405180910390fd5b60018660050160146101000a81548160ff0219169083600281111561353c5761353b6142ab565b5b021790555060008273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8860020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866040518363ffffffff1660e01b81526004016135a2929190614519565b6020604051808303816000875af11580156135c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135e5919061456e565b90508061361e576040517f0f9310f900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6136446125ad565b886040518363ffffffff1660e01b8152600401613662929190614519565b6020604051808303816000875af1158015613681573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136a5919061456e565b9050806136de576040517f0f9310f900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b887fe62c622e90c165374a3b11f530413ced72b35649d0990a996f57da878f51c3a73360405161370e919061420b565b60405180910390a250505050505050506137266139b3565b50565b613731613dd5565b6000600760008481526020019081526020016000206040518060e0016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160038201548152602001600482015481526020016005820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016005820160149054906101000a900460ff166002811115613896576138956142ab565b5b60028111156138a8576138a76142ab565b5b815250509050600073ffffffffffffffffffffffffffffffffffffffff16816020015173ffffffffffffffffffffffffffffffffffffffff160361392357826040517fce1befcb00000000000000000000000000000000000000000000000000000000815260040161391a919061449d565b60405180910390fd5b80915050919050565b600260015403613968576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600181905550565b61397a612267565b156139b1576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60018081905550565b6139c4613d16565b73ffffffffffffffffffffffffffffffffffffffff166139e26125ad565b73ffffffffffffffffffffffffffffffffffffffff1614613a4157613a05613d16565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401613a38919061420b565b60405180910390fd5b565b613a4b613d1e565b6000600260006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa613a8f613d16565b604051613a9c919061420b565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613b0c576040517f14f28f2b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000813b905060008103613b4c576040517f09ee12d500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015613bb457506040513d601f19601f82011682018060405250810190613bb19190614613565b60015b613bea576040517f40ecd43d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b613cbb613972565b6001600260006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258613cff613d16565b604051613d0c919061420b565b60405180910390a1565b600033905090565b613d26612267565b613d5c576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6040518060c0016040528060008019168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160006002811115613dcf57613dce6142ab565b5b81525090565b6040518060e0016040528060008019168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160006002811115613e6357613e626142ab565b5b81525090565b600080fd5b6000819050919050565b613e8181613e6e565b8114613e8c57600080fd5b50565b600081359050613e9e81613e78565b92915050565b600060208284031215613eba57613eb9613e69565b5b6000613ec884828501613e8f565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613efc82613ed1565b9050919050565b613f0c81613ef1565b8114613f1757600080fd5b50565b600081359050613f2981613f03565b92915050565b6000819050919050565b613f4281613f2f565b8114613f4d57600080fd5b50565b600081359050613f5f81613f39565b92915050565b60008060008060808587031215613f7f57613f7e613e69565b5b6000613f8d87828801613e8f565b9450506020613f9e87828801613f1a565b9350506040613faf87828801613f50565b9250506060613fc087828801613f50565b91505092959194509250565b613fd581613f2f565b82525050565b6000602082019050613ff06000830184613fcc565b92915050565b60006020828403121561400c5761400b613e69565b5b600061401a84828501613f1a565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61405881613e6e565b82525050565b600061406a838361404f565b60208301905092915050565b6000602082019050919050565b600061408e82614023565b614098818561402e565b93506140a38361403f565b8060005b838110156140d45781516140bb888261405e565b97506140c683614076565b9250506001810190506140a7565b5085935050505092915050565b600060208201905081810360008301526140fb8184614083565b905092915050565b60008060006060848603121561411c5761411b613e69565b5b600061412a86828701613f50565b935050602061413b86828701613f50565b925050604061414c86828701613f1a565b9150509250925092565b60008115159050919050565b61416b81614156565b82525050565b60006020820190506141866000830184614162565b92915050565b600080604083850312156141a3576141a2613e69565b5b60006141b185828601613f50565b92505060206141c285828601613f50565b9150509250929050565b600060408201905081810360008301526141e68185614083565b90506141f56020830184613fcc565b9392505050565b61420581613ef1565b82525050565b600060208201905061422060008301846141fc565b92915050565b600080600080608085870312156142405761423f613e69565b5b600061424e87828801613f1a565b945050602061425f87828801613f50565b935050604061427087828801613f50565b925050606061428187828801613f1a565b91505092959194509250565b61429681613ef1565b82525050565b6142a581613f2f565b82525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600381106142eb576142ea6142ab565b5b50565b60008190506142fc826142da565b919050565b600061430c826142ee565b9050919050565b61431c81614301565b82525050565b60c082016000820151614338600085018261404f565b50602082015161434b602085018261428d565b50604082015161435e604085018261429c565b506060820151614371606085018261429c565b506080820151614384608085018261428d565b5060a082015161439760a0850182614313565b50505050565b600060c0820190506143b26000830184614322565b92915050565b6000602082840312156143ce576143cd613e69565b5b60006143dc84828501613f50565b91505092915050565b60e0820160008201516143fb600085018261404f565b50602082015161440e602085018261428d565b506040820151614421604085018261428d565b506060820151614434606085018261429c565b506080820151614447608085018261429c565b5060a082015161445a60a085018261428d565b5060c082015161446d60c0850182614313565b50505050565b600060e08201905061448860008301846143e5565b92915050565b61449781613e6e565b82525050565b60006020820190506144b2600083018461448e565b92915050565b6144c181614301565b82525050565b60006040820190506144dc60008301856144b8565b6144e960208301846144b8565b9392505050565b60006040820190506145056000830185613fcc565b6145126020830184613fcc565b9392505050565b600060408201905061452e60008301856141fc565b61453b6020830184613fcc565b9392505050565b61454b81614156565b811461455657600080fd5b50565b60008151905061456881614542565b92915050565b60006020828403121561458457614583613e69565b5b600061459284828501614559565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006145d582613f2f565b91506145e083613f2f565b92508282039050818111156145f8576145f761459b565b5b92915050565b60008151905061460d81613f39565b92915050565b60006020828403121561462957614628613e69565b5b6000614637848285016145fe565b91505092915050565b600060408201905061465560008301856141fc565b61466260208301846141fc565b9392505050565b600060608201905061467e60008301866141fc565b61468b60208301856141fc565b6146986040830184613fcc565b949350505050565b60006060820190506146b560008301866141fc565b6146c26020830185613fcc565b6146cf6040830184613fcc565b949350505050565b60006146e282613f2f565b91506146ed83613f2f565b92508282019050808211156147055761470461459b565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081905092915050565b50565b6000614784600083614769565b915061478f82614774565b600082019050919050565b60006147a582614777565b9150819050919050565b60006080820190506147c460008301876141fc565b6147d160208301866141fc565b6147de6040830185613fcc565b6147eb6060830184613fcc565b95945050505050565b60006147ff82613f2f565b915061480a83613f2f565b925082820261481881613f2f565b9150828204841483151761482f5761482e61459b565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061487082613f2f565b915061487b83613f2f565b92508261488b5761488a614836565b5b82820490509291505056fea264697066735822122072857e17159db1ec531ad48617af19379d97f773011f4532acba15a656d9babe64736f6c634300081a0033