6 txs
61 calls
constructor
constructor(address _controller, address _metaTxForwarder)
functions
ADD_GUARDIAN_TYPEHASH
viewfunction ADD_GUARDIAN_TYPEHASH() view returns (bytes32)
ADD_TO_WHITELIST_TYPEHASH
viewfunction ADD_TO_WHITELIST_TYPEHASH() view returns (bytes32)
bindableMethods
purefunction bindableMethods() pure returns (bytes4[] methods)
feeCollector
viewfunction feeCollector() view returns (address)
getWhitelist
viewfunction getWhitelist(address wallet) view returns (address[] addresses, uint256[] effectiveTimes)
GUARDIAN_DOMAIN_SEPERATOR
viewfunction GUARDIAN_DOMAIN_SEPERATOR() view returns (bytes32)
GUARDIAN_PENDING_PERIOD
viewfunction GUARDIAN_PENDING_PERIOD() view returns (uint256)
hashStore
viewfunction hashStore() view returns (address)
inheritor
viewfunction inheritor(address wallet) view returns (address _inheritor, uint256 _effectiveTimestamp)
isLocked
viewfunction isLocked(address wallet) view returns (bool)
isWhitelisted
viewfunction isWhitelisted(address wallet, address addr) view returns (bool isWhitelistedAndEffective, uint256 effectiveTime)
LOCK_TYPEHASH
viewfunction LOCK_TYPEHASH() view returns (bytes32)
MAX_GUARDIANS
viewfunction MAX_GUARDIANS() view returns (uint256)
metaTxForwarder
viewfunction metaTxForwarder() view returns (address)
moduleRegistry
viewfunction moduleRegistry() view returns (address)
priceOracle
viewfunction priceOracle() view returns (address)
quotaStore
viewfunction quotaStore() view returns (address)
RECOVER_TYPEHASH
viewfunction RECOVER_TYPEHASH() view returns (bytes32)
REMOVE_FROM_WHITELIST_TYPEHASH
viewfunction REMOVE_FROM_WHITELIST_TYPEHASH() view returns (bytes32)
REMOVE_GUARDIAN_TYPEHASH
viewfunction REMOVE_GUARDIAN_TYPEHASH() view returns (bytes32)
securityStore
viewfunction securityStore() view returns (address)
TOUCH_GRACE_PERIOD
viewfunction TOUCH_GRACE_PERIOD() view returns (uint256)
UNLOCK_TYPEHASH
viewfunction UNLOCK_TYPEHASH() view returns (bytes32)
walletFactory
viewfunction walletFactory() view returns (address)
WHITELIST_DOMAIN_SEPERATOR
viewfunction WHITELIST_DOMAIN_SEPERATOR() view returns (bytes32)
WHITELIST_PENDING_PERIOD
viewfunction WHITELIST_PENDING_PERIOD() view returns (uint256)
whitelistStore
viewfunction whitelistStore() view returns (address)
activate
nonpayablefunction activate()
addGuardian
nonpayablefunction addGuardian(address wallet, address guardian)
addGuardianWA
nonpayablefunction addGuardianWA(tuple request, address guardian)
addToWhitelist
nonpayablefunction addToWhitelist(address wallet, address addr)
addToWhitelistWA
nonpayablefunction addToWhitelistWA(tuple request, address addr)
deactivate
nonpayablefunction deactivate()
inherit
nonpayablefunction inherit(address wallet, address newOwner)
lock
nonpayablefunction lock(address wallet)
lockWA
nonpayablefunction lockWA(tuple request)
recover
nonpayablefunction recover(tuple request, address newOwner)
removeFromWhitelist
nonpayablefunction removeFromWhitelist(address wallet, address addr)
removeFromWhitelistWA
nonpayablefunction removeFromWhitelistWA(tuple request, address addr)
removeGuardian
nonpayablefunction removeGuardian(address wallet, address guardian)
removeGuardianWA
nonpayablefunction removeGuardianWA(tuple request, address guardian)
setInheritor
nonpayablefunction setInheritor(address wallet, address _inheritor, uint32 _waitingPeriod)
unlock
nonpayablefunction unlock(tuple request)
events
Activated
event Activated(address wallet)
Deactivated
event Deactivated(address wallet)
GuardianAdded
event GuardianAdded(address indexed wallet, address guardian, uint256 effectiveTime)
GuardianRemoved
event GuardianRemoved(address indexed wallet, address guardian, uint256 effectiveTime)
Inherited
event Inherited(address indexed wallet, address inheritor, address newOwner)
InheritorChanged
event InheritorChanged(address indexed wallet, address inheritor, uint32 waitingPeriod)
Recovered
event Recovered(address indexed wallet, address newOwner)
WalletLocked
event WalletLocked(address indexed wallet, address by, bool locked)
errors
No errors.
creation bytecode
0x6102006040523480156200001257600080fd5b506040516200508f3803806200508f833981016040819052620000359162000693565b818181818181806001600160a01b03166080816001600160a01b031660601b8152505050806001600160a01b031663b95459e46040518163ffffffff1660e01b815260040160206040518083038186803b1580156200009357600080fd5b505afa158015620000a8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000ce91906200066d565b6001600160a01b031660a0816001600160a01b031660601b81525050806001600160a01b031663d51b3a1b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200012457600080fd5b505afa15801562000139573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200015f91906200066d565b6001600160a01b031660c0816001600160a01b031660601b81525050806001600160a01b03166337423d5e6040518163ffffffff1660e01b815260040160206040518083038186803b158015620001b557600080fd5b505afa158015620001ca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f091906200066d565b6001600160a01b031660e0816001600160a01b031660601b81525050806001600160a01b031663d9d104846040518163ffffffff1660e01b815260040160206040518083038186803b1580156200024657600080fd5b505afa1580156200025b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200028191906200066d565b6001600160a01b0316610100816001600160a01b031660601b81525050806001600160a01b031663cbe45d186040518163ffffffff1660e01b815260040160206040518083038186803b158015620002d857600080fd5b505afa158015620002ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200031391906200066d565b6001600160a01b0316610120816001600160a01b031660601b81525050806001600160a01b031663c5c036996040518163ffffffff1660e01b815260040160206040518083038186803b1580156200036a57600080fd5b505afa1580156200037f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003a591906200066d565b6001600160a01b0316610140816001600160a01b031660601b81525050806001600160a01b0316632630c12f6040518163ffffffff1660e01b815260040160206040518083038186803b158015620003fc57600080fd5b505afa15801562000411573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200043791906200066d565b6001600160a01b0316610160816001600160a01b031660601b81525050806001600160a01b031663c415b95c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200048e57600080fd5b505afa158015620004a3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004c991906200066d565b6001600160a01b0316610180816001600160a01b031660601b8152505050505050506200056760405180606001604052806040518060400160405280600e81526020016d477561726469616e4d6f64756c6560901b8152508152602001604051806040016040528060058152602001640312e322e360dc1b8152508152602001306001600160a01b0316815250620005f460201b620030521760201c565b6101a0526040805160a081018252600f606082019081526e57686974656c6973744d6f64756c6560881b608083015281528151808301835260058152640312e322e360dc1b602082810191909152808301919091523092820192909252620005d89162003052620005f4821b17901c565b6101c0525060601b6001600160601b0319166101e05262000716565b6000804690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8360000151805190602001208460200151805190602001208386604001516040516020016200064f959493929190620006d1565b60405160208183030381529060405280519060200120915050919050565b6000602082840312156200067f578081fd5b81516200068c81620006fd565b9392505050565b60008060408385031215620006a6578081fd5b8251620006b381620006fd565b6020840151909250620006c681620006fd565b809150509250929050565b9485526020850193909352604084019190915260608301526001600160a01b0316608082015260a00190565b6001600160a01b03811681146200071357600080fd5b50565b60805160601c60a05160601c60c05160601c60e05160601c6101005160601c6101205160601c6101405160601c6101605160601c6101805160601c6101a0516101c0516101e05160601c6148036200088c600039508061057752806117335280611b7c5250806106955280610984528061139652806119085280611f75528061259d52508061277052508061078f525080612794525080610653528061094252806116f152806118c65280611b3a5280611f33528061255b5280612acb525080612b3752508061129e52806113725280611647528061181d5280611c665280612696528061301952508061067452806109635280610a585280610efc52806115c6528061171252806118e75280611a785280611b5b5280611e715280611f54528061220f5280612360528061257c52806129685280612b135280612cd05280612f72528061325152806133b652806134b452806136fd52508061274c525080611ef552806131a4528061391452506148036000f3fe608060405234801561001057600080fd5b50600436106102e95760003560e01c80638cff544c11610191578063c415b95c116100e3578063d51b3a1b11610097578063f435f5a711610071578063f435f5a714610547578063f5d7faf71461055a578063f8d3277d14610562576102e9565b8063d51b3a1b1461052f578063d9d1048414610537578063f26cfb661461053f576102e9565b8063c6845210116100c8578063c68452101461050c578063cbe45d181461051f578063d132d1db14610527576102e9565b8063c415b95c146104fc578063c5c0369914610504576102e9565b8063af5bea3611610145578063b6aa057e1161011f578063b6aa057e146104c0578063b6b35272146104d3578063b95459e4146104f4576102e9565b8063af5bea3614610490578063afa3363d146104a3578063b2924620146104b8576102e9565b80639b27a90e116101765780639b27a90e14610462578063a664eb8e14610475578063a79c930c1461047d576102e9565b80638cff544c1461042e5780638fbbddc41461044f576102e9565b806337423d5e1161024a57806357518243116101fe5780637abbb0d5116101d85780637abbb0d514610416578063840fdc781461041e5780638c8ca33c14610426576102e9565b806357518243146103dd5780636d60b18f146103f05780636e7a140a14610403576102e9565b8063422c1d371161022f578063422c1d37146103ad5780634a4fbeec146103b557806351b42b00146103d5576102e9565b806337423d5e1461039d5780633fa5e0cb146103a5576102e9565b806324db3d02116102a157806328ba79ab1161028657806328ba79ab146103565780632e41763c1461036957806330edc0f51461037c576102e9565b806324db3d021461032e5780632630c12f14610341576102e9565b80630b825749116102d25780630b825749146103145780630f15f4c01461031c5780631ec2bad014610326576102e9565b806301ed8ef7146102ee5780630b27c8031461030c575b600080fd5b6102f6610575565b6040516103039190614163565b60405180910390f35b6102f6610599565b6102f66105bd565b6103246105c4565b005b6102f6610613565b61032461033c366004613cb0565b610637565b61034961078d565b6040516103039190613ec4565b610324610364366004613cb0565b6107b1565b610324610377366004613abb565b610d38565b61038f61038a366004613a83565b611299565b604051610303929190614054565b610349611370565b6102f6611394565b6102f66113b8565b6103c86103c3366004613a83565b6113bd565b6040516103039190614148565b6103246113d0565b6103246103eb366004613abb565b611414565b6103246103fe366004613cb0565b6116d5565b610324610411366004613c75565b6118aa565b6102f6611a24565b6102f6611a48565b6102f6611a4f565b61044161043c366004613a83565b611a73565b604051610303929190614002565b61032461045d366004613cb0565b611b1e565b610324610470366004613abb565b611cbf565b610349611ef3565b61032461048b366004613c75565b611f17565b61032461049e366004613af3565b61205d565b6104ab612422565b60405161030391906140e2565b6102f6612427565b6103246104ce366004613cb0565b61244b565b6104e66104e1366004613abb565b612691565b604051610303929190614153565b61034961274a565b61034961276e565b610349612792565b61032461051a366004613abb565b6127b6565b610349612ac9565b6102f6612aed565b610349612b11565b610349612b35565b6102f6612b59565b610324610555366004613a83565b612b60565b6102f6612d9c565b610324610570366004613abb565b612dc0565b7f000000000000000000000000000000000000000000000000000000000000000081565b7fdb3c8034db0ef3555cd9d314db16ce45454e1a01d949a021318374472427defa81565b6201518081565b60006105ce6130c9565b90506105d9816130d9565b7f0cc43938d137e7efade6a531f663e78c1fc75257b0d65ffda2fdaf70cb49cdf9816040516106089190613ec4565b60405180910390a150565b7f04cbded2c195932058c24a5373dfbee6688eb058186f4edbd50275a6143b723081565b7335825b18e8948442abc361b361b007e31130f31463851edceb7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006106bc61317e565b6002887fc2d601f9b2c71cd1f247d67d83d55307ed88800236d40a2069c0a6d2b207ef846106f06080830160608401613a83565b8b604001358b6040516020016107099493929190614198565b6040516020818303038152906040526040518863ffffffff1660e01b815260040161073a979695949392919061424d565b60006040518083038186803b15801561075257600080fd5b505af4158015610766573d6000803e3d6000fd5b50610789925061077f9150506080840160608501613a83565b8260006001613225565b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6107c16080830160608401613a83565b818073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561081f57600080fd5b505afa158015610833573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108579190613a9f565b73ffffffffffffffffffffffffffffffffffffffff1614156108ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a590614590565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff8116158015906108f057506108ee8173ffffffffffffffffffffffffffffffffffffffff1661333f565b155b610926576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a5906144eb565b7335825b18e8948442abc361b361b007e31130f31463851edceb7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006109ab61317e565b60008b7f04cbded2c195932058c24a5373dfbee6688eb058186f4edbd50275a6143b72306109df6080830160608401613a83565b8e604001358e6040516020016109f89493929190614198565b6040516020818303038152906040526040518863ffffffff1660e01b8152600401610a29979695949392919061424d565b60006040518083038186803b158015610a4157600080fd5b505af4158015610a55573d6000803e3d6000fd5b507f000000000000000000000000000000000000000000000000000000000000000092505073ffffffffffffffffffffffffffffffffffffffff8216905063bb058a41610aa86080890160608a01613a83565b8760016040518463ffffffff1660e01b8152600401610ac993929190613f0c565b60206040518083038186803b158015610ae157600080fd5b505afa158015610af5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b199190613c34565b15610bc15773ffffffffffffffffffffffffffffffffffffffff811663a76163d4610b4a6080890160608a01613a83565b874260016040518563ffffffff1660e01b8152600401610b6d9493929190613fa4565b602060405180830381600087803b158015610b8757600080fd5b505af1158015610b9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bbf9190613cf5565b505b610bd16080870160608801613a83565b73ffffffffffffffffffffffffffffffffffffffff166313af4035866040518263ffffffff1660e01b8152600401610c099190613ec4565b600060405180830381600087803b158015610c2357600080fd5b505af1158015610c37573d6000803e3d6000fd5b50610c589250610c509150506080880160608901613a83565b306000613379565b73ffffffffffffffffffffffffffffffffffffffff811663edc2a617610c846080890160608a01613a83565b6040518263ffffffff1660e01b8152600401610ca09190613ec4565b600060405180830381600087803b158015610cba57600080fd5b505af1158015610cce573d6000803e3d6000fd5b50610ce3925050506080870160608801613a83565b73ffffffffffffffffffffffffffffffffffffffff167fc4aef5da6b1f6085ebd05a82a61d94bf83a486f32ab4ac3f7843afeed66b144086604051610d289190613ec4565b60405180910390a2505050505050565b610d4061317e565b15610d77576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a590614344565b8073ffffffffffffffffffffffffffffffffffffffff811615801590610db95750610db78173ffffffffffffffffffffffffffffffffffffffff1661333f565b155b610def576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a5906144eb565b82828073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610e4e57600080fd5b505afa158015610e62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e869190613a9f565b73ffffffffffffffffffffffffffffffffffffffff161415610ed4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a590614590565b6040517f8cff544c0000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000090600090819073ffffffffffffffffffffffffffffffffffffffff841690638cff544c90610f4d908b90600401613ec4565b604080518083038186803b158015610f6457600080fd5b505afa158015610f78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9c9190613b45565b9150915080600014158015610fc6575073ffffffffffffffffffffffffffffffffffffffff821615155b610ffc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a5906143b2565b42811115611036576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a590614420565b61103e6130c9565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146110a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a5906143e9565b6040517fae5967d400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063ae5967d4906110f4908b90600401613ec4565b600060405180830381600087803b15801561110e57600080fd5b505af1158015611122573d6000803e3d6000fd5b50506040517faf5bea3600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8616925063af5bea36915061117d908b906000908190600401613f3d565b600060405180830381600087803b15801561119757600080fd5b505af11580156111ab573d6000803e3d6000fd5b505050506111bb88306000613379565b6040517f13af403500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8916906313af40359061120d908a90600401613ec4565b600060405180830381600087803b15801561122757600080fd5b505af115801561123b573d6000803e3d6000fd5b505050508773ffffffffffffffffffffffffffffffffffffffff167f85c6e43dbd10c1b6d77c7c1da9a4645a2a4555d95a5f5e701ac347317cd085428389604051611287929190613ee5565b60405180910390a25050505050505050565b6060807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639b19251a846040518263ffffffff1660e01b81526004016112f59190613ec4565b60006040518083038186803b15801561130d57600080fd5b505afa158015611321573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526113679190810190613b72565b91509150915091565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600a81565b60006113c882613474565b90505b919050565b60006113da6130c9565b90506113e581613539565b7f749cb6b4c510bc468cf6b9c2086d6f0a54d6b18e25d37bf3200e68eab0880c00816040516106089190613ec4565b61141c61317e565b15611453576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a590614344565b81600061145e6130c9565b90508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16148061155357508173ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156114db57600080fd5b505afa1580156114ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115139190613a9f565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16148015611553575061155182613474565b155b611589576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a59061448e565b6040517fafaee9f100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063afaee9f19061160090859062278d0090600401614002565b600060405180830381600087803b15801561161a57600080fd5b505af115801561162e573d6000803e3d6000fd5b505073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016915063e09e83e39050858561167f42620151806135df565b6040518463ffffffff1660e01b815260040161169d93929190613f73565b600060405180830381600087803b1580156116b757600080fd5b505af11580156116cb573d6000803e3d6000fd5b5050505050505050565b7335825b18e8948442abc361b361b007e31130f31463851edceb7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061175a61317e565b6002887ff4b4ae271275adc850135662bc4e841b47c72bba882d2e0bc8ff83e11e6f23bd61178e6080830160608401613a83565b8b604001358b6040516020016117a79493929190614198565b6040516020818303038152906040526040518863ffffffff1660e01b81526004016117d8979695949392919061424d565b60006040518083038186803b1580156117f057600080fd5b505af4158015611804573d6000803e3d6000fd5b505073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016915063f8d3277d90506118566080850160608601613a83565b836040518363ffffffff1660e01b8152600401611874929190613ee5565b600060405180830381600087803b15801561188e57600080fd5b505af11580156118a2573d6000803e3d6000fd5b505050505050565b7335825b18e8948442abc361b361b007e31130f31463851edceb7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061192f61317e565b6003877f5696502d32dd3c98d271b352ac3c61123af461c8bb2ee7f6a63b68a46aeb29a16119636080830160608401613a83565b8a6040013560405160200161197a9392919061416c565b6040516020818303038152906040526040518863ffffffff1660e01b81526004016119ab979695949392919061424d565b60006040518083038186803b1580156119c357600080fd5b505af41580156119d7573d6000803e3d6000fd5b50611a2192506119f09150506080830160608401613a83565b6119fa8380614681565b6000818110611a0557fe5b9050602002016020810190611a1a9190613a83565b6001613379565b50565b7fc2d601f9b2c71cd1f247d67d83d55307ed88800236d40a2069c0a6d2b207ef8481565b62278d0081565b7fdbfbdf039669d5766c6fd0a5920870f82fdd49034a4103cbda583d4c4176640e81565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16638cff544c846040518263ffffffff1660e01b8152600401611acf9190613ec4565b604080518083038186803b158015611ae657600080fd5b505afa158015611afa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113679190613b45565b7335825b18e8948442abc361b361b007e31130f31463851edceb7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000611ba361317e565b6002887fdb3c8034db0ef3555cd9d314db16ce45454e1a01d949a021318374472427defa611bd76080830160608401613a83565b8b604001358b604051602001611bf09493929190614198565b6040516020818303038152906040526040518863ffffffff1660e01b8152600401611c21979695949392919061424d565b60006040518083038186803b158015611c3957600080fd5b505af4158015611c4d573d6000803e3d6000fd5b505073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016915063e09e83e39050611c9f6080850160608601613a83565b83426040518463ffffffff1660e01b815260040161187493929190613f73565b611cc761317e565b15611cfe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a590614344565b816000611d096130c9565b90508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480611dfe57508173ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611d8657600080fd5b505afa158015611d9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbe9190613a9f565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16148015611dfe5750611dfc82613474565b155b611e34576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a59061448e565b6040517fafaee9f100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063afaee9f190611eab90859062278d0090600401614002565b600060405180830381600087803b158015611ec557600080fd5b505af1158015611ed9573d6000803e3d6000fd5b50505050611eed84846203f4806000613225565b50505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7335825b18e8948442abc361b361b007e31130f31463851edceb7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000611f9c61317e565b6002877fdbfbdf039669d5766c6fd0a5920870f82fdd49034a4103cbda583d4c4176640e611fd06080830160608401613a83565b8a60400135604051602001611fe79392919061416c565b6040516020818303038152906040526040518863ffffffff1660e01b8152600401612018979695949392919061424d565b60006040518083038186803b15801561203057600080fd5b505af4158015612044573d6000803e3d6000fd5b50611a219250610c509150506080830160608401613a83565b61206561317e565b1561209c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a590614344565b8260006120a76130c9565b90508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16148061219c57508173ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561212457600080fd5b505afa158015612138573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061215c9190613a9f565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614801561219c575061219a82613474565b155b6121d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a59061448e565b6040517fafaee9f100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063afaee9f19061224990859062278d0090600401614002565b600060405180830381600087803b15801561226357600080fd5b505af1158015612277573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff84161580156122a3575063ffffffff8316155b806122ed575073ffffffffffffffffffffffffffffffffffffffff8416158015906122d75750624f1a0063ffffffff841610155b80156122ed57506312cc03008363ffffffff1611155b612323576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a590614624565b6040517faf5bea3600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063af5bea369061239990889088908890600401613f3d565b600060405180830381600087803b1580156123b357600080fd5b505af11580156123c7573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167fff3d54be94bfa9ddad9986419c92a9c4b1e9a649ecf3fef10ea6b7d80860df6a8585604051612413929190614028565b60405180910390a25050505050565b606090565b7f5696502d32dd3c98d271b352ac3c61123af461c8bb2ee7f6a63b68a46aeb29a181565b61245b6080830160608401613a83565b818073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156124b957600080fd5b505afa1580156124cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124f19190613a9f565b73ffffffffffffffffffffffffffffffffffffffff16141561253f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a590614590565b7335825b18e8948442abc361b361b007e31130f31463851edceb7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006125c461317e565b60028a7f3aea25321405f61fb6d5dfb4b53be5d64671d80dc2149264e167060f5996b67a6125f86080830160608401613a83565b8d604001358d6040516020016126119493929190614198565b6040516020818303038152906040526040518863ffffffff1660e01b8152600401612642979695949392919061424d565b60006040518083038186803b15801561265a57600080fd5b505af415801561266e573d6000803e3d6000fd5b50611eed92506126879150506080860160608701613a83565b8460006001613622565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b6b3527285856040518363ffffffff1660e01b81526004016126ef929190613ee5565b604080518083038186803b15801561270657600080fd5b505afa15801561271a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061273e9190613c54565b915091505b9250929050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6127be61317e565b156127f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a590614344565b8160006128006130c9565b90508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806128f557508173ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561287d57600080fd5b505afa158015612891573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128b59190613a9f565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480156128f557506128f382613474565b155b61292b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a59061448e565b6040517fafaee9f100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063afaee9f1906129a290859062278d0090600401614002565b600060405180830381600087803b1580156129bc57600080fd5b505af11580156129d0573d6000803e3d6000fd5b5050505083838073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015612a3357600080fd5b505afa158015612a47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a6b9190613a9f565b73ffffffffffffffffffffffffffffffffffffffff161415612ab9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a590614590565b6118a286866203f4806000613622565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f3aea25321405f61fb6d5dfb4b53be5d64671d80dc2149264e167060f5996b67a81565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6203f48081565b612b6861317e565b15612b9f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a590614344565b6000612ba96130c9565b90508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480612c8d57508173ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015612c2657600080fd5b505afa158015612c3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c5e9190613a9f565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b80612d5a57506040517fbb058a4100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063bb058a4190612d0a9085908590600090600401613f0c565b60206040518083038186803b158015612d2257600080fd5b505afa158015612d36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d5a9190613c34565b612d90576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a5906145c7565b61078982826001613379565b7ff4b4ae271275adc850135662bc4e841b47c72bba882d2e0bc8ff83e11e6f23bd81565b612dc861317e565b15612dff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a590614344565b816000612e0a6130c9565b90508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480612eff57508173ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015612e8757600080fd5b505afa158015612e9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ebf9190613a9f565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16148015612eff5750612efd82613474565b155b612f35576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a59061448e565b6040517fafaee9f100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063afaee9f190612fac90859062278d0090600401614002565b600060405180830381600087803b158015612fc657600080fd5b505af1158015612fda573d6000803e3d6000fd5b50506040517ff8d3277d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063f8d3277d915061169d9087908790600401613ee5565b6000804690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8360000151805190602001208460200151805190602001208386604001516040516020016130ab9594939291906141cc565b60405160208183030381529060405280519060200120915050919050565b60006130d36138ee565b90505b90565b8060606130e4612422565b905060005b8151811015611eed578273ffffffffffffffffffffffffffffffffffffffff1663b149206e83838151811061311a57fe5b6020026020010151306040518363ffffffff1660e01b8152600401613140929190614205565b600060405180830381600087803b15801561315a57600080fd5b505af115801561316e573d6000803e3d6000fd5b5050600190920191506130e99050565b6000603836108015906131c657503373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016145b1561321d5761321660206000369050036000368080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506139ab9050565b90506130d6565b5060006130d6565b6040517fa76163d4000000000000000000000000000000000000000000000000000000008152428301907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff82169063a76163d4906132a3908990899087908990600401613fa4565b602060405180830381600087803b1580156132bd57600080fd5b505af11580156132d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132f59190613cf5565b91508573ffffffffffffffffffffffffffffffffffffffff167f3b474d5aea4286914f107a200bc4aefdff380346cf5f4b744aa13f5e7de416ac8684604051610d28929190614002565b6000813f801580159061337257507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708114155b9392505050565b6040517fb03c4b3300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b03c4b33906133ed9086908590600401613fda565b600060405180830381600087803b15801561340757600080fd5b505af115801561341b573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167fb435250c8ab5b0393bace5c2fbf9699773f00b35ef348fc2107df2df331f36648383604051613467929190613fda565b60405180910390a2505050565b6040517f4a4fbeec00000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690634a4fbeec906134e9908590600401613ec4565b60206040518083038186803b15801561350157600080fd5b505afa158015613515573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c89190613c34565b806060613544612422565b905060005b8151811015611eed578273ffffffffffffffffffffffffffffffffffffffff1663b149206e83838151811061357a57fe5b602002602001015160006040518363ffffffff1660e01b81526004016135a1929190614205565b600060405180830381600087803b1580156135bb57600080fd5b505af11580156135cf573d6000803e3d6000fd5b5050600190920191506135499050565b8181018281101561361c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a590614522565b92915050565b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613688576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a59061437b565b73ffffffffffffffffffffffffffffffffffffffff83166136d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a590614457565b6040517fe0bba2a00000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000009060009073ffffffffffffffffffffffffffffffffffffffff83169063e0bba2a09061374f908990600190600401613fda565b60206040518083038186803b15801561376757600080fd5b505afa15801561377b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061379f9190613cf5565b9050600a81106137db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a590614559565b42600282106137e957504284015b6040517feb74483100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063eb74483190613841908a908a9086908a90600401613fa4565b602060405180830381600087803b15801561385b57600080fd5b505af115801561386f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138939190613cf5565b90508673ffffffffffffffffffffffffffffffffffffffff167f6d0391926fd0fcb9e582cc3f9b1d2302bfd0866212cc067d5b137352a23a41bc87836040516138dd929190614002565b60405180910390a250505050505050565b60006038361080159061393657503373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016145b156139a45761321661398960346000369050036000368080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506139c79050565b73ffffffffffffffffffffffffffffffffffffffff166130d6565b50336130d6565b600081602001835110156139be57600080fd5b50016020015190565b600081601401835110156139da57600080fd5b5001602001516c01000000000000000000000000900490565b805161361c816147ab565b600082601f830112613a0e578081fd5b8151613a21613a1c8261470d565b6146e6565b818152915060208083019084810181840286018201871015613a4257600080fd5b60005b84811015613a6157815184529282019290820190600101613a45565b505050505092915050565b600060808284031215613a7d578081fd5b50919050565b600060208284031215613a94578081fd5b8135613372816147ab565b600060208284031215613ab0578081fd5b8151613372816147ab565b60008060408385031215613acd578081fd5b8235613ad8816147ab565b91506020830135613ae8816147ab565b809150509250929050565b600080600060608486031215613b07578081fd5b8335613b12816147ab565b92506020840135613b22816147ab565b9150604084013563ffffffff81168114613b3a578182fd5b809150509250925092565b60008060408385031215613b57578182fd5b8251613b62816147ab565b6020939093015192949293505050565b60008060408385031215613b84578182fd5b825167ffffffffffffffff80821115613b9b578384fd5b818501915085601f830112613bae578384fd5b8151613bbc613a1c8261470d565b80828252602080830192508086018a828387028901011115613bdc578889fd5b8896505b84871015613c0657613bf28b826139f3565b845260019690960195928101928101613be0565b508801519096509350505080821115613c1d578283fd5b50613c2a858286016139fe565b9150509250929050565b600060208284031215613c45578081fd5b81518015158114613372578182fd5b60008060408385031215613c66578182fd5b82518015158114613b62578283fd5b600060208284031215613c86578081fd5b813567ffffffffffffffff811115613c9c578182fd5b613ca884828501613a6c565b949350505050565b60008060408385031215613cc2578182fd5b823567ffffffffffffffff811115613cd8578283fd5b613ce485828601613a6c565b9250506020830135613ae8816147ab565b600060208284031215613d06578081fd5b5051919050565b815260200190565b73ffffffffffffffffffffffffffffffffffffffff169052565b60008284526020808501945082825b85811015613d79578135613d51816147ab565b73ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101613d3e565b509495945050505050565b818352602080840193600091908185020181018584845b87811015613e4e57828403895281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1883603018112613dd9578687fd5b8701803567ffffffffffffffff811115613df1578788fd5b803603891315613dff578788fd5b8086528087830188880137858101870188905299860199601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169094018501935090840190600101613d9b565b5091979650505050505050565b60008151808452815b81811015613e8057602081850181015186830182015201613e64565b81811115613e915782602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152901515604082015260600190565b73ffffffffffffffffffffffffffffffffffffffff938416815291909216602082015263ffffffff909116604082015260600190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff94851681529290931660208301526040820152901515606082015260800190565b73ffffffffffffffffffffffffffffffffffffffff9290921682521515602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff92909216825263ffffffff16602082015260400190565b604080825283519082018190526000906020906060840190828701845b8281101561409457614084848351613d15565b9284019290840190600101614071565b505050838103828501528085516140ab8184614163565b91508387019250845b818110156140d5576140c7838551613d0d565b9385019392506001016140b4565b5090979650505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561413c5783517fffffffff0000000000000000000000000000000000000000000000000000000016835292840192918401916001016140fe565b50909695505050505050565b901515815260200190565b9115158252602082015260400190565b90815260200190565b92835273ffffffffffffffffffffffffffffffffffffffff919091166020830152604082015260600190565b93845273ffffffffffffffffffffffffffffffffffffffff9283166020850152604084019190915216606082015260800190565b94855260208501939093526040840191909152606083015273ffffffffffffffffffffffffffffffffffffffff16608082015260a00190565b7fffffffff0000000000000000000000000000000000000000000000000000000092909216825273ffffffffffffffffffffffffffffffffffffffff16602082015260400190565b600073ffffffffffffffffffffffffffffffffffffffff808a168352808916602084015250866040830152856060830152614287856147a0565b608083015260e060a083015261429d848561473a565b608060e08501526142b361016085018284613d2f565b9150506142c3602086018661473a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff20858403016101008601526142f9838284613d84565b925050506040850135610120840152614315606086018661472d565b614323610140850182613d15565b5082810360c08401526143368185613e5b565b9a9950505050505050505050565b60208082526015908201527f494e56414c49445f54585f41574152455f484153480000000000000000000000604082015260600190565b6020808252600f908201527f494e56414c49445f414444524553530000000000000000000000000000000000604082015260600190565b6020808252600c908201527f4e4f5f494e48455249544f520000000000000000000000000000000000000000604082015260600190565b6020808252600c908201527f554e415554484f52495a45440000000000000000000000000000000000000000604082015260600190565b60208082526009908201527f544f4f5f4541524c590000000000000000000000000000000000000000000000604082015260600190565b6020808252600c908201527f5a45524f5f414444524553530000000000000000000000000000000000000000604082015260600190565b60208082526029908201527f4e4f545f46524f4d5f57414c4c45545f4f525f4f574e45525f4f525f57414c4c60408201527f45545f4c4f434b45440000000000000000000000000000000000000000000000606082015260800190565b6020808252600d908201527f494e56414c49445f4f574e455200000000000000000000000000000000000000604082015260600190565b6020808252600c908201527f4144445f4f564552464c4f570000000000000000000000000000000000000000604082015260600190565b60208082526012908201527f544f4f5f4d414e595f475541524449414e530000000000000000000000000000604082015260600190565b6020808252600f908201527f49535f57414c4c45545f4f574e45520000000000000000000000000000000000604082015260600190565b60208082526024908201527f4e4f545f46524f4d5f57414c4c45545f4f525f4f574e45525f4f525f4755415260408201527f4449414e00000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526023908201527f494e56414c49445f494e48455249544f525f4f525f57414954494e475f50455260408201527f494f440000000000000000000000000000000000000000000000000000000000606082015260800190565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126146b5578283fd5b83018035915067ffffffffffffffff8211156146cf578283fd5b602090810192508102360382131561274357600080fd5b60405181810167ffffffffffffffff8111828210171561470557600080fd5b604052919050565b600067ffffffffffffffff821115614723578081fd5b5060209081020190565b60008235613372816147ab565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261476e578283fd5b830160208101925035905067ffffffffffffffff81111561478e57600080fd5b60208102360383131561274357600080fd5b80600581106113cb57fe5b73ffffffffffffffffffffffffffffffffffffffff81168114611a2157600080fdfea26469706673582212207505fbe551c28f7f8616f5356af71fbeba452426392fd73dbfab7edb86fb6d6e64736f6c63430007000033000000000000000000000000b39e09279d4035c0f92307741d9dd8ed66e74de0000000000000000000000000e915058df18e7efe92af5c44df3f575fba061b64