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)
getStream
viewfunction getStream(uint256 id) view returns (tuple stream)
getTrustedForwarder
viewfunction getTrustedForwarder() view returns (address forwarder)
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
0x60806040526040518060400160405280600581526020017f332e302e30000000000000000000000000000000000000000000000000000000815250600490816200004a919062000630565b50733c499c542cef5e3811e1192ce70d8cc03d5c3359600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506064600b55348015620000b257600080fd5b506040516200541a3803806200541a8339818101604052810190620000d89190620007b2565b620000f8620000ec6200021260201b60201c565b6200025460201b60201c565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036200016a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000161906200086f565b60405180910390fd5b60008203620001b0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001a790620008e1565b60405180910390fd5b82600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160038190555062000209816200031a60201b60201c565b50505062000903565b6000601460003690501015801562000237575062000236336200035d60201b60201c565b5b156200024d57601436033560601c905062000251565b3390505b90565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200043857607f821691505b6020821081036200044e576200044d620003f0565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620004b87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000479565b620004c4868362000479565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620005116200050b6200050584620004dc565b620004e6565b620004dc565b9050919050565b6000819050919050565b6200052d83620004f0565b620005456200053c8262000518565b84845462000486565b825550505050565b600090565b6200055c6200054d565b6200056981848462000522565b505050565b5b8181101562000591576200058560008262000552565b6001810190506200056f565b5050565b601f821115620005e057620005aa8162000454565b620005b58462000469565b81016020851015620005c5578190505b620005dd620005d48562000469565b8301826200056e565b50505b505050565b600082821c905092915050565b60006200060560001984600802620005e5565b1980831691505092915050565b6000620006208383620005f2565b9150826002028217905092915050565b6200063b82620003b6565b67ffffffffffffffff811115620006575762000656620003c1565b5b6200066382546200041f565b6200067082828562000595565b600060209050601f831160018114620006a8576000841562000693578287015190505b6200069f858262000612565b8655506200070f565b601f198416620006b88662000454565b60005b82811015620006e257848901518255600182019150602085019450602081019050620006bb565b86831015620007025784890151620006fe601f891682620005f2565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000749826200071c565b9050919050565b6200075b816200073c565b81146200076757600080fd5b50565b6000815190506200077b8162000750565b92915050565b6200078c81620004dc565b81146200079857600080fd5b50565b600081519050620007ac8162000781565b92915050565b600080600060608486031215620007ce57620007cd62000717565b5b6000620007de868287016200076a565b9350506020620007f1868287016200079b565b925050604062000804868287016200076a565b9150509250925092565b600082825260208201905092915050565b7f7a65726f20616464726573730000000000000000000000000000000000000000600082015250565b600062000857600c836200080e565b915062000864826200081f565b602082019050919050565b600060208201905081810360008301526200088a8162000848565b9050919050565b7f53747265616d206964206973207a65726f000000000000000000000000000000600082015250565b6000620008c96011836200080e565b9150620008d68262000891565b602082019050919050565b60006020820190508181036000830152620008fc81620008ba565b9050919050565b614b0780620009136000396000f3fe608060405234801561001057600080fd5b50600436106101d95760003560e01c806377b53ece116101045780638cd3f064116100a2578063affca93211610071578063affca9321461054a578063b160f9cc14610566578063ce1b815f14610584578063f2fde38b146105a2576101d9565b80638cd3f064146104c05780638da5cb5b146104f0578063978bbdb91461050e57806398daac831461052c576101d9565b80638456cb59116100de5780638456cb591461044e578063873ed48c14610458578063894e9a0d146104745780638bc103e2146104a4576101d9565b806377b53ece146103d05780637a9b2c6c146103ee5780637c5b36481461041e576101d9565b8063486ff0cd1161017c5780635fa7b5841161014b5780635fa7b5841461035c5780636db9241b14610378578063715018a6146103a857806376cdb03b146103b2576101d9565b8063486ff0cd146102be57806355466c37146102dc578063572b6c051461030e5780635c975abb1461033e576101d9565b80631e99d569116101b85780631e99d5691461024857806328f7c3bf146102665780633656eec2146102845780633f4ba83a146102b4576101d9565b8062b98a43146101de5780630322bdef146101fc578063090d23b91461022c575b600080fd5b6101e66105be565b6040516101f39190612f7e565b60405180910390f35b61021660048036038101906102119190613021565b6105e4565b604051610223919061307c565b60405180910390f35b61024660048036038101906102419190613097565b610816565b005b610250610862565b60405161025d91906130d3565b60405180910390f35b61026e610868565b60405161027b91906130d3565b60405180910390f35b61029e60048036038101906102999190613021565b61086e565b6040516102ab91906130d3565b60405180910390f35b6102bc610b18565b005b6102c6610bc2565b6040516102d3919061317e565b60405180910390f35b6102f660048036038101906102f191906131a0565b610c50565b604051610305939291906131dc565b60405180910390f35b61032860048036038101906103239190613097565b610c9a565b604051610335919061307c565b60405180910390f35b610346610cf3565b604051610353919061307c565b60405180910390f35b61037660048036038101906103719190613097565b610d0a565b005b610392600480360381019061038d91906131a0565b610dc3565b60405161039f919061307c565b60405180910390f35b6103b0610f9f565b005b6103ba610fb3565b6040516103c79190613213565b60405180910390f35b6103d8610fd9565b6040516103e59190613213565b60405180910390f35b6104086004803603810190610403919061322e565b610fff565b604051610415919061307c565b60405180910390f35b610438600480360381019061043391906131a0565b61146a565b60405161044591906130d3565b60405180910390f35b61045661148e565b005b610472600480360381019061046d9190613097565b611538565b005b61048e600480360381019061048991906131a0565b611631565b60405161049b91906132e1565b60405180910390f35b6104be60048036038101906104b99190613475565b611697565b005b6104da60048036038101906104d59190613097565b61204c565b6040516104e7919061307c565b60405180910390f35b6104f861206c565b6040516105059190613213565b60405180910390f35b610516612096565b60405161052391906130d3565b60405180910390f35b61053461209c565b6040516105419190613508565b60405180910390f35b610564600480360381019061055f91906131a0565b6120c2565b005b61056e61211b565b60405161057b91906130d3565b60405180910390f35b61058c612121565b6040516105999190613213565b60405180910390f35b6105bc60048036038101906105b79190613097565b61214a565b005b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006105ee6121cd565b6002548311156105fd57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361063657600080fd5b6000831161064357600080fd5b600c6000815461065290613552565b9190508190555060405180606001604052808481526020014281526020018373ffffffffffffffffffffffffffffffffffffffff16815250600d6000600c548152602001908152602001600020600082015181600001556020820151816001015560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509050508260025461070b919061359a565b60028190555060008273ffffffffffffffffffffffffffffffffffffffff1684604051610737906135ff565b60006040518083038185875af1925050503d8060008114610774576040519150601f19603f3d011682016040523d82523d6000602084013e610779565b606091505b50509050806107bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b490613660565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff167f9c74a3eff454be4704451c89978de3c7c598994b70e83bccafa27632a4b805478560405161080391906130d3565b60405180910390a2600191505092915050565b61081e6121cd565b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60035481565b600c5481565b6000826007600082815260200190815260200160002060030160009054906101000a900460ff166108d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108cb906136cc565b60405180910390fd5b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd0ddc75866040518263ffffffff1660e01b815260040161093191906130d3565b600060405180830381865afa15801561094e573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906109779190613983565b90506000600760008781526020019081526020016000206040518060800160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff16151515158152505090506109dc612e9a565b60006109e78861224b565b905082604001518360000151826109fe91906139cc565b610a089190613a0e565b826000018181525050826020015184600001511115610a5c5782602001518460000151610a35919061359a565b82602001818152505081602001518260000151610a52919061359a565b8260000181815250505b83610100015173ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1603610aa4578160000151955050505050610b11565b8360c0015173ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1603610b085781600001518360200151610aef919061359a565b8260400181815250508160400151955050505050610b11565b60009550505050505b5092915050565b610b206121cd565b610b28610cf3565b610b67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5e90613a8e565b60405180910390fd5b6000600160146101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa610bab6123d5565b604051610bb89190613213565b60405180910390a1565b60048054610bcf90613add565b80601f0160208091040260200160405190810160405280929190818152602001828054610bfb90613add565b8015610c485780601f10610c1d57610100808354040283529160200191610c48565b820191906000526020600020905b815481529060010190602001808311610c2b57829003601f168201915b505050505081565b600d6020528060005260406000206000915090508060000154908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905083565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b6000600160149054906101000a900460ff16905090565b610d126121cd565b600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610d6857600080fd5b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000816007600082815260200190815260200160002060030160009054906101000a900460ff16610e29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e20906136cc565b60405180910390fd5b826000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd0ddc75836040518263ffffffff1660e01b8152600401610e8791906130d3565b600060405180830381865afa158015610ea4573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610ecd9190613983565b90508060c0015173ffffffffffffffffffffffffffffffffffffffff16610ef26123d5565b73ffffffffffffffffffffffffffffffffffffffff161480610f4b575080610100015173ffffffffffffffffffffffffffffffffffffffff16610f336123d5565b73ffffffffffffffffffffffffffffffffffffffff16145b610f8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8190613b80565b60405180910390fd5b610f938561240c565b60019350505050919050565b610fa76121cd565b610fb1600061284a565b565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000826007600082815260200190815260200160002060030160009054906101000a900460ff16611065576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105c906136cc565b60405180910390fd5b836000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd0ddc75836040518263ffffffff1660e01b81526004016110c391906130d3565b600060405180830381865afa1580156110e0573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906111099190613983565b905080610100015173ffffffffffffffffffffffffffffffffffffffff1661112f6123d5565b73ffffffffffffffffffffffffffffffffffffffff1614611185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117c90613bec565b60405180910390fd5b600085036111c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bf90613c58565b60405180910390fd5b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd0ddc75886040518263ffffffff1660e01b815260040161122591906130d3565b600060405180830381865afa158015611242573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061126b9190613983565b90506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fb4da144896040518263ffffffff1660e01b81526004016112ca91906130d3565b602060405180830381865afa1580156112e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130b9190613c78565b905042826020015167ffffffffffffffff16111561135e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135590613cf1565b60405180910390fd5b600061136f8984610100015161086e565b9050878110156113b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ab90613d83565b60405180910390fd5b600083610100015190506113ca8a8a8386612910565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638afaa8878b8b6040518363ffffffff1660e01b8152600401611427929190613da3565b600060405180830381600087803b15801561144157600080fd5b505af1158015611455573d6000803e3d6000fd5b50505050600197505050505050505092915050565b6000612710600b548361147d91906139cc565b6114879190613dfb565b9050919050565b6114966121cd565b61149e610cf3565b156114de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d590613e78565b60405180910390fd5b60018060146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586115216123d5565b60405161152e9190613213565b60405180910390a1565b6115406121cd565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361157957600080fd5b60001515600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146115d657600080fd5b6001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611639612ebb565b600760008381526020019081526020016000206040518060800160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff1615151515815250509050919050565b61169f610cf3565b156116df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d690613e78565b60405180910390fd5b60006116ee846020013561146a565b905061271084602001351015611739576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173090613ee4565b60405180910390fd5b806002540160028190555061174c6123d5565b73ffffffffffffffffffffffffffffffffffffffff168460600160208101906117759190613097565b73ffffffffffffffffffffffffffffffffffffffff16146117cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c290613f50565b60405180910390fd5b600960008560000160208101906117e29190613097565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611869576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186090613fbc565b60405180910390fd5b60048460e001602081019061187e9190613ff1565b60ff16106118c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b89061406a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168460400160208101906118ec9190613097565b73ffffffffffffffffffffffffffffffffffffffff1603611942576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611939906140d6565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff1684604001602081019061196c9190613097565b73ffffffffffffffffffffffffffffffffffffffff16036119c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b990614142565b60405180910390fd5b6119ca6123d5565b73ffffffffffffffffffffffffffffffffffffffff168460400160208101906119f39190613097565b73ffffffffffffffffffffffffffffffffffffffff1603611a49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a40906141ae565b60405180910390fd5b6000846020013503611a90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a879061421a565b60405180910390fd5b4284608001600060038110611aa857611aa761423a565b5b602002016020810190611abb919061427e565b67ffffffffffffffff161015611b06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afd906142f7565b60405180910390fd5b83608001600060038110611b1d57611b1c61423a565b5b602002016020810190611b30919061427e565b67ffffffffffffffff1684608001600160038110611b5157611b5061423a565b5b602002016020810190611b64919061427e565b67ffffffffffffffff1611611bae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba590614363565b60405180910390fd5b600084608001600260038110611bc757611bc661423a565b5b602002016020810190611bda919061427e565b67ffffffffffffffff161480611c56575083608001600060038110611c0257611c0161423a565b5b602002016020810190611c15919061427e565b67ffffffffffffffff1684608001600260038110611c3657611c3561423a565b5b602002016020810190611c49919061427e565b67ffffffffffffffff1611155b611c95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8c906143cf565b60405180910390fd5b6000846000016020810190611caa9190613097565b9050846000016020810190611cbf9190613097565b73ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611e2d57846000016020810190611d269190613097565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d505accf611dac6123d5565b3087608001358860600135896000016020810190611dca9190613ff1565b8a602001358b604001356040518863ffffffff1660e01b8152600401611df69796959493929190614417565b600060405180830381600087803b158015611e1057600080fd5b505af1158015611e24573d6000803e3d6000fd5b50505050611e32565b600080fd5b611e63333087602001358473ffffffffffffffffffffffffffffffffffffffff16612ab5909392919063ffffffff16565b611e903330848473ffffffffffffffffffffffffffffffffffffffff16612ab5909392919063ffffffff16565b611e98612ee5565b85608001600060038110611eaf57611eae61423a565b5b602002016020810190611ec2919061427e565b86608001600160038110611ed957611ed861423a565b5b602002016020810190611eec919061427e565b0367ffffffffffffffff16816000018181525050806000015186602001351015611f4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f42906144d2565b60405180910390fd5b60008082600001518860200135611f6291906144f2565b03611f705760009050611f87565b81600001518760200135611f8491906144f2565b90505b81600001518760200135611f9b9190613dfb565b8260200181815250506000600354905060405180608001604052808460200151815260200189602001358152602001838152602001600115158152506007600083815260200190815260200160002060008201518160000155602082015181600101556040820151816002015560608201518160030160006101000a81548160ff021916908315150217905550905050600160035401600381905550612042818988612b37565b5050505050505050565b60096020528060005260406000206000915054906101000a900460ff1681565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600b5481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6120ca6121cd565b6107d0600b541115612111576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121089061456f565b60405180910390fd5b80600b8190555050565b60025481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6121526121cd565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036121c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b890614601565b60405180910390fd5b6121ca8161284a565b50565b6121d56123d5565b73ffffffffffffffffffffffffffffffffffffffff166121f361206c565b73ffffffffffffffffffffffffffffffffffffffff1614612249576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122409061466d565b60405180910390fd5b565b6000816007600082815260200190815260200160002060030160009054906101000a900460ff166122b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a8906136cc565b60405180910390fd5b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd0ddc75856040518263ffffffff1660e01b815260040161230e91906130d3565b600060405180830381865afa15801561232b573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906123549190613983565b9050806020015167ffffffffffffffff1642116123755760009250506123cf565b806040015167ffffffffffffffff164210156123ad57806020015167ffffffffffffffff16426123a5919061359a565b9250506123cf565b806020015181604001516123c1919061468d565b67ffffffffffffffff169250505b50919050565b600060146000369050101580156123f157506123f033610c9a565b5b1561240557601436033560601c9050612409565b3390505b90565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cd0ddc75836040518263ffffffff1660e01b815260040161246991906130d3565b600060405180830381865afa158015612486573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906124af9190613983565b90506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fb4da144846040518263ffffffff1660e01b815260040161250e91906130d3565b602060405180830381865afa15801561252b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061254f9190613c78565b905042826060015167ffffffffffffffff1611156125a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259990614715565b60405180910390fd5b42826040015167ffffffffffffffff1610156125f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ea90614781565b60405180910390fd5b8160c0015173ffffffffffffffffffffffffffffffffffffffff166126166123d5565b73ffffffffffffffffffffffffffffffffffffffff161480156126425750600182610140015160ff1614155b80156126575750600382610140015160ff1614155b1561266157600080fd5b81610100015173ffffffffffffffffffffffffffffffffffffffff166126856123d5565b73ffffffffffffffffffffffffffffffffffffffff161480156126b15750600282610140015160ff1614155b80156126c65750600382610140015160ff1614155b156126d057600080fd5b6000819050600081905060006126ea868660c0015161086e565b905060006126fd8787610100015161086e565b9050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166303e65e6f88836040518363ffffffff1660e01b815260040161275c929190613da3565b600060405180830381600087803b15801561277657600080fd5b505af115801561278a573d6000803e3d6000fd5b5050505060076000888152602001908152602001600020600080820160009055600182016000905560028201600090556003820160006101000a81549060ff021916905550506000811461280957612808866101000151828573ffffffffffffffffffffffffffffffffffffffff16612bcd9092919063ffffffff16565b5b60008214612841576128408660c00151838573ffffffffffffffffffffffffffffffffffffffff16612bcd9092919063ffffffff16565b5b50505050505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600760008681526020019081526020016000206040518060800160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff1615151515815250509050600060076000878152602001908152602001600020600201549050848183602001516129979190613a0e565b6129a1919061359a565b6007600088815260200190815260200160002060010181905550600060076000888152602001908152602001600020600201819055506000600760008881526020019081526020016000206001015403612a385760076000878152602001908152602001600020600080820160009055600182016000905560028201600090556003820160006101000a81549060ff021916905550505b6000839050612a7a856611c37937e0800088612a54919061359a565b8373ffffffffffffffffffffffffffffffffffffffff16612bcd9092919063ffffffff16565b612aac306611c37937e080008373ffffffffffffffffffffffffffffffffffffffff16612bcd9092919063ffffffff16565b50505050505050565b612b31848573ffffffffffffffffffffffffffffffffffffffff166323b872dd868686604051602401612aea939291906147a1565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612c4c565b50505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639556b1c28484846040518463ffffffff1660e01b8152600401612b96939291906149bc565b600060405180830381600087803b158015612bb057600080fd5b505af1158015612bc4573d6000803e3d6000fd5b50505050505050565b612c47838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8585604051602401612c009291906149fc565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612c4c565b505050565b6000612c77828473ffffffffffffffffffffffffffffffffffffffff16612ce390919063ffffffff16565b90506000815114158015612c9c575080806020019051810190612c9a9190614a51565b155b15612cde57826040517f5274afe7000000000000000000000000000000000000000000000000000000008152600401612cd59190613213565b60405180910390fd5b505050565b6060612cf183836000612cf9565b905092915050565b606081471015612d4057306040517fcd786059000000000000000000000000000000000000000000000000000000008152600401612d379190613213565b60405180910390fd5b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051612d699190614aba565b60006040518083038185875af1925050503d8060008114612da6576040519150601f19603f3d011682016040523d82523d6000602084013e612dab565b606091505b5091509150612dbb868383612dc6565b925050509392505050565b606082612ddb57612dd682612e55565b612e4d565b60008251148015612e03575060008473ffffffffffffffffffffffffffffffffffffffff163b145b15612e4557836040517f9996b315000000000000000000000000000000000000000000000000000000008152600401612e3c9190613213565b60405180910390fd5b819050612e4e565b5b9392505050565b600081511115612e685780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405180606001604052806000815260200160008152602001600081525090565b60405180608001604052806000815260200160008152602001600081526020016000151581525090565b604051806040016040528060008152602001600081525090565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000612f44612f3f612f3a84612eff565b612f1f565b612eff565b9050919050565b6000612f5682612f29565b9050919050565b6000612f6882612f4b565b9050919050565b612f7881612f5d565b82525050565b6000602082019050612f936000830184612f6f565b92915050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b612fc081612fad565b8114612fcb57600080fd5b50565b600081359050612fdd81612fb7565b92915050565b6000612fee82612eff565b9050919050565b612ffe81612fe3565b811461300957600080fd5b50565b60008135905061301b81612ff5565b92915050565b6000806040838503121561303857613037612fa3565b5b600061304685828601612fce565b92505060206130578582860161300c565b9150509250929050565b60008115159050919050565b61307681613061565b82525050565b6000602082019050613091600083018461306d565b92915050565b6000602082840312156130ad576130ac612fa3565b5b60006130bb8482850161300c565b91505092915050565b6130cd81612fad565b82525050565b60006020820190506130e860008301846130c4565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561312857808201518184015260208101905061310d565b60008484015250505050565b6000601f19601f8301169050919050565b6000613150826130ee565b61315a81856130f9565b935061316a81856020860161310a565b61317381613134565b840191505092915050565b600060208201905081810360008301526131988184613145565b905092915050565b6000602082840312156131b6576131b5612fa3565b5b60006131c484828501612fce565b91505092915050565b6131d681612fe3565b82525050565b60006060820190506131f160008301866130c4565b6131fe60208301856130c4565b61320b60408301846131cd565b949350505050565b600060208201905061322860008301846131cd565b92915050565b6000806040838503121561324557613244612fa3565b5b600061325385828601612fce565b925050602061326485828601612fce565b9150509250929050565b61327781612fad565b82525050565b61328681613061565b82525050565b6080820160008201516132a2600085018261326e565b5060208201516132b5602085018261326e565b5060408201516132c8604085018261326e565b5060608201516132db606085018261327d565b50505050565b60006080820190506132f6600083018461328c565b92915050565b600080fd5b60006101008284031215613318576133176132fc565b5b81905092915050565b600060a08284031215613337576133366132fc565b5b81905092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61338282613134565b810181811067ffffffffffffffff821117156133a1576133a061334a565b5b80604052505050565b60006133b4612f99565b90506133c08282613379565b919050565b600067ffffffffffffffff8211156133e0576133df61334a565b5b6133e982613134565b9050602081019050919050565b82818337600083830152505050565b6000613418613413846133c5565b6133aa565b90508281526020810184848401111561343457613433613345565b5b61343f8482856133f6565b509392505050565b600082601f83011261345c5761345b613340565b5b813561346c848260208601613405565b91505092915050565b60008060006101c0848603121561348f5761348e612fa3565b5b600061349d86828701613301565b9350506101006134af86828701613321565b9250506101a084013567ffffffffffffffff8111156134d1576134d0612fa8565b5b6134dd86828701613447565b9150509250925092565b60006134f282612f4b565b9050919050565b613502816134e7565b82525050565b600060208201905061351d60008301846134f9565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061355d82612fad565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361358f5761358e613523565b5b600182019050919050565b60006135a582612fad565b91506135b083612fad565b92508282039050818111156135c8576135c7613523565b5b92915050565b600081905092915050565b50565b60006135e96000836135ce565b91506135f4826135d9565b600082019050919050565b600061360a826135dc565b9150819050919050565b7f4661696c656420746f2073656e64204574686572000000000000000000000000600082015250565b600061364a6014836130f9565b915061365582613614565b602082019050919050565b600060208201905081810360008301526136798161363d565b9050919050565b7f73747265616d20646f6573206e6f742065786973740000000000000000000000600082015250565b60006136b66015836130f9565b91506136c182613680565b602082019050919050565b600060208201905081810360008301526136e5816136a9565b9050919050565b600080fd5b600080fd5b60008151905061370581612fb7565b92915050565b600067ffffffffffffffff82169050919050565b6137288161370b565b811461373357600080fd5b50565b6000815190506137458161371f565b92915050565b60008151905061375a81612ff5565b92915050565b600063ffffffff82169050919050565b61377981613760565b811461378457600080fd5b50565b60008151905061379681613770565b92915050565b600060ff82169050919050565b6137b28161379c565b81146137bd57600080fd5b50565b6000815190506137cf816137a9565b92915050565b60006137e86137e3846133c5565b6133aa565b90508281526020810184848401111561380457613803613345565b5b61380f84828561310a565b509392505050565b600082601f83011261382c5761382b613340565b5b815161383c8482602086016137d5565b91505092915050565b6000610180828403121561385c5761385b6136ec565b5b6138676101806133aa565b90506000613877848285016136f6565b600083015250602061388b84828501613736565b602083015250604061389f84828501613736565b60408301525060606138b384828501613736565b60608301525060806138c784828501613736565b60808301525060a06138db848285016136f6565b60a08301525060c06138ef8482850161374b565b60c08301525060e061390384828501613787565b60e0830152506101006139188482850161374b565b6101008301525061012061392e848285016137c0565b61012083015250610140613944848285016137c0565b6101408301525061016082015167ffffffffffffffff81111561396a576139696136f1565b5b61397684828501613817565b6101608301525092915050565b60006020828403121561399957613998612fa3565b5b600082015167ffffffffffffffff8111156139b7576139b6612fa8565b5b6139c384828501613845565b91505092915050565b60006139d782612fad565b91506139e283612fad565b92508282026139f081612fad565b91508282048414831517613a0757613a06613523565b5b5092915050565b6000613a1982612fad565b9150613a2483612fad565b9250828201905080821115613a3c57613a3b613523565b5b92915050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b6000613a786014836130f9565b9150613a8382613a42565b602082019050919050565b60006020820190508181036000830152613aa781613a6b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613af557607f821691505b602082108103613b0857613b07613aae565b5b50919050565b7f63616c6c6572206973206e6f74207468652073656e6465722f7265636970696560008201527f6e74000000000000000000000000000000000000000000000000000000000000602082015250565b6000613b6a6022836130f9565b9150613b7582613b0e565b604082019050919050565b60006020820190508181036000830152613b9981613b5d565b9050919050565b7f63616c6c6572206973206e6f742074686520726563697069656e740000000000600082015250565b6000613bd6601b836130f9565b9150613be182613ba0565b602082019050919050565b60006020820190508181036000830152613c0581613bc9565b9050919050565b7f616d6f756e74206973207a65726f000000000000000000000000000000000000600082015250565b6000613c42600e836130f9565b9150613c4d82613c0c565b602082019050919050565b60006020820190508181036000830152613c7181613c35565b9050919050565b600060208284031215613c8e57613c8d612fa3565b5b6000613c9c8482850161374b565b91505092915050565b7f73747265616d206e6f7420737461727465640000000000000000000000000000600082015250565b6000613cdb6012836130f9565b9150613ce682613ca5565b602082019050919050565b60006020820190508181036000830152613d0a81613cce565b9050919050565b7f616d6f756e7420657863656564732074686520617661696c61626c652062616c60008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b6000613d6d6024836130f9565b9150613d7882613d11565b604082019050919050565b60006020820190508181036000830152613d9c81613d60565b9050919050565b6000604082019050613db860008301856130c4565b613dc560208301846130c4565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613e0682612fad565b9150613e1183612fad565b925082613e2157613e20613dcc565b5b828204905092915050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000613e626010836130f9565b9150613e6d82613e2c565b602082019050919050565b60006020820190508181036000830152613e9181613e55565b9050919050565b7f57726f6e67206465706f73697400000000000000000000000000000000000000600082015250565b6000613ece600d836130f9565b9150613ed982613e98565b602082019050919050565b60006020820190508181036000830152613efd81613ec1565b9050919050565b7f57726f6e672073656e6465720000000000000000000000000000000000000000600082015250565b6000613f3a600c836130f9565b9150613f4582613f04565b602082019050919050565b60006020820190508181036000830152613f6981613f2d565b9050919050565b7f57726f6e6720746f6b656e000000000000000000000000000000000000000000600082015250565b6000613fa6600b836130f9565b9150613fb182613f70565b602082019050919050565b60006020820190508181036000830152613fd581613f99565b9050919050565b600081359050613feb816137a9565b92915050565b60006020828403121561400757614006612fa3565b5b600061401584828501613fdc565b91505092915050565b7f496e76616c696420696e70757400000000000000000000000000000000000000600082015250565b6000614054600d836130f9565b915061405f8261401e565b602082019050919050565b6000602082019050818103600083015261408381614047565b9050919050565b7f73747265616d20746f20746865207a65726f2061646472657373000000000000600082015250565b60006140c0601a836130f9565b91506140cb8261408a565b602082019050919050565b600060208201905081810360008301526140ef816140b3565b9050919050565b7f73747265616d20746f2074686520636f6e747261637420697473656c66000000600082015250565b600061412c601d836130f9565b9150614137826140f6565b602082019050919050565b6000602082019050818103600083015261415b8161411f565b9050919050565b7f73747265616d20746f207468652063616c6c6572000000000000000000000000600082015250565b60006141986014836130f9565b91506141a382614162565b602082019050919050565b600060208201905081810360008301526141c78161418b565b9050919050565b7f6465706f736974206973207a65726f0000000000000000000000000000000000600082015250565b6000614204600f836130f9565b915061420f826141ce565b602082019050919050565b60006020820190508181036000830152614233816141f7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000813590506142788161371f565b92915050565b60006020828403121561429457614293612fa3565b5b60006142a284828501614269565b91505092915050565b7f737461727454696d65206265666f726520626c6f636b2e74696d657374616d70600082015250565b60006142e16020836130f9565b91506142ec826142ab565b602082019050919050565b60006020820190508181036000830152614310816142d4565b9050919050565b7f496e76616c69642073746f702f73746172742074696d65000000000000000000600082015250565b600061434d6017836130f9565b915061435882614317565b602082019050919050565b6000602082019050818103600083015261437c81614340565b9050919050565b7f496e76616c696420626c6f636b54696d65000000000000000000000000000000600082015250565b60006143b96011836130f9565b91506143c482614383565b602082019050919050565b600060208201905081810360008301526143e8816143ac565b9050919050565b6143f88161379c565b82525050565b6000819050919050565b614411816143fe565b82525050565b600060e08201905061442c600083018a6131cd565b61443960208301896131cd565b61444660408301886130c4565b61445360608301876130c4565b61446060808301866143ef565b61446d60a0830185614408565b61447a60c0830184614408565b98975050505050505050565b7f6465706f73697420736d616c6c6572207468616e2074696d652064656c746100600082015250565b60006144bc601f836130f9565b91506144c782614486565b602082019050919050565b600060208201905081810360008301526144eb816144af565b9050919050565b60006144fd82612fad565b915061450883612fad565b92508261451857614517613dcc565b5b828206905092915050565b7f4665655261746520746f6f206c61726765000000000000000000000000000000600082015250565b60006145596011836130f9565b915061456482614523565b602082019050919050565b600060208201905081810360008301526145888161454c565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006145eb6026836130f9565b91506145f68261458f565b604082019050919050565b6000602082019050818103600083015261461a816145de565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006146576020836130f9565b915061466282614621565b602082019050919050565b600060208201905081810360008301526146868161464a565b9050919050565b60006146988261370b565b91506146a38361370b565b9250828203905067ffffffffffffffff8111156146c3576146c2613523565b5b92915050565b7f73747265616d20626c6f636b6564000000000000000000000000000000000000600082015250565b60006146ff600e836130f9565b915061470a826146c9565b602082019050919050565b6000602082019050818103600083015261472e816146f2565b9050919050565b7f73747265616d2066696e69736865640000000000000000000000000000000000600082015250565b600061476b600f836130f9565b915061477682614735565b602082019050919050565b6000602082019050818103600083015261479a8161475e565b9050919050565b60006060820190506147b660008301866131cd565b6147c360208301856131cd565b6147d060408301846130c4565b949350505050565b60006147e7602084018461300c565b905092915050565b6147f881612fe3565b82525050565b600061480d6020840184612fce565b905092915050565b600082905092915050565b600060039050919050565b600081905092915050565b6000819050919050565b6148498161370b565b82525050565b600061485b8383614840565b60208301905092915050565b60006148766020840184614269565b905092915050565b6000602082019050919050565b61489481614820565b61489e818461482b565b92506148a982614836565b8060005b838110156148e2576148bf8284614867565b6148c9878261484f565b96506148d48361487e565b9250506001810190506148ad565b505050505050565b60006148f96020840184613fdc565b905092915050565b61490a8161379c565b82525050565b610100820161492260008301836147d8565b61492f60008501826147ef565b5061493d60208301836147fe565b61494a602085018261326e565b5061495860408301836147d8565b61496560408501826147ef565b5061497360608301836147d8565b61498060608501826147ef565b5061498e6080830183614815565b61499b608085018261488b565b506149a960e08301836148ea565b6149b660e0850182614901565b50505050565b6000610140820190506149d260008301866130c4565b6149df6020830185614910565b8181036101208301526149f28184613145565b9050949350505050565b6000604082019050614a1160008301856131cd565b614a1e60208301846130c4565b9392505050565b614a2e81613061565b8114614a3957600080fd5b50565b600081519050614a4b81614a25565b92915050565b600060208284031215614a6757614a66612fa3565b5b6000614a7584828501614a3c565b91505092915050565b600081519050919050565b6000614a9482614a7e565b614a9e81856135ce565b9350614aae81856020860161310a565b80840191505092915050565b6000614ac68284614a89565b91508190509291505056fea2646970667358221220e4f3728dc6cf54ddf64c317f65edbd85834a42ad29d88c9ad6f6a71a16b9555864736f6c63430008110033000000000000000000000000c107ab6ebc7024a1e6123a5ab0d48d6af8a0e4c10000000000000000000000000000000000000000000000000000000000000001000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a87