0 txs
484 calls
constructor
constructor(address _controller, address _metaTxForwarder)
functions
APPROVE_THEN_CALL_CONTRACT_TYPEHASH
viewfunction APPROVE_THEN_CALL_CONTRACT_TYPEHASH() view returns (bytes32)
APPROVE_TOKEN_TYPEHASH
viewfunction APPROVE_TOKEN_TYPEHASH() view returns (bytes32)
bindableMethods
purefunction bindableMethods() pure returns (bytes4[] methods)
CALL_CONTRACT_TYPEHASH
viewfunction CALL_CONTRACT_TYPEHASH() view returns (bytes32)
CHANGE_DAILY_QUOTE_TYPEHASH
viewfunction CHANGE_DAILY_QUOTE_TYPEHASH() view returns (bytes32)
feeCollector
viewfunction feeCollector() view returns (address)
getDailyQuota
viewfunction getDailyQuota(address wallet) view returns (uint256 total, uint256 spent, uint256 available)
hashStore
viewfunction hashStore() view returns (address)
metaTxForwarder
viewfunction metaTxForwarder() view returns (address)
moduleRegistry
viewfunction moduleRegistry() view returns (address)
priceOracle
viewfunction priceOracle() view returns (address)
QUOTA_PENDING_PERIOD
viewfunction QUOTA_PENDING_PERIOD() view returns (uint256)
quotaStore
viewfunction quotaStore() view returns (address)
securityStore
viewfunction securityStore() view returns (address)
TOUCH_GRACE_PERIOD
viewfunction TOUCH_GRACE_PERIOD() view returns (uint256)
TRANSFER_DOMAIN_SEPERATOR
viewfunction TRANSFER_DOMAIN_SEPERATOR() view returns (bytes32)
TRANSFER_TOKEN_TYPEHASH
viewfunction TRANSFER_TOKEN_TYPEHASH() view returns (bytes32)
walletFactory
viewfunction walletFactory() view returns (address)
whitelistStore
viewfunction whitelistStore() view returns (address)
activate
nonpayablefunction activate()
approveThenCallContract
nonpayablefunction approveThenCallContract(address wallet, address token, address to, uint256 amount, uint256 value, bytes data, bool forceUseQuota) returns (bytes returnData)
approveThenCallContractWA
nonpayablefunction approveThenCallContractWA(tuple request, address token, address to, uint256 amount, uint256 value, bytes data) returns (bytes returnData)
approveToken
nonpayablefunction approveToken(address wallet, address token, address to, uint256 amount, bool forceUseQuota)
approveTokenWA
nonpayablefunction approveTokenWA(tuple request, address token, address to, uint256 amount)
callContract
nonpayablefunction callContract(address wallet, address to, uint256 value, bytes data, bool forceUseQuota) returns (bytes returnData)
callContractWA
nonpayablefunction callContractWA(tuple request, address to, uint256 value, bytes data) returns (bytes returnData)
changeDailyQuota
nonpayablefunction changeDailyQuota(address wallet, uint256 newQuota)
changeDailyQuotaWA
nonpayablefunction changeDailyQuotaWA(tuple request, uint256 newQuota)
deactivate
nonpayablefunction deactivate()
transferToken
nonpayablefunction transferToken(address wallet, address token, address to, uint256 amount, bytes logdata, bool forceUseQuota)
transferTokenWA
nonpayablefunction transferTokenWA(tuple request, address token, address to, uint256 amount, bytes logdata)
events
Activated
event Activated(address wallet)
Approved
event Approved(address wallet, address token, address spender, uint256 amount)
ContractCalled
event ContractCalled(address wallet, address to, uint256 value, bytes data)
Deactivated
event Deactivated(address wallet)
Transfered
event Transfered(address wallet, address token, address to, uint256 amount, bytes logdata)
WalletLocked
event WalletLocked(address indexed wallet, address by, bool locked)
errors
No errors.
creation bytecode
0x6101e06040523480156200001257600080fd5b50604051620044ca380380620044ca833981016040819052620000359162000622565b818181818181806001600160a01b03166080816001600160a01b031660601b8152505050806001600160a01b031663b95459e46040518163ffffffff1660e01b815260040160206040518083038186803b1580156200009357600080fd5b505afa158015620000a8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000ce9190620005fc565b6001600160a01b031660a0816001600160a01b031660601b81525050806001600160a01b031663d51b3a1b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200012457600080fd5b505afa15801562000139573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200015f9190620005fc565b6001600160a01b031660c0816001600160a01b031660601b81525050806001600160a01b03166337423d5e6040518163ffffffff1660e01b815260040160206040518083038186803b158015620001b557600080fd5b505afa158015620001ca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f09190620005fc565b6001600160a01b031660e0816001600160a01b031660601b81525050806001600160a01b031663d9d104846040518163ffffffff1660e01b815260040160206040518083038186803b1580156200024657600080fd5b505afa1580156200025b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002819190620005fc565b6001600160a01b0316610100816001600160a01b031660601b81525050806001600160a01b031663cbe45d186040518163ffffffff1660e01b815260040160206040518083038186803b158015620002d857600080fd5b505afa158015620002ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003139190620005fc565b6001600160a01b0316610120816001600160a01b031660601b81525050806001600160a01b031663c5c036996040518163ffffffff1660e01b815260040160206040518083038186803b1580156200036a57600080fd5b505afa1580156200037f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003a59190620005fc565b6001600160a01b0316610140816001600160a01b031660601b81525050806001600160a01b0316632630c12f6040518163ffffffff1660e01b815260040160206040518083038186803b158015620003fc57600080fd5b505afa15801562000411573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004379190620005fc565b6001600160a01b0316610160816001600160a01b031660601b81525050806001600160a01b031663c415b95c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200048e57600080fd5b505afa158015620004a3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004c99190620005fc565b6001600160a01b0316610180816001600160a01b031660601b8152505050505050506200056760405180606001604052806040518060400160405280600e81526020016d5472616e736665724d6f64756c6560901b8152508152602001604051806040016040528060058152602001640312e322e360dc1b8152508152602001306001600160a01b03168152506200058360201b62001c401760201c565b6101a0525060601b6001600160601b0319166101c052620006a5565b6000804690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f836000015180519060200120846020015180519060200120838660400151604051602001620005de95949392919062000660565b60405160208183030381529060405280519060200120915050919050565b6000602082840312156200060e578081fd5b81516200061b816200068c565b9392505050565b6000806040838503121562000635578081fd5b825162000642816200068c565b602084015190925062000655816200068c565b809150509250929050565b9485526020850193909352604084019190915260608301526001600160a01b0316608082015260a00190565b6001600160a01b0381168114620006a257600080fd5b50565b60805160601c60a05160601c60c05160601c60e05160601c6101005160601c6101205160601c6101405160601c6101605160601c6101805160601c6101a0516101c05160601c613cd7620007f36000395080610789528061095d5280610ac7528061142152806115395280611b2b52508061155d525080610709528061213852806122de525080611581525080610747528061091b5280610a8552806113df52806115a55280611ae9525080610672528061069e5280610e3e52806110ae52806115ed528061161652806116fd52806117c25280611a9a52806124705280612530525080610a23528061203052806126935250806105d95280610768528061093c5280610aa65280610db5528061102552806112a7528061140052806115c95280611a015280611b0a5280611e545250806113a15250806113545280611d93528061279c5250613cd76000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80638bd79ddd1161010f578063c415b95c116100a2578063d9d1048411610071578063d9d1048414610359578063e321531b14610361578063e3562a3614610383578063e9f8db0414610396576101e5565b8063c415b95c14610339578063c5c0369914610341578063cbe45d1814610349578063d51b3a1b14610351576101e5565b8063b345c8c1116100de578063b345c8c11461030e578063b95459e414610316578063bb64cabe1461031e578063bf01ce1114610331576101e5565b80638bd79ddd146102e15780639cdef1e5146102e9578063a664eb8e146102f1578063afa3363d146102f9576101e5565b806337423d5e1161018757806368e5d7e71161015657806368e5d7e7146102a0578063804fd8d9146102b3578063840fdc78146102c657806388666d81146102ce576101e5565b806337423d5e1461027557806344b5087b1461027d57806351953ea61461028557806351b42b0014610298576101e5565b80632483a854116101c35780632483a854146102325780632630c12f1461023a57806326e1c9781461024f57806331ea76b114610262576101e5565b80630c37ef4c146101ea5780630f15f4c01461020857806314c30b6614610212575b600080fd5b6101f26103a9565b6040516101ff91906136aa565b60405180910390f35b6102106103cd565b005b610225610220366004612e13565b61041c565b6040516101ff9190613888565b6101f26106e3565b610242610707565b6040516101ff919061349a565b61021061025d366004613059565b61072b565b61022561027036600461315b565b610886565b610242610a21565b6101f2610a45565b610210610293366004613285565b610a69565b610210610bbd565b6102256102ae366004612eb3565b610c01565b6102106102c1366004612d7c565b610e73565b6101f26110ee565b6102106102dc366004612f36565b6110f5565b6101f2611327565b6101f261132e565b610242611352565b610301611376565b6040516101ff9190613644565b6101f261137b565b61024261139f565b61021061032c3660046130c1565b6113c3565b6101f2611537565b61024261155b565b61024261157f565b6102426115a3565b6102426115c7565b6102426115eb565b61037461036f366004612cdd565b61160f565b6040516101ff93929190613b70565b610210610391366004612d15565b61184f565b6102256103a43660046131ff565b611acb565b7f5d26fd0f24f42b91458dbfab1103638e2751069d9a0e976ead0d06dc61d8c44881565b60006103d7611cb8565b90506103e281611cc8565b7f0cc43938d137e7efade6a531f663e78c1fc75257b0d65ffda2fdaf70cb49cdf981604051610411919061349a565b60405180910390a150565b6060610426611d6d565b15610466576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045d90613992565b60405180910390fd5b886000610471611cb8565b90508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16148061056657508173ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156104ee57600080fd5b505afa158015610502573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105269190612cf9565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16148015610566575061056482611e14565b155b61059c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045d90613a6e565b6040517fafaee9f100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063afaee9f19061061390859062278d00906004016135f0565b600060405180830381600087803b15801561062d57600080fd5b505af1158015610641573d6000803e3d6000fd5b5050505060006106538c8c8c8c611edf565b9050848061066857506106668c8b611ff0565b155b156106c6576106997f00000000000000000000000000000000000000000000000000000000000000008d8d846120be565b6106c67f00000000000000000000000000000000000000000000000000000000000000008d60008b6120be565b6106d38c8b8a8a8a61218e565b9c9b505050505050505050505050565b7f1abaa7a2a14b14fa6512c7a9134df9bb505c491a37f68535dbd3f08222869e4881565b7f000000000000000000000000000000000000000000000000000000000000000081565b7335825b18e8948442abc361b361b007e31130f31463851edceb7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006107b0611d6d565b60028a7f03651c586dcf8446a7e5a13bf0db304ab0ee2009d26debf6048a1f17bf02d1076107e46080830160608401612cdd565b8d604001358d8d8d604051602001610801969594939291906136b3565b6040516020818303038152906040526040518863ffffffff1660e01b8152600401610832979695949392919061389b565b60006040518083038186803b15801561084a57600080fd5b505af415801561085e573d6000803e3d6000fd5b5061087f92506108779150506080860160608701612cdd565b848484611edf565b5050505050565b6060807fbb030a49d1b37364f7119260cc9737cd720c251c3c1030d5e7b6cc0567e290206108b960808b018b8401612cdd565b8a604001358a8a8a8a8a8a6040516108d292919061348a565b6040519081900381206108ee9897969594939291602001613741565b60405160208183030381529060405290507335825b18e8948442abc361b361b007e31130f31463851edceb7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000610984611d6d565b60028f886040518863ffffffff1660e01b81526004016109aa979695949392919061389b565b60006040518083038186803b1580156109c257600080fd5b505af41580156109d6573d6000803e3d6000fd5b506109f792506109ef91505060808b0160608c01612cdd565b898989611edf565b50610a14610a0b60808b0160608c01612cdd565b8887878761218e565b9998505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f8a86a7c966e57488ccc873d575261078b72776cbeaa8a765c7f917c324d42f9881565b7335825b18e8948442abc361b361b007e31130f31463851edceb7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000610aee611d6d565b6002887f1abaa7a2a14b14fa6512c7a9134df9bb505c491a37f68535dbd3f08222869e48610b226080830160608401612cdd565b8b604001358b604051602001610b3b94939291906137d6565b6040516020818303038152906040526040518863ffffffff1660e01b8152600401610b6c979695949392919061389b565b60006040518083038186803b158015610b8457600080fd5b505af4158015610b98573d6000803e3d6000fd5b50610bb99250610bb19150506080840160608501612cdd565b826000612430565b5050565b6000610bc7611cb8565b9050610bd2816125ad565b7f749cb6b4c510bc468cf6b9c2086d6f0a54d6b18e25d37bf3200e68eab0880c0081604051610411919061349a565b6060610c0b611d6d565b15610c42576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045d90613992565b866000610c4d611cb8565b90508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480610d4257508173ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610cca57600080fd5b505afa158015610cde573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d029190612cf9565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16148015610d425750610d4082611e14565b155b610d78576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045d90613a6e565b6040517fafaee9f100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063afaee9f190610def90859062278d00906004016135f0565b600060405180830381600087803b158015610e0957600080fd5b505af1158015610e1d573d6000803e3d6000fd5b505050508380610e345750610e328989611ff0565b155b15610e6657610e667f00000000000000000000000000000000000000000000000000000000000000008a60008a6120be565b610a14898989898961218e565b610e7b611d6d565b15610eb2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045d90613992565b866000610ebd611cb8565b90508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480610fb257508173ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610f3a57600080fd5b505afa158015610f4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f729190612cf9565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16148015610fb25750610fb082611e14565b155b610fe8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045d90613a6e565b6040517fafaee9f100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063afaee9f19061105f90859062278d00906004016135f0565b600060405180830381600087803b15801561107957600080fd5b505af115801561108d573d6000803e3d6000fd5b5050505082806110a457506110a28988612653565b155b156110d5576110d57f00000000000000000000000000000000000000000000000000000000000000008a8a896120be565b6110e3898989898989612721565b505050505050505050565b62278d0081565b6110fd611d6d565b15611134576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045d90613992565b81600061113f611cb8565b90508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16148061123457508173ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156111bc57600080fd5b505afa1580156111d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f49190612cf9565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16148015611234575061123282611e14565b155b61126a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045d90613a6e565b6040517fafaee9f100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063afaee9f1906112e190859062278d00906004016135f0565b600060405180830381600087803b1580156112fb57600080fd5b505af115801561130f573d6000803e3d6000fd5b50505050611321848462015180612430565b50505050565b6201518081565b7fbb030a49d1b37364f7119260cc9737cd720c251c3c1030d5e7b6cc0567e2902081565b7f000000000000000000000000000000000000000000000000000000000000000081565b606090565b7f03651c586dcf8446a7e5a13bf0db304ab0ee2009d26debf6048a1f17bf02d10781565b7f000000000000000000000000000000000000000000000000000000000000000081565b7335825b18e8948442abc361b361b007e31130f31463851edceb7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000611448611d6d565b60028c7f5d26fd0f24f42b91458dbfab1103638e2751069d9a0e976ead0d06dc61d8c44861147c6080830160608401612cdd565b8f604001358f8f8f8f8f60405161149492919061348a565b6040519081900381206114af979695949392916020016136f6565b6040516020818303038152906040526040518863ffffffff1660e01b81526004016114e0979695949392919061389b565b60006040518083038186803b1580156114f857600080fd5b505af415801561150c573d6000803e3d6000fd5b5061152f92506115259150506080880160608901612cdd565b8686868686612721565b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b0f191dc856040518263ffffffff1660e01b815260040161166d919061349a565b60206040518083038186803b15801561168557600080fd5b505afa158015611699573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116bd91906132c8565b6040517f564d3ca700000000000000000000000000000000000000000000000000000000815290935073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063564d3ca79061173290879060040161349a565b60206040518083038186803b15801561174a57600080fd5b505afa15801561175e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061178291906132c8565b6040517fa6ba012700000000000000000000000000000000000000000000000000000000815290925073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063a6ba0127906117f790879060040161349a565b60206040518083038186803b15801561180f57600080fd5b505afa158015611823573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184791906132c8565b929491935050565b611857611d6d565b1561188e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045d90613992565b846000611899611cb8565b90508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16148061198e57508173ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561191657600080fd5b505afa15801561192a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194e9190612cf9565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614801561198e575061198c82611e14565b155b6119c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045d90613a6e565b6040517fafaee9f100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063afaee9f190611a3b90859062278d00906004016135f0565b600060405180830381600087803b158015611a5557600080fd5b505af1158015611a69573d6000803e3d6000fd5b505050506000611a7b88888888611edf565b90508380611a905750611a8e8887611ff0565b155b15611ac157611ac17f00000000000000000000000000000000000000000000000000000000000000008989846120be565b5050505050505050565b60607335825b18e8948442abc361b361b007e31130f31463851edceb7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000611b52611d6d565b60028c7f8a86a7c966e57488ccc873d575261078b72776cbeaa8a765c7f917c324d42f98611b866080830160608401612cdd565b8f604001358f8f8f8f604051611b9d92919061348a565b604051908190038120611bb7969594939291602001613794565b6040516020818303038152906040526040518863ffffffff1660e01b8152600401611be8979695949392919061389b565b60006040518083038186803b158015611c0057600080fd5b505af4158015611c14573d6000803e3d6000fd5b50611c369250611c2d9150506080880160608901612cdd565b8686868661218e565b9695505050505050565b6000804690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f836000015180519060200120846020015180519060200120838660400151604051602001611c99959493929190613807565b604051602081830303815290604052805190602001209150505b919050565b6000611cc2612776565b90505b90565b806060611cd3611376565b905060005b8151811015611321578273ffffffffffffffffffffffffffffffffffffffff1663b149206e838381518110611d0957fe5b6020026020010151306040518363ffffffff1660e01b8152600401611d2f929190613840565b600060405180830381600087803b158015611d4957600080fd5b505af1158015611d5d573d6000803e3d6000fd5b505060019092019150611cd89050565b600060383610801590611db557503373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016145b15611e0c57611e0560206000369050036000368080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506128339050565b9050611cc5565b506000611cc5565b6040517f4a4fbeec00000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690634a4fbeec90611e8990859060040161349a565b60206040518083038186803b158015611ea157600080fd5b505afa158015611eb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ed99190612f61565b92915050565b6000808473ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e87866040518363ffffffff1660e01b8152600401611f1d9291906134bb565b60206040518083038186803b158015611f3557600080fd5b505afa158015611f49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f6d91906132c8565b9050808314611f95578015611f8957611f89868686600061284f565b611f958686868661284f565b80831115611faa57611fa783826129b2565b91505b7f8d924fb660ea5dc99861c06d5104285681bb68ef281ebe73b6245e399a1ce2ff86868686604051611fdf94939291906134e2565b60405180910390a150949350505050565b6040517f439b7b7d00000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063439b7b7d9061206790869086906004016134bb565b60206040518083038186803b15801561207f57600080fd5b505afa158015612093573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b79190612f61565b9392505050565b806120c857611321565b73ffffffffffffffffffffffffffffffffffffffff84166120e857611321565b6040517f71689b2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516906371689b2b90612160908690869086907f0000000000000000000000000000000000000000000000000000000000000000906004016135b8565b600060405180830381600087803b15801561217a57600080fd5b505af1158015611ac1573d6000803e3d6000fd5b60608473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415801561226b57506040517fc7b2e59600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87169063c7b2e5969061221990889060040161349a565b60206040518083038186803b15801561223157600080fd5b505afa158015612245573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122699190612f61565b155b6122a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045d906139c9565b6040517ff182178300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063f18217839061231d908890670de0b6b3a7640000906004016135f0565b60206040518083038186803b15801561233557600080fd5b505afa158015612349573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061236d91906132c8565b156123a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045d906139c9565b6123e686868686868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506129f492505050565b90507f7d533d6faad77168a7f3e416e981e7d4f7b02844ddbbbdd26807b66a5002eb8e868686868660405161241f95949392919061356d565b60405180910390a195945050505050565b6040517fb0f191dc00000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b0f191dc906124a590879060040161349a565b60206040518083038186803b1580156124bd57600080fd5b505afa1580156124d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124f591906132c8565b90508181158061251057506000841180156125105750818411155b15612519575060005b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663054e378286866125614286612acd565b6040518463ffffffff1660e01b815260040161257f93929190613616565b600060405180830381600087803b15801561259957600080fd5b505af11580156110e3573d6000803e3d6000fd5b8060606125b8611376565b905060005b8151811015611321578273ffffffffffffffffffffffffffffffffffffffff1663b149206e8383815181106125ee57fe5b602002602001015160006040518363ffffffff1660e01b8152600401612615929190613840565b600060405180830381600087803b15801561262f57600080fd5b505af1158015612643573d6000803e3d6000fd5b5050600190920191506125bd9050565b6040517fb6b3527200000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b6b35272906126ca90869086906004016134bb565b604080518083038186803b1580156126e157600080fd5b505afa1580156126f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127199190612f7d565b509392505050565b61272d86868686612b0a565b7fc88755fe083d57a3909c60ab246eef52835769b920f0a49045b2b1058afda71286868686868660405161276696959493929190613519565b60405180910390a1505050505050565b6000603836108015906127be57503373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016145b1561282c57611e0561281160346000369050036000368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293925050612c539050565b73ffffffffffffffffffffffffffffffffffffffff16611cc5565b5033611cc5565b6000816020018351101561284657600080fd5b50016020015190565b73ffffffffffffffffffffffffffffffffffffffff831661289c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045d90613a00565b606063095ea7b360e01b83836040516024016128b99291906135f0565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050606061294786866000856129f4565b90506000815160001461296d57818060200190518101906129689190612f61565b612970565b60015b9050806129a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045d90613b39565b50505050505050565b6000828211156129ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045d90613a37565b50900390565b6040517f7122b74c00000000000000000000000000000000000000000000000000000000815260609073ffffffffffffffffffffffffffffffffffffffff861690637122b74c90612a5090600190889088908890600401613b86565b600060405180830381600087803b158015612a6a57600080fd5b505af1158015612a7e573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612ac49190810190612faa565b95945050505050565b81810182811015611ed9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045d90613acb565b73ffffffffffffffffffffffffffffffffffffffff8316612b4657612b40848383604051806020016040528060008152506129f4565b50611321565b606063a9059cbb60e01b8383604051602401612b639291906135f0565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290506060612bf186866000856129f4565b905060008151600014612c175781806020019051810190612c129190612f61565b612c1a565b60015b9050806129a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045d90613b02565b60008160140183511015612c6657600080fd5b5001602001516c01000000000000000000000000900490565b60008083601f840112612c90578182fd5b50813567ffffffffffffffff811115612ca7578182fd5b602083019150836020828501011115612cbf57600080fd5b9250929050565b600060808284031215612cd7578081fd5b50919050565b600060208284031215612cee578081fd5b81356120b781613c6e565b600060208284031215612d0a578081fd5b81516120b781613c6e565b600080600080600060a08688031215612d2c578081fd5b8535612d3781613c6e565b94506020860135612d4781613c6e565b93506040860135612d5781613c6e565b9250606086013591506080860135612d6e81613c93565b809150509295509295909350565b600080600080600080600060c0888a031215612d96578182fd5b8735612da181613c6e565b96506020880135612db181613c6e565b95506040880135612dc181613c6e565b945060608801359350608088013567ffffffffffffffff811115612de3578283fd5b612def8a828b01612c7f565b90945092505060a0880135612e0381613c93565b8091505092959891949750929550565b60008060008060008060008060e0898b031215612e2e578081fd5b8835612e3981613c6e565b97506020890135612e4981613c6e565b96506040890135612e5981613c6e565b9550606089013594506080890135935060a089013567ffffffffffffffff811115612e82578182fd5b612e8e8b828c01612c7f565b90945092505060c0890135612ea281613c93565b809150509295985092959890939650565b60008060008060008060a08789031215612ecb578182fd5b8635612ed681613c6e565b95506020870135612ee681613c6e565b945060408701359350606087013567ffffffffffffffff811115612f08578283fd5b612f1489828a01612c7f565b9094509250506080870135612f2881613c93565b809150509295509295509295565b60008060408385031215612f48578182fd5b8235612f5381613c6e565b946020939093013593505050565b600060208284031215612f72578081fd5b81516120b781613c93565b60008060408385031215612f8f578182fd5b8251612f9a81613c93565b6020939093015192949293505050565b600060208284031215612fbb578081fd5b815167ffffffffffffffff80821115612fd2578283fd5b818401915084601f830112612fe5578283fd5b815181811115612ff3578384fd5b60405160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401168201018181108482111715613031578586fd5b604052818152838201602001871015613048578485fd5b611c36826020830160208701613c42565b6000806000806080858703121561306e578182fd5b843567ffffffffffffffff811115613084578283fd5b61309087828801612cc6565b94505060208501356130a181613c6e565b925060408501356130b181613c6e565b9396929550929360600135925050565b60008060008060008060a087890312156130d9578384fd5b863567ffffffffffffffff808211156130f0578586fd5b6130fc8a838b01612cc6565b97506020890135915061310e82613c6e565b90955060408801359061312082613c6e565b909450606088013593506080880135908082111561313c578384fd5b5061314989828a01612c7f565b979a9699509497509295939492505050565b600080600080600080600060c0888a031215613175578081fd5b873567ffffffffffffffff8082111561318c578283fd5b6131988b838c01612cc6565b985060208a013591506131aa82613c6e565b9096506040890135906131bc82613c6e565b909550606089013594506080890135935060a089013590808211156131df578283fd5b506131ec8a828b01612c7f565b989b979a50959850939692959293505050565b600080600080600060808688031215613216578283fd5b853567ffffffffffffffff8082111561322d578485fd5b61323989838a01612cc6565b96506020880135915061324b82613c6e565b9094506040870135935060608701359080821115613267578283fd5b5061327488828901612c7f565b969995985093965092949392505050565b60008060408385031215613297578182fd5b823567ffffffffffffffff8111156132ad578283fd5b6132b985828601612cc6565b95602094909401359450505050565b6000602082840312156132d9578081fd5b5051919050565b73ffffffffffffffffffffffffffffffffffffffff169052565b60008284526020808501945082825b8581101561334457813561331c81613c6e565b73ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101613309565b509495945050505050565b818352602080840193600091908185020181018584845b878110156133eb57828403895281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18836030181126133a4578687fd5b8701803567ffffffffffffffff8111156133bc578788fd5b8036038913156133ca578788fd5b6133d786828985016133f8565b9a87019a9550505090840190600101613366565b5091979650505050505050565b600082845282826020860137806020848601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85011685010190509392505050565b60008151808452613458816020860160208601613c42565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000828483379101908152919050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9485168152928416602084015292166040820152606081019190915260800190565b600073ffffffffffffffffffffffffffffffffffffffff8089168352808816602084015280871660408401525084606083015260a0608083015261356160a0830184866133f8565b98975050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff8088168352808716602084015250846040830152608060608301526135ad6080830184866133f8565b979650505050505050565b73ffffffffffffffffffffffffffffffffffffffff948516815292841660208401526040830191909152909116606082015260800190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9390931683526020830191909152604082015260600190565b6020808252825182820181905260009190848201906040850190845b8181101561369e5783517fffffffff000000000000000000000000000000000000000000000000000000001683529284019291840191600101613660565b50909695505050505050565b90815260200190565b95865273ffffffffffffffffffffffffffffffffffffffff948516602087015260408601939093529083166060850152909116608083015260a082015260c00190565b96875273ffffffffffffffffffffffffffffffffffffffff958616602088015260408701949094529184166060860152909216608084015260a083019190915260c082015260e00190565b97885273ffffffffffffffffffffffffffffffffffffffff9687166020890152604088019590955292851660608701529316608085015260a084019290925260c083019190915260e08201526101000190565b95865273ffffffffffffffffffffffffffffffffffffffff9485166020870152604086019390935292166060840152608083019190915260a082015260c00190565b93845273ffffffffffffffffffffffffffffffffffffffff9290921660208401526040830152606082015260800190565b94855260208501939093526040840191909152606083015273ffffffffffffffffffffffffffffffffffffffff16608082015260a00190565b7fffffffff0000000000000000000000000000000000000000000000000000000092909216825273ffffffffffffffffffffffffffffffffffffffff16602082015260400190565b6000602082526120b76020830184613440565b600073ffffffffffffffffffffffffffffffffffffffff808a1683528089166020840152508660408301528560608301526138d585613c37565b608083015260e060a08301526138eb8485613bd1565b608060e0850152613901610160850182846132fa565b9150506139116020860186613bd1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff208584030161010086015261394783828461334f565b9250505060408501356101208401526139636060860186613bc4565b6139716101408501826132e0565b5082810360c08401526139848185613440565b9a9950505050505050505050565b60208082526015908201527f494e56414c49445f54585f41574152455f484153480000000000000000000000604082015260600190565b6020808252600f908201527f43414c4c5f444953414c4c4f5745440000000000000000000000000000000000604082015260600190565b6020808252600d908201527f494e56414c49445f544f4b454e00000000000000000000000000000000000000604082015260600190565b6020808252600d908201527f5355425f554e444552464c4f5700000000000000000000000000000000000000604082015260600190565b60208082526029908201527f4e4f545f46524f4d5f57414c4c45545f4f525f4f574e45525f4f525f57414c4c60408201527f45545f4c4f434b45440000000000000000000000000000000000000000000000606082015260800190565b6020808252600c908201527f4144445f4f564552464c4f570000000000000000000000000000000000000000604082015260600190565b60208082526015908201527f45524332305f5452414e534645525f4641494c45440000000000000000000000604082015260600190565b60208082526014908201527f45524332305f415050524f56455f4641494c4544000000000000000000000000604082015260600190565b9283526020830191909152604082015260600190565b600060ff8616825273ffffffffffffffffffffffffffffffffffffffff8516602083015283604083015260806060830152611c366080830184613440565b600082356120b781613c6e565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613c05578283fd5b830160208101925035905067ffffffffffffffff811115613c2557600080fd5b602081023603831315612cbf57600080fd5b8060058110611cb357fe5b60005b83811015613c5d578181015183820152602001613c45565b838111156113215750506000910152565b73ffffffffffffffffffffffffffffffffffffffff81168114613c9057600080fd5b50565b8015158114613c9057600080fdfea2646970667358221220340b52b18c986023465d22bab59e371777d70f64f9ec357141b9122d82d9d63664736f6c63430007000033000000000000000000000000b39e09279d4035c0f92307741d9dd8ed66e74de0000000000000000000000000e915058df18e7efe92af5c44df3f575fba061b64