0 txs
0 calls
constructor
constructor(address _history, uint256 _nextStreamId, address forwarder)
functions
acceptToken
viewfunction acceptToken(address) view returns (bool)
balanceOf
viewfunction balanceOf(uint256 streamId, address who) view returns (uint256 balance)
bank
viewfunction bank() view returns (address)
contractFeeBalance
viewfunction contractFeeBalance() view returns (uint256)
feeCharge
viewfunction feeCharge(uint256 deposit) view returns (uint256)
feeRate
viewfunction feeRate() view returns (uint256)
getMSg
viewfunction getMSg() view returns (address)
getStream
viewfunction getStream(uint256 id) view returns (tuple stream)
getTrustedForwarder
viewfunction getTrustedForwarder() view returns (address forwarder)
getValue
purefunction getValue(uint256 _value) pure returns (uint256)
history
viewfunction history() view returns (address)
Ierc20permitusdc
viewfunction Ierc20permitusdc() view returns (address)
isTrustedForwarder
viewfunction isTrustedForwarder(address forwarder) view returns (bool)
nextStreamId
viewfunction nextStreamId() view returns (uint256)
numberOfFeeWithdraws
viewfunction numberOfFeeWithdraws() view returns (uint256)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
usdcTokenAddress
viewfunction usdcTokenAddress() view returns (address)
versionRecipient
viewfunction versionRecipient() view returns (string)
withdraws
viewfunction withdraws(uint256) view returns (uint256 amount, uint256 time, address who)
addTokenForStream
nonpayablefunction addTokenForStream(address _token)
cancelStream
nonpayablefunction cancelStream(uint256 streamId) returns (bool)
changeFeeRate
nonpayablefunction changeFeeRate(uint256 _newFeeRate)
createStream
nonpayablefunction createStream(tuple streamDetails, tuple sig, string title)
pause
nonpayablefunction pause()
removeToken
nonpayablefunction removeToken(address _token)
renounceOwnership
nonpayablefunction renounceOwnership()
setBank
nonpayablefunction setBank(address _newBank)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause()
withdrawFeeForHolders
nonpayablefunction withdrawFeeForHolders(uint256 amount, address reciver) returns (bool)
withdrawFromStream
nonpayablefunction withdrawFromStream(uint256 streamId, uint256 amount) returns (bool)
events
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
Unpaused
event Unpaused(address account)
withdrawFee
event withdrawFee(uint256 amount, address indexed reciver)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
FailedInnerCall
error FailedInnerCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x60806040526040518060400160405280600581526020017f332e302e30000000000000000000000000000000000000000000000000000000815250600490816200004a919062000630565b50733c499c542cef5e3811e1192ce70d8cc03d5c3359600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506064600b55348015620000b257600080fd5b5060405162005497380380620054978339818101604052810190620000d89190620007b2565b620000f8620000ec6200021260201b60201c565b6200025460201b60201c565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036200016a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000161906200086f565b60405180910390fd5b60008203620001b0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001a790620008e1565b60405180910390fd5b82600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160038190555062000209816200031a60201b60201c565b50505062000903565b6000601460003690501015801562000237575062000236336200035d60201b60201c565b5b156200024d57601436033560601c905062000251565b3390505b90565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200043857607f821691505b6020821081036200044e576200044d620003f0565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620004b87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000479565b620004c4868362000479565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620005116200050b6200050584620004dc565b620004e6565b620004dc565b9050919050565b6000819050919050565b6200052d83620004f0565b620005456200053c8262000518565b84845462000486565b825550505050565b600090565b6200055c6200054d565b6200056981848462000522565b505050565b5b8181101562000591576200058560008262000552565b6001810190506200056f565b5050565b601f821115620005e057620005aa8162000454565b620005b58462000469565b81016020851015620005c5578190505b620005dd620005d48562000469565b8301826200056e565b50505b505050565b600082821c905092915050565b60006200060560001984600802620005e5565b1980831691505092915050565b6000620006208383620005f2565b9150826002028217905092915050565b6200063b82620003b6565b67ffffffffffffffff811115620006575762000656620003c1565b5b6200066382546200041f565b6200067082828562000595565b600060209050601f831160018114620006a8576000841562000693578287015190505b6200069f858262000612565b8655506200070f565b601f198416620006b88662000454565b60005b82811015620006e257848901518255600182019150602085019450602081019050620006bb565b86831015620007025784890151620006fe601f891682620005f2565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000749826200071c565b9050919050565b6200075b816200073c565b81146200076757600080fd5b50565b6000815190506200077b8162000750565b92915050565b6200078c81620004dc565b81146200079857600080fd5b50565b600081519050620007ac8162000781565b92915050565b600080600060608486031215620007ce57620007cd62000717565b5b6000620007de868287016200076a565b9350506020620007f1868287016200079b565b925050604062000804868287016200076a565b9150509250925092565b600082825260208201905092915050565b7f7a65726f20616464726573730000000000000000000000000000000000000000600082015250565b600062000857600c836200080e565b915062000864826200081f565b602082019050919050565b600060208201905081810360008301526200088a8162000848565b9050919050565b7f53747265616d206964206973207a65726f000000000000000000000000000000600082015250565b6000620008c96011836200080e565b9150620008d68262000891565b602082019050919050565b60006020820190508181036000830152620008fc81620008ba565b9050919050565b614b8480620009136000396000f3fe608060405234801561001057600080fd5b50600436106101ef5760003560e01c806377b53ece1161010f5780638da5cb5b116100a2578063b160f9cc11610071578063b160f9cc146105ac578063ce1b815f146105ca578063f2fde38b146105e8578063f95654a714610604576101ef565b80638da5cb5b14610536578063978bbdb91461055457806398daac8314610572578063affca93214610590576101ef565b8063873ed48c116100de578063873ed48c1461049e578063894e9a0d146104ba5780638bc103e2146104ea5780638cd3f06414610506576101ef565b806377b53ece146104165780637a9b2c6c146104345780637c5b3648146104645780638456cb5914610494576101ef565b8063486ff0cd116101875780635fa7b584116101565780635fa7b584146103a25780636db9241b146103be578063715018a6146103ee57806376cdb03b146103f8576101ef565b8063486ff0cd1461030457806355466c3714610322578063572b6c05146103545780635c975abb14610384576101ef565b80631e99d569116101c35780631e99d5691461028e57806328f7c3bf146102ac5780633656eec2146102ca5780633f4ba83a146102fa576101ef565b8062b98a43146101f45780630322bdef14610212578063090d23b9146102425780630ff4c9161461025e575b600080fd5b6101fc610622565b6040516102099190612ffb565b60405180910390f35b61022c6004803603810190610227919061309e565b610648565b60405161023991906130f9565b60405180910390f35b61025c60048036038101906102579190613114565b61087a565b005b61027860048036038101906102739190613141565b6108c6565b604051610285919061317d565b60405180910390f35b6102966108d0565b6040516102a3919061317d565b60405180910390f35b6102b46108d6565b6040516102c1919061317d565b60405180910390f35b6102e460048036038101906102df919061309e565b6108dc565b6040516102f1919061317d565b60405180910390f35b610302610b86565b005b61030c610c30565b6040516103199190613228565b60405180910390f35b61033c60048036038101906103379190613141565b610cbe565b60405161034b93929190613259565b60405180910390f35b61036e60048036038101906103699190613114565b610d08565b60405161037b91906130f9565b60405180910390f35b61038c610d61565b60405161039991906130f9565b60405180910390f35b6103bc60048036038101906103b79190613114565b610d78565b005b6103d860048036038101906103d39190613141565b610e31565b6040516103e591906130f9565b60405180910390f35b6103f661100d565b005b610400611021565b60405161040d9190613290565b60405180910390f35b61041e611047565b60405161042b9190613290565b60405180910390f35b61044e600480360381019061044991906132ab565b61106d565b60405161045b91906130f9565b60405180910390f35b61047e60048036038101906104799190613141565b6114d8565b60405161048b919061317d565b60405180910390f35b61049c6114fc565b005b6104b860048036038101906104b39190613114565b6115a6565b005b6104d460048036038101906104cf9190613141565b61169f565b6040516104e1919061335e565b60405180910390f35b61050460048036038101906104ff91906134f2565b611705565b005b610520600480360381019061051b9190613114565b6120ba565b60405161052d91906130f9565b60405180910390f35b61053e6120da565b60405161054b9190613290565b60405180910390f35b61055c612104565b604051610569919061317d565b60405180910390f35b61057a61210a565b6040516105879190613585565b60405180910390f35b6105aa60048036038101906105a59190613141565b612130565b005b6105b4612189565b6040516105c1919061317d565b60405180910390f35b6105d261218f565b6040516105df9190613290565b60405180910390f35b61060260048036038101906105fd9190613114565b6121b8565b005b61060c61223b565b6040516106199190613290565b60405180910390f35b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061065261224a565b60025483111561066157600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361069a57600080fd5b600083116106a757600080fd5b600c600081546106b6906135cf565b9190508190555060405180606001604052808481526020014281526020018373ffffffffffffffffffffffffffffffffffffffff16815250600d6000600c548152602001908152602001600020600082015181600001556020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509050508260025461076f9190613617565b60028190555060008273ffffffffffffffffffffffffffffffffffffffff168460405161079b9061367c565b60006040518083038185875af1925050503d80600081146107d8576040519150601f19603f3d011682016040523d82523d6000602084013e6107dd565b606091505b5050905080610821576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610818906136dd565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff167f9c74a3eff454be4704451c89978de3c7c598994b70e83bccafa27632a4b8054785604051610867919061317d565b60405180910390a2600191505092915050565b61088261224a565b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000819050919050565b60035481565b600c5481565b6000826007600082815260200190815260200160002060030160009054906101000a900460ff16610942576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093990613749565b60405180910390fd5b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd0ddc75866040518263ffffffff1660e01b815260040161099f919061317d565b600060405180830381865afa1580156109bc573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906109e59190613a00565b90506000600760008781526020019081526020016000206040518060800160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff1615151515815250509050610a4a612f17565b6000610a55886122c8565b90508260400151836000015182610a6c9190613a49565b610a769190613a8b565b826000018181525050826020015184600001511115610aca5782602001518460000151610aa39190613617565b82602001818152505081602001518260000151610ac09190613617565b8260000181815250505b83610100015173ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1603610b12578160000151955050505050610b7f565b8360c0015173ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1603610b765781600001518360200151610b5d9190613617565b8260400181815250508160400151955050505050610b7f565b60009550505050505b5092915050565b610b8e61224a565b610b96610d61565b610bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcc90613b0b565b60405180910390fd5b6000600160146101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa610c19612452565b604051610c269190613290565b60405180910390a1565b60048054610c3d90613b5a565b80601f0160208091040260200160405190810160405280929190818152602001828054610c6990613b5a565b8015610cb65780601f10610c8b57610100808354040283529160200191610cb6565b820191906000526020600020905b815481529060010190602001808311610c9957829003601f168201915b505050505081565b600d6020528060005260406000206000915090508060000154908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905083565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b6000600160149054906101000a900460ff16905090565b610d8061224a565b600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610dd657600080fd5b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000816007600082815260200190815260200160002060030160009054906101000a900460ff16610e97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8e90613749565b60405180910390fd5b826000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd0ddc75836040518263ffffffff1660e01b8152600401610ef5919061317d565b600060405180830381865afa158015610f12573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610f3b9190613a00565b90508060c0015173ffffffffffffffffffffffffffffffffffffffff16610f60612452565b73ffffffffffffffffffffffffffffffffffffffff161480610fb9575080610100015173ffffffffffffffffffffffffffffffffffffffff16610fa1612452565b73ffffffffffffffffffffffffffffffffffffffff16145b610ff8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fef90613bfd565b60405180910390fd5b61100185612489565b60019350505050919050565b61101561224a565b61101f60006128c7565b565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000826007600082815260200190815260200160002060030160009054906101000a900460ff166110d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ca90613749565b60405180910390fd5b836000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd0ddc75836040518263ffffffff1660e01b8152600401611131919061317d565b600060405180830381865afa15801561114e573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906111779190613a00565b905080610100015173ffffffffffffffffffffffffffffffffffffffff1661119d612452565b73ffffffffffffffffffffffffffffffffffffffff16146111f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ea90613c69565b60405180910390fd5b60008503611236576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122d90613cd5565b60405180910390fd5b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd0ddc75886040518263ffffffff1660e01b8152600401611293919061317d565b600060405180830381865afa1580156112b0573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906112d99190613a00565b90506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fb4da144896040518263ffffffff1660e01b8152600401611338919061317d565b602060405180830381865afa158015611355573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113799190613cf5565b905042826020015167ffffffffffffffff1611156113cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c390613d6e565b60405180910390fd5b60006113dd898461010001516108dc565b905087811015611422576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141990613e00565b60405180910390fd5b600083610100015190506114388a8a838661298d565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638afaa8878b8b6040518363ffffffff1660e01b8152600401611495929190613e20565b600060405180830381600087803b1580156114af57600080fd5b505af11580156114c3573d6000803e3d6000fd5b50505050600197505050505050505092915050565b6000612710600b54836114eb9190613a49565b6114f59190613e78565b9050919050565b61150461224a565b61150c610d61565b1561154c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154390613ef5565b60405180910390fd5b60018060146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861158f612452565b60405161159c9190613290565b60405180910390a1565b6115ae61224a565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036115e757600080fd5b60001515600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151461164457600080fd5b6001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6116a7612f38565b600760008381526020019081526020016000206040518060800160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff1615151515815250509050919050565b61170d610d61565b1561174d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174490613ef5565b60405180910390fd5b600061175c84602001356114d8565b9050612710846020013510156117a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179e90613f61565b60405180910390fd5b80600254016002819055506117ba612452565b73ffffffffffffffffffffffffffffffffffffffff168460600160208101906117e39190613114565b73ffffffffffffffffffffffffffffffffffffffff1614611839576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183090613fcd565b60405180910390fd5b600960008560000160208101906118509190613114565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166118d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ce90614039565b60405180910390fd5b60048460e00160208101906118ec919061406e565b60ff161061192f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611926906140e7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1684604001602081019061195a9190613114565b73ffffffffffffffffffffffffffffffffffffffff16036119b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a790614153565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168460400160208101906119da9190613114565b73ffffffffffffffffffffffffffffffffffffffff1603611a30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a27906141bf565b60405180910390fd5b611a38612452565b73ffffffffffffffffffffffffffffffffffffffff16846040016020810190611a619190613114565b73ffffffffffffffffffffffffffffffffffffffff1603611ab7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aae9061422b565b60405180910390fd5b6000846020013503611afe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af590614297565b60405180910390fd5b4284608001600060038110611b1657611b156142b7565b5b602002016020810190611b2991906142fb565b67ffffffffffffffff161015611b74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6b90614374565b60405180910390fd5b83608001600060038110611b8b57611b8a6142b7565b5b602002016020810190611b9e91906142fb565b67ffffffffffffffff1684608001600160038110611bbf57611bbe6142b7565b5b602002016020810190611bd291906142fb565b67ffffffffffffffff1611611c1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c13906143e0565b60405180910390fd5b600084608001600260038110611c3557611c346142b7565b5b602002016020810190611c4891906142fb565b67ffffffffffffffff161480611cc4575083608001600060038110611c7057611c6f6142b7565b5b602002016020810190611c8391906142fb565b67ffffffffffffffff1684608001600260038110611ca457611ca36142b7565b5b602002016020810190611cb791906142fb565b67ffffffffffffffff1611155b611d03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cfa9061444c565b60405180910390fd5b6000846000016020810190611d189190613114565b9050846000016020810190611d2d9190613114565b73ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611e9b57846000016020810190611d949190613114565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d505accf611e1a612452565b3087608001358860600135896000016020810190611e38919061406e565b8a602001358b604001356040518863ffffffff1660e01b8152600401611e649796959493929190614494565b600060405180830381600087803b158015611e7e57600080fd5b505af1158015611e92573d6000803e3d6000fd5b50505050611ea0565b600080fd5b611ed1333087602001358473ffffffffffffffffffffffffffffffffffffffff16612b32909392919063ffffffff16565b611efe3330848473ffffffffffffffffffffffffffffffffffffffff16612b32909392919063ffffffff16565b611f06612f62565b85608001600060038110611f1d57611f1c6142b7565b5b602002016020810190611f3091906142fb565b86608001600160038110611f4757611f466142b7565b5b602002016020810190611f5a91906142fb565b0367ffffffffffffffff16816000018181525050806000015186602001351015611fb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb09061454f565b60405180910390fd5b60008082600001518860200135611fd0919061456f565b03611fde5760009050611ff5565b81600001518760200135611ff2919061456f565b90505b816000015187602001356120099190613e78565b8260200181815250506000600354905060405180608001604052808460200151815260200189602001358152602001838152602001600115158152506007600083815260200190815260200160002060008201518160000155602082015181600101556040820151816002015560608201518160030160006101000a81548160ff0219169083151502179055509050506001600354016003819055506120b0818988612bb4565b5050505050505050565b60096020528060005260406000206000915054906101000a900460ff1681565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600b5481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61213861224a565b6107d0600b54111561217f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612176906145ec565b60405180910390fd5b80600b8190555050565b60025481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6121c061224a565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361222f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122269061467e565b60405180910390fd5b612238816128c7565b50565b6000612245612452565b905090565b612252612452565b73ffffffffffffffffffffffffffffffffffffffff166122706120da565b73ffffffffffffffffffffffffffffffffffffffff16146122c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122bd906146ea565b60405180910390fd5b565b6000816007600082815260200190815260200160002060030160009054906101000a900460ff1661232e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232590613749565b60405180910390fd5b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd0ddc75856040518263ffffffff1660e01b815260040161238b919061317d565b600060405180830381865afa1580156123a8573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906123d19190613a00565b9050806020015167ffffffffffffffff1642116123f257600092505061244c565b806040015167ffffffffffffffff1642101561242a57806020015167ffffffffffffffff16426124229190613617565b92505061244c565b8060200151816040015161243e919061470a565b67ffffffffffffffff169250505b50919050565b6000601460003690501015801561246e575061246d33610d08565b5b1561248257601436033560601c9050612486565b3390505b90565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd0ddc75836040518263ffffffff1660e01b81526004016124e6919061317d565b600060405180830381865afa158015612503573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061252c9190613a00565b90506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fb4da144846040518263ffffffff1660e01b815260040161258b919061317d565b602060405180830381865afa1580156125a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125cc9190613cf5565b905042826060015167ffffffffffffffff16111561261f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261690614792565b60405180910390fd5b42826040015167ffffffffffffffff161015612670576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612667906147fe565b60405180910390fd5b8160c0015173ffffffffffffffffffffffffffffffffffffffff16612693612452565b73ffffffffffffffffffffffffffffffffffffffff161480156126bf5750600182610140015160ff1614155b80156126d45750600382610140015160ff1614155b156126de57600080fd5b81610100015173ffffffffffffffffffffffffffffffffffffffff16612702612452565b73ffffffffffffffffffffffffffffffffffffffff1614801561272e5750600282610140015160ff1614155b80156127435750600382610140015160ff1614155b1561274d57600080fd5b600081905060008190506000612767868660c001516108dc565b9050600061277a878761010001516108dc565b9050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166303e65e6f88836040518363ffffffff1660e01b81526004016127d9929190613e20565b600060405180830381600087803b1580156127f357600080fd5b505af1158015612807573d6000803e3d6000fd5b5050505060076000888152602001908152602001600020600080820160009055600182016000905560028201600090556003820160006101000a81549060ff021916905550506000811461288657612885866101000151828573ffffffffffffffffffffffffffffffffffffffff16612c4a9092919063ffffffff16565b5b600082146128be576128bd8660c00151838573ffffffffffffffffffffffffffffffffffffffff16612c4a9092919063ffffffff16565b5b50505050505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600760008681526020019081526020016000206040518060800160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff161515151581525050905060006007600087815260200190815260200160002060020154905084818360200151612a149190613a8b565b612a1e9190613617565b6007600088815260200190815260200160002060010181905550600060076000888152602001908152602001600020600201819055506000600760008881526020019081526020016000206001015403612ab55760076000878152602001908152602001600020600080820160009055600182016000905560028201600090556003820160006101000a81549060ff021916905550505b6000839050612af7856611c37937e0800088612ad19190613617565b8373ffffffffffffffffffffffffffffffffffffffff16612c4a9092919063ffffffff16565b612b29306611c37937e080008373ffffffffffffffffffffffffffffffffffffffff16612c4a9092919063ffffffff16565b50505050505050565b612bae848573ffffffffffffffffffffffffffffffffffffffff166323b872dd868686604051602401612b679392919061481e565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612cc9565b50505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639556b1c28484846040518463ffffffff1660e01b8152600401612c1393929190614a39565b600060405180830381600087803b158015612c2d57600080fd5b505af1158015612c41573d6000803e3d6000fd5b50505050505050565b612cc4838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8585604051602401612c7d929190614a79565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612cc9565b505050565b6000612cf4828473ffffffffffffffffffffffffffffffffffffffff16612d6090919063ffffffff16565b90506000815114158015612d19575080806020019051810190612d179190614ace565b155b15612d5b57826040517f5274afe7000000000000000000000000000000000000000000000000000000008152600401612d529190613290565b60405180910390fd5b505050565b6060612d6e83836000612d76565b905092915050565b606081471015612dbd57306040517fcd786059000000000000000000000000000000000000000000000000000000008152600401612db49190613290565b60405180910390fd5b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051612de69190614b37565b60006040518083038185875af1925050503d8060008114612e23576040519150601f19603f3d011682016040523d82523d6000602084013e612e28565b606091505b5091509150612e38868383612e43565b925050509392505050565b606082612e5857612e5382612ed2565b612eca565b60008251148015612e80575060008473ffffffffffffffffffffffffffffffffffffffff163b145b15612ec257836040517f9996b315000000000000000000000000000000000000000000000000000000008152600401612eb99190613290565b60405180910390fd5b819050612ecb565b5b9392505050565b600081511115612ee55780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405180606001604052806000815260200160008152602001600081525090565b60405180608001604052806000815260200160008152602001600081526020016000151581525090565b604051806040016040528060008152602001600081525090565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000612fc1612fbc612fb784612f7c565b612f9c565b612f7c565b9050919050565b6000612fd382612fa6565b9050919050565b6000612fe582612fc8565b9050919050565b612ff581612fda565b82525050565b60006020820190506130106000830184612fec565b92915050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b61303d8161302a565b811461304857600080fd5b50565b60008135905061305a81613034565b92915050565b600061306b82612f7c565b9050919050565b61307b81613060565b811461308657600080fd5b50565b60008135905061309881613072565b92915050565b600080604083850312156130b5576130b4613020565b5b60006130c38582860161304b565b92505060206130d485828601613089565b9150509250929050565b60008115159050919050565b6130f3816130de565b82525050565b600060208201905061310e60008301846130ea565b92915050565b60006020828403121561312a57613129613020565b5b600061313884828501613089565b91505092915050565b60006020828403121561315757613156613020565b5b60006131658482850161304b565b91505092915050565b6131778161302a565b82525050565b6000602082019050613192600083018461316e565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156131d25780820151818401526020810190506131b7565b60008484015250505050565b6000601f19601f8301169050919050565b60006131fa82613198565b61320481856131a3565b93506132148185602086016131b4565b61321d816131de565b840191505092915050565b6000602082019050818103600083015261324281846131ef565b905092915050565b61325381613060565b82525050565b600060608201905061326e600083018661316e565b61327b602083018561316e565b613288604083018461324a565b949350505050565b60006020820190506132a5600083018461324a565b92915050565b600080604083850312156132c2576132c1613020565b5b60006132d08582860161304b565b92505060206132e18582860161304b565b9150509250929050565b6132f48161302a565b82525050565b613303816130de565b82525050565b60808201600082015161331f60008501826132eb565b50602082015161333260208501826132eb565b50604082015161334560408501826132eb565b50606082015161335860608501826132fa565b50505050565b60006080820190506133736000830184613309565b92915050565b600080fd5b6000610100828403121561339557613394613379565b5b81905092915050565b600060a082840312156133b4576133b3613379565b5b81905092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6133ff826131de565b810181811067ffffffffffffffff8211171561341e5761341d6133c7565b5b80604052505050565b6000613431613016565b905061343d82826133f6565b919050565b600067ffffffffffffffff82111561345d5761345c6133c7565b5b613466826131de565b9050602081019050919050565b82818337600083830152505050565b600061349561349084613442565b613427565b9050828152602081018484840111156134b1576134b06133c2565b5b6134bc848285613473565b509392505050565b600082601f8301126134d9576134d86133bd565b5b81356134e9848260208601613482565b91505092915050565b60008060006101c0848603121561350c5761350b613020565b5b600061351a8682870161337e565b93505061010061352c8682870161339e565b9250506101a084013567ffffffffffffffff81111561354e5761354d613025565b5b61355a868287016134c4565b9150509250925092565b600061356f82612fc8565b9050919050565b61357f81613564565b82525050565b600060208201905061359a6000830184613576565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006135da8261302a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361360c5761360b6135a0565b5b600182019050919050565b60006136228261302a565b915061362d8361302a565b9250828203905081811115613645576136446135a0565b5b92915050565b600081905092915050565b50565b600061366660008361364b565b915061367182613656565b600082019050919050565b600061368782613659565b9150819050919050565b7f4661696c656420746f2073656e64204574686572000000000000000000000000600082015250565b60006136c76014836131a3565b91506136d282613691565b602082019050919050565b600060208201905081810360008301526136f6816136ba565b9050919050565b7f73747265616d20646f6573206e6f742065786973740000000000000000000000600082015250565b60006137336015836131a3565b915061373e826136fd565b602082019050919050565b6000602082019050818103600083015261376281613726565b9050919050565b600080fd5b600080fd5b60008151905061378281613034565b92915050565b600067ffffffffffffffff82169050919050565b6137a581613788565b81146137b057600080fd5b50565b6000815190506137c28161379c565b92915050565b6000815190506137d781613072565b92915050565b600063ffffffff82169050919050565b6137f6816137dd565b811461380157600080fd5b50565b600081519050613813816137ed565b92915050565b600060ff82169050919050565b61382f81613819565b811461383a57600080fd5b50565b60008151905061384c81613826565b92915050565b600061386561386084613442565b613427565b905082815260208101848484011115613881576138806133c2565b5b61388c8482856131b4565b509392505050565b600082601f8301126138a9576138a86133bd565b5b81516138b9848260208601613852565b91505092915050565b600061018082840312156138d9576138d8613769565b5b6138e4610180613427565b905060006138f484828501613773565b6000830152506020613908848285016137b3565b602083015250604061391c848285016137b3565b6040830152506060613930848285016137b3565b6060830152506080613944848285016137b3565b60808301525060a061395884828501613773565b60a08301525060c061396c848285016137c8565b60c08301525060e061398084828501613804565b60e083015250610100613995848285016137c8565b610100830152506101206139ab8482850161383d565b610120830152506101406139c18482850161383d565b6101408301525061016082015167ffffffffffffffff8111156139e7576139e661376e565b5b6139f384828501613894565b6101608301525092915050565b600060208284031215613a1657613a15613020565b5b600082015167ffffffffffffffff811115613a3457613a33613025565b5b613a40848285016138c2565b91505092915050565b6000613a548261302a565b9150613a5f8361302a565b9250828202613a6d8161302a565b91508282048414831517613a8457613a836135a0565b5b5092915050565b6000613a968261302a565b9150613aa18361302a565b9250828201905080821115613ab957613ab86135a0565b5b92915050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b6000613af56014836131a3565b9150613b0082613abf565b602082019050919050565b60006020820190508181036000830152613b2481613ae8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613b7257607f821691505b602082108103613b8557613b84613b2b565b5b50919050565b7f63616c6c6572206973206e6f74207468652073656e6465722f7265636970696560008201527f6e74000000000000000000000000000000000000000000000000000000000000602082015250565b6000613be76022836131a3565b9150613bf282613b8b565b604082019050919050565b60006020820190508181036000830152613c1681613bda565b9050919050565b7f63616c6c6572206973206e6f742074686520726563697069656e740000000000600082015250565b6000613c53601b836131a3565b9150613c5e82613c1d565b602082019050919050565b60006020820190508181036000830152613c8281613c46565b9050919050565b7f616d6f756e74206973207a65726f000000000000000000000000000000000000600082015250565b6000613cbf600e836131a3565b9150613cca82613c89565b602082019050919050565b60006020820190508181036000830152613cee81613cb2565b9050919050565b600060208284031215613d0b57613d0a613020565b5b6000613d19848285016137c8565b91505092915050565b7f73747265616d206e6f7420737461727465640000000000000000000000000000600082015250565b6000613d586012836131a3565b9150613d6382613d22565b602082019050919050565b60006020820190508181036000830152613d8781613d4b565b9050919050565b7f616d6f756e7420657863656564732074686520617661696c61626c652062616c60008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b6000613dea6024836131a3565b9150613df582613d8e565b604082019050919050565b60006020820190508181036000830152613e1981613ddd565b9050919050565b6000604082019050613e35600083018561316e565b613e42602083018461316e565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613e838261302a565b9150613e8e8361302a565b925082613e9e57613e9d613e49565b5b828204905092915050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000613edf6010836131a3565b9150613eea82613ea9565b602082019050919050565b60006020820190508181036000830152613f0e81613ed2565b9050919050565b7f57726f6e67206465706f73697400000000000000000000000000000000000000600082015250565b6000613f4b600d836131a3565b9150613f5682613f15565b602082019050919050565b60006020820190508181036000830152613f7a81613f3e565b9050919050565b7f57726f6e672073656e6465720000000000000000000000000000000000000000600082015250565b6000613fb7600c836131a3565b9150613fc282613f81565b602082019050919050565b60006020820190508181036000830152613fe681613faa565b9050919050565b7f57726f6e6720746f6b656e000000000000000000000000000000000000000000600082015250565b6000614023600b836131a3565b915061402e82613fed565b602082019050919050565b6000602082019050818103600083015261405281614016565b9050919050565b60008135905061406881613826565b92915050565b60006020828403121561408457614083613020565b5b600061409284828501614059565b91505092915050565b7f496e76616c696420696e70757400000000000000000000000000000000000000600082015250565b60006140d1600d836131a3565b91506140dc8261409b565b602082019050919050565b60006020820190508181036000830152614100816140c4565b9050919050565b7f73747265616d20746f20746865207a65726f2061646472657373000000000000600082015250565b600061413d601a836131a3565b915061414882614107565b602082019050919050565b6000602082019050818103600083015261416c81614130565b9050919050565b7f73747265616d20746f2074686520636f6e747261637420697473656c66000000600082015250565b60006141a9601d836131a3565b91506141b482614173565b602082019050919050565b600060208201905081810360008301526141d88161419c565b9050919050565b7f73747265616d20746f207468652063616c6c6572000000000000000000000000600082015250565b60006142156014836131a3565b9150614220826141df565b602082019050919050565b6000602082019050818103600083015261424481614208565b9050919050565b7f6465706f736974206973207a65726f0000000000000000000000000000000000600082015250565b6000614281600f836131a3565b915061428c8261424b565b602082019050919050565b600060208201905081810360008301526142b081614274565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000813590506142f58161379c565b92915050565b60006020828403121561431157614310613020565b5b600061431f848285016142e6565b91505092915050565b7f737461727454696d65206265666f726520626c6f636b2e74696d657374616d70600082015250565b600061435e6020836131a3565b915061436982614328565b602082019050919050565b6000602082019050818103600083015261438d81614351565b9050919050565b7f496e76616c69642073746f702f73746172742074696d65000000000000000000600082015250565b60006143ca6017836131a3565b91506143d582614394565b602082019050919050565b600060208201905081810360008301526143f9816143bd565b9050919050565b7f496e76616c696420626c6f636b54696d65000000000000000000000000000000600082015250565b60006144366011836131a3565b915061444182614400565b602082019050919050565b6000602082019050818103600083015261446581614429565b9050919050565b61447581613819565b82525050565b6000819050919050565b61448e8161447b565b82525050565b600060e0820190506144a9600083018a61324a565b6144b6602083018961324a565b6144c3604083018861316e565b6144d0606083018761316e565b6144dd608083018661446c565b6144ea60a0830185614485565b6144f760c0830184614485565b98975050505050505050565b7f6465706f73697420736d616c6c6572207468616e2074696d652064656c746100600082015250565b6000614539601f836131a3565b915061454482614503565b602082019050919050565b600060208201905081810360008301526145688161452c565b9050919050565b600061457a8261302a565b91506145858361302a565b92508261459557614594613e49565b5b828206905092915050565b7f4665655261746520746f6f206c61726765000000000000000000000000000000600082015250565b60006145d66011836131a3565b91506145e1826145a0565b602082019050919050565b60006020820190508181036000830152614605816145c9565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006146686026836131a3565b91506146738261460c565b604082019050919050565b600060208201905081810360008301526146978161465b565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006146d46020836131a3565b91506146df8261469e565b602082019050919050565b60006020820190508181036000830152614703816146c7565b9050919050565b600061471582613788565b915061472083613788565b9250828203905067ffffffffffffffff8111156147405761473f6135a0565b5b92915050565b7f73747265616d20626c6f636b6564000000000000000000000000000000000000600082015250565b600061477c600e836131a3565b915061478782614746565b602082019050919050565b600060208201905081810360008301526147ab8161476f565b9050919050565b7f73747265616d2066696e69736865640000000000000000000000000000000000600082015250565b60006147e8600f836131a3565b91506147f3826147b2565b602082019050919050565b60006020820190508181036000830152614817816147db565b9050919050565b6000606082019050614833600083018661324a565b614840602083018561324a565b61484d604083018461316e565b949350505050565b60006148646020840184613089565b905092915050565b61487581613060565b82525050565b600061488a602084018461304b565b905092915050565b600082905092915050565b600060039050919050565b600081905092915050565b6000819050919050565b6148c681613788565b82525050565b60006148d883836148bd565b60208301905092915050565b60006148f360208401846142e6565b905092915050565b6000602082019050919050565b6149118161489d565b61491b81846148a8565b9250614926826148b3565b8060005b8381101561495f5761493c82846148e4565b61494687826148cc565b9650614951836148fb565b92505060018101905061492a565b505050505050565b60006149766020840184614059565b905092915050565b61498781613819565b82525050565b610100820161499f6000830183614855565b6149ac600085018261486c565b506149ba602083018361487b565b6149c760208501826132eb565b506149d56040830183614855565b6149e2604085018261486c565b506149f06060830183614855565b6149fd606085018261486c565b50614a0b6080830183614892565b614a186080850182614908565b50614a2660e0830183614967565b614a3360e085018261497e565b50505050565b600061014082019050614a4f600083018661316e565b614a5c602083018561498d565b818103610120830152614a6f81846131ef565b9050949350505050565b6000604082019050614a8e600083018561324a565b614a9b602083018461316e565b9392505050565b614aab816130de565b8114614ab657600080fd5b50565b600081519050614ac881614aa2565b92915050565b600060208284031215614ae457614ae3613020565b5b6000614af284828501614ab9565b91505092915050565b600081519050919050565b6000614b1182614afb565b614b1b818561364b565b9350614b2b8185602086016131b4565b80840191505092915050565b6000614b438284614b06565b91508190509291505056fea2646970667358221220ed610578467f67c97cc8c6b1743a753ec517bcdbe67e31c048498b45959330db64736f6c63430008110033000000000000000000000000c107ab6ebc7024a1e6123a5ab0d48d6af8a0e4c10000000000000000000000000000000000000000000000000000000000000001000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a87