@ensuro/core 2.8.2 → 2.8.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/contracts/ERC4626AssetManager.sol/ERC4626AssetManager.json +2 -2
- package/build/contracts/ERC4626PlusVaultAssetManager.sol/ERC4626PlusVaultAssetManager.json +269 -0
- package/contracts/ERC4626AssetManager.sol +6 -5
- package/contracts/ERC4626PlusVaultAssetManager.sol +105 -0
- package/package.json +1 -1
|
@@ -231,8 +231,8 @@
|
|
|
231
231
|
"type": "function"
|
|
232
232
|
}
|
|
233
233
|
],
|
|
234
|
-
"bytecode": "0x60c06040523480156200001157600080fd5b50604051620017663803806200176683398101604081905262000034916200015b565b816001600160a01b038116620000b75760405162461bcd60e51b815260206004820152603c60248201527f4c69717569646974795468726573686f6c6441737365744d616e616765723a2060448201527f61737365742063616e6e6f74206265207a65726f20616464726573730000000060648201526084015b60405180910390fd5b6001600160a01b0390811660805281166200012f5760405162461bcd60e51b815260206004820152603160248201527f4552433436323641737365744d616e616765723a207661756c742063616e6e6f60448201527074206265207a65726f206164647265737360781b6064820152608401620000ae565b6001600160a01b031660a052506200019a565b6001600160a01b03811681146200015857600080fd5b50565b600080604083850312156200016f57600080fd5b82516200017c8162000142565b60208401519092506200018f8162000142565b809150509250929050565b60805160a05161154b6200021b6000396000818161069e015281816109f001528181610ac201528181610e330152610f370152600081816101680152818161025b01528181610356015281816104ad015281816105cf015281816108380152818161092601528181610a2001528181610c460152610f88015261154b6000f3fe608060405234801561001057600080fd5b50600436106100a85760003560e01c80634eb978a4116100715780634eb978a41461011b5780637d7c2a1c146101235780638d7ddd901461012b578063948cb71914610133578063cec16f3f1461013b578063f9c4fd1b1461014357600080fd5b8062a9bb8d146100ad57806301ffc9a7146100c25780631014a0c2146100ea5780633b6612c81461010b5780634dd93bd314610113575b600080fd5b6100c06100bb36600461121f565b61014b565b005b6100d56100d036600461124b565b610454565b60405190151581526020015b60405180910390f35b6100fd6100f8366004611275565b61048b565b6040519081526020016100e1565b6100fd6105cb565b6100fd610686565b6100fd610778565b6100c0610820565b6100fd610922565b6100c06109d1565b6100fd610a8d565b6100fd610c42565b6000805160206114f6833981519152600019841461024d576102027f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e8919061128e565b6101f390600a6113ab565b6101fd90866113ba565b610cf9565b815463ffffffff191663ffffffff9190911617815560266040518581527f7bc647fe5043209e2019aa3503b79c1b0dd83eb61c56013d373a7584ff6bfb139060200160405180910390a25b6000198314610348576102f07f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102db919061128e565b6102e690600a6113ab565b6101fd90856113ba565b815463ffffffff919091166401000000000267ffffffff000000001990911617815560276040518481527f7bc647fe5043209e2019aa3503b79c1b0dd83eb61c56013d373a7584ff6bfb139060200160405180910390a25b6000198214610446576103eb7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d6919061128e565b6103e190600a6113ab565b6101fd90846113ba565b815463ffffffff91909116600160401b026bffffffff00000000000000001990911617815560286040518381527f7bc647fe5043209e2019aa3503b79c1b0dd83eb61c56013d373a7584ff6bfb139060200160405180910390a25b5061044f610d62565b505050565b60006001600160e01b031982166301ffc9a760e01b148061048557506001600160e01b03198216631e670a9760e21b145b92915050565b6040516370a0823160e01b815230600482015260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa1580156104f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051891906113dc565b90508281106105845760405162461bcd60e51b815260206004820152602d60248201527f4e6f206e65656420746f20726566696c6c207468652077616c6c657420666f7260448201526c081d1a1a5cc81c185e5b595b9d609a1b60648201526084015b60405180910390fd5b600061058e610686565b905081610599610c42565b6105a390866113f5565b6105ad9190611408565b9250808311156105bb578092505b6105c483610e07565b5050919050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561062b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064f919061128e565b61065a90600a6113ab565b6000805160206114f6833981519152546106819190600160401b900463ffffffff1661141b565b905090565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906307a2d13a9082906370a0823190602401602060405180830381865afa1580156106f5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071991906113dc565b6040518263ffffffff1660e01b815260040161073791815260200190565b602060405180830381865afa158015610754573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061068191906113dc565b600080610783610686565b6000805160206114f68339815191528054919250906000906107b590600160601b90046001600160801b03168461143a565b90506107c083610ea9565b82546001600160801b0391909116600160601b02600160601b600160e01b03199091161782556040518181527f731c439c5bae15be1344eec709967e046b4f7d3f7e37abeffc5247f448fa18bf9060200160405180910390a19392505050565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610887573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ab91906113dc565b90506108b56105cb565b8111156108d9576108d66108c7610c42565b6108d19083611408565b610f12565b50565b6108e1610922565b8110156108d657600061090d6108f5610686565b836108fe610c42565b6109089190611408565b610f6e565b9050801561091e5761091e81610e07565b5050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610982573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a6919061128e565b6109b190600a6113ab565b6000805160206114f683398151915254610681919063ffffffff1661141b565b6109d9610f86565b60405163095ea7b360e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015260001960248301527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303816000875af1158015610a69573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d69190611461565b6000806000805160206114f68339815191526040516370a0823160e01b81523060048201529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ba0876529082906370a0823190602401602060405180830381865afa158015610b11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3591906113dc565b6040516001600160e01b031960e084901b1681526004810191909152306024820181905260448201526064016020604051808303816000875af1158015610b80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba491906113dc565b8254909150610bc390600160601b90046001600160801b03168261143a565b8254600160601b600160e01b03191683556040518281529093507fb82d4e0870bf4ae7236ad1de74d6612d04d1b805b47d98c2f40088a193d87c659060200160405180910390a16040518381527f731c439c5bae15be1344eec709967e046b4f7d3f7e37abeffc5247f448fa18bf9060200160405180910390a1505090565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ca2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc6919061128e565b610cd190600a6113ab565b6000805160206114f6833981519152546106819190640100000000900463ffffffff1661141b565b600063ffffffff821115610d5e5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b606482015260840161057b565b5090565b6000805160206114f6833981519152805463ffffffff64010000000082048116911611801590610daa5750805463ffffffff600160401b820481166401000000009092041611155b6108d65760405162461bcd60e51b815260206004820152602860248201527f56616c69646174696f6e3a204c6971756964697479206c696d69747320617265604482015267081a5b9d985b1a5960c21b606482015260840161057b565b610e10816110d9565b604051632d182be560e21b815260048101829052306024820181905260448201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b460af94906064015b6020604051808303816000875af1158015610e85573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091e91906113dc565b60006001600160801b03821115610d5e5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b606482015260840161057b565b610f1b81611190565b604051636e553f6560e01b8152600481018290523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636e553f6590604401610e66565b6000818310610f7d5781610f7f565b825b9392505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316306001600160a01b0316634d15eb036040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110129190611498565b6001600160a01b031663e5a6b10f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561104f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110739190611498565b6001600160a01b0316146110ba5760405162461bcd60e51b815260206004820152600e60248201526d082e6e6cae840dad2e6dac2e8c6d60931b604482015260640161057b565b6000805160206114f683398151915280546001600160e01b0319169055565b6000805160206114f6833981519152805461110d9061110890600160601b90046001600160801b031684610f6e565b610ea9565b81548290600c9061112f908490600160601b90046001600160801b03166114b5565b92506101000a8154816001600160801b0302191690836001600160801b031602179055507fb82d4e0870bf4ae7236ad1de74d6612d04d1b805b47d98c2f40088a193d87c658260405161118491815260200190565b60405180910390a15050565b6000805160206114f68339815191526111a882610ea9565b81548290600c906111ca908490600160601b90046001600160801b03166114d5565b92506101000a8154816001600160801b0302191690836001600160801b031602179055507f0f0cdeac88e111e1dd9b9f043e8c671053dedfbaeccabfb144fd51a4f870fcf48260405161118491815260200190565b60008060006060848603121561123457600080fd5b505081359360208301359350604090920135919050565b60006020828403121561125d57600080fd5b81356001600160e01b031981168114610f7f57600080fd5b60006020828403121561128757600080fd5b5035919050565b6000602082840312156112a057600080fd5b815160ff81168114610f7f57600080fd5b634e487b7160e01b600052601160045260246000fd5b600181815b808511156113025781600019048211156112e8576112e86112b1565b808516156112f557918102915b93841c93908002906112cc565b509250929050565b60008261131957506001610485565b8161132657506000610485565b816001811461133c576002811461134657611362565b6001915050610485565b60ff841115611357576113576112b1565b50506001821b610485565b5060208310610133831016604e8410600b8410161715611385575081810a610485565b61138f83836112c7565b80600019048211156113a3576113a36112b1565b029392505050565b6000610f7f60ff84168361130a565b6000826113d757634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156113ee57600080fd5b5051919050565b80820180821115610485576104856112b1565b81810381811115610485576104856112b1565b6000816000190483118215151615611435576114356112b1565b500290565b818103600083128015838313168383128216171561145a5761145a6112b1565b5092915050565b60006020828403121561147357600080fd5b81518015158114610f7f57600080fd5b6001600160a01b03811681146108d657600080fd5b6000602082840312156114aa57600080fd5b8151610f7f81611483565b6001600160801b0382811682821603908082111561145a5761145a6112b1565b6001600160801b0381811683821601908082111561145a5761145a6112b156fe2285f21cf946f4f139f84d60d1bd42e41b7cecbb3685384f294f426ac09f5f46a264697066735822122052438e7c30c649c8ec086d78319a29bc7a4e80492cc41da1830a3893941c9e4764736f6c63430008100033",
|
|
235
|
-
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a85760003560e01c80634eb978a4116100715780634eb978a41461011b5780637d7c2a1c146101235780638d7ddd901461012b578063948cb71914610133578063cec16f3f1461013b578063f9c4fd1b1461014357600080fd5b8062a9bb8d146100ad57806301ffc9a7146100c25780631014a0c2146100ea5780633b6612c81461010b5780634dd93bd314610113575b600080fd5b6100c06100bb36600461121f565b61014b565b005b6100d56100d036600461124b565b610454565b60405190151581526020015b60405180910390f35b6100fd6100f8366004611275565b61048b565b6040519081526020016100e1565b6100fd6105cb565b6100fd610686565b6100fd610778565b6100c0610820565b6100fd610922565b6100c06109d1565b6100fd610a8d565b6100fd610c42565b6000805160206114f6833981519152600019841461024d576102027f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e8919061128e565b6101f390600a6113ab565b6101fd90866113ba565b610cf9565b815463ffffffff191663ffffffff9190911617815560266040518581527f7bc647fe5043209e2019aa3503b79c1b0dd83eb61c56013d373a7584ff6bfb139060200160405180910390a25b6000198314610348576102f07f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102db919061128e565b6102e690600a6113ab565b6101fd90856113ba565b815463ffffffff919091166401000000000267ffffffff000000001990911617815560276040518481527f7bc647fe5043209e2019aa3503b79c1b0dd83eb61c56013d373a7584ff6bfb139060200160405180910390a25b6000198214610446576103eb7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d6919061128e565b6103e190600a6113ab565b6101fd90846113ba565b815463ffffffff91909116600160401b026bffffffff00000000000000001990911617815560286040518381527f7bc647fe5043209e2019aa3503b79c1b0dd83eb61c56013d373a7584ff6bfb139060200160405180910390a25b5061044f610d62565b505050565b60006001600160e01b031982166301ffc9a760e01b148061048557506001600160e01b03198216631e670a9760e21b145b92915050565b6040516370a0823160e01b815230600482015260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa1580156104f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051891906113dc565b90508281106105845760405162461bcd60e51b815260206004820152602d60248201527f4e6f206e65656420746f20726566696c6c207468652077616c6c657420666f7260448201526c081d1a1a5cc81c185e5b595b9d609a1b60648201526084015b60405180910390fd5b600061058e610686565b905081610599610c42565b6105a390866113f5565b6105ad9190611408565b9250808311156105bb578092505b6105c483610e07565b5050919050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561062b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064f919061128e565b61065a90600a6113ab565b6000805160206114f6833981519152546106819190600160401b900463ffffffff1661141b565b905090565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906307a2d13a9082906370a0823190602401602060405180830381865afa1580156106f5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071991906113dc565b6040518263ffffffff1660e01b815260040161073791815260200190565b602060405180830381865afa158015610754573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061068191906113dc565b600080610783610686565b6000805160206114f68339815191528054919250906000906107b590600160601b90046001600160801b03168461143a565b90506107c083610ea9565b82546001600160801b0391909116600160601b02600160601b600160e01b03199091161782556040518181527f731c439c5bae15be1344eec709967e046b4f7d3f7e37abeffc5247f448fa18bf9060200160405180910390a19392505050565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610887573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ab91906113dc565b90506108b56105cb565b8111156108d9576108d66108c7610c42565b6108d19083611408565b610f12565b50565b6108e1610922565b8110156108d657600061090d6108f5610686565b836108fe610c42565b6109089190611408565b610f6e565b9050801561091e5761091e81610e07565b5050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610982573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a6919061128e565b6109b190600a6113ab565b6000805160206114f683398151915254610681919063ffffffff1661141b565b6109d9610f86565b60405163095ea7b360e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015260001960248301527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303816000875af1158015610a69573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d69190611461565b6000806000805160206114f68339815191526040516370a0823160e01b81523060048201529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ba0876529082906370a0823190602401602060405180830381865afa158015610b11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3591906113dc565b6040516001600160e01b031960e084901b1681526004810191909152306024820181905260448201526064016020604051808303816000875af1158015610b80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba491906113dc565b8254909150610bc390600160601b90046001600160801b03168261143a565b8254600160601b600160e01b03191683556040518281529093507fb82d4e0870bf4ae7236ad1de74d6612d04d1b805b47d98c2f40088a193d87c659060200160405180910390a16040518381527f731c439c5bae15be1344eec709967e046b4f7d3f7e37abeffc5247f448fa18bf9060200160405180910390a1505090565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ca2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc6919061128e565b610cd190600a6113ab565b6000805160206114f6833981519152546106819190640100000000900463ffffffff1661141b565b600063ffffffff821115610d5e5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b606482015260840161057b565b5090565b6000805160206114f6833981519152805463ffffffff64010000000082048116911611801590610daa5750805463ffffffff600160401b820481166401000000009092041611155b6108d65760405162461bcd60e51b815260206004820152602860248201527f56616c69646174696f6e3a204c6971756964697479206c696d69747320617265604482015267081a5b9d985b1a5960c21b606482015260840161057b565b610e10816110d9565b604051632d182be560e21b815260048101829052306024820181905260448201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b460af94906064015b6020604051808303816000875af1158015610e85573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091e91906113dc565b60006001600160801b03821115610d5e5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b606482015260840161057b565b610f1b81611190565b604051636e553f6560e01b8152600481018290523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636e553f6590604401610e66565b6000818310610f7d5781610f7f565b825b9392505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316306001600160a01b0316634d15eb036040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110129190611498565b6001600160a01b031663e5a6b10f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561104f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110739190611498565b6001600160a01b0316146110ba5760405162461bcd60e51b815260206004820152600e60248201526d082e6e6cae840dad2e6dac2e8c6d60931b604482015260640161057b565b6000805160206114f683398151915280546001600160e01b0319169055565b6000805160206114f6833981519152805461110d9061110890600160601b90046001600160801b031684610f6e565b610ea9565b81548290600c9061112f908490600160601b90046001600160801b03166114b5565b92506101000a8154816001600160801b0302191690836001600160801b031602179055507fb82d4e0870bf4ae7236ad1de74d6612d04d1b805b47d98c2f40088a193d87c658260405161118491815260200190565b60405180910390a15050565b6000805160206114f68339815191526111a882610ea9565b81548290600c906111ca908490600160601b90046001600160801b03166114d5565b92506101000a8154816001600160801b0302191690836001600160801b031602179055507f0f0cdeac88e111e1dd9b9f043e8c671053dedfbaeccabfb144fd51a4f870fcf48260405161118491815260200190565b60008060006060848603121561123457600080fd5b505081359360208301359350604090920135919050565b60006020828403121561125d57600080fd5b81356001600160e01b031981168114610f7f57600080fd5b60006020828403121561128757600080fd5b5035919050565b6000602082840312156112a057600080fd5b815160ff81168114610f7f57600080fd5b634e487b7160e01b600052601160045260246000fd5b600181815b808511156113025781600019048211156112e8576112e86112b1565b808516156112f557918102915b93841c93908002906112cc565b509250929050565b60008261131957506001610485565b8161132657506000610485565b816001811461133c576002811461134657611362565b6001915050610485565b60ff841115611357576113576112b1565b50506001821b610485565b5060208310610133831016604e8410600b8410161715611385575081810a610485565b61138f83836112c7565b80600019048211156113a3576113a36112b1565b029392505050565b6000610f7f60ff84168361130a565b6000826113d757634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156113ee57600080fd5b5051919050565b80820180821115610485576104856112b1565b81810381811115610485576104856112b1565b6000816000190483118215151615611435576114356112b1565b500290565b818103600083128015838313168383128216171561145a5761145a6112b1565b5092915050565b60006020828403121561147357600080fd5b81518015158114610f7f57600080fd5b6001600160a01b03811681146108d657600080fd5b6000602082840312156114aa57600080fd5b8151610f7f81611483565b6001600160801b0382811682821603908082111561145a5761145a6112b1565b6001600160801b0381811683821601908082111561145a5761145a6112b156fe2285f21cf946f4f139f84d60d1bd42e41b7cecbb3685384f294f426ac09f5f46a264697066735822122052438e7c30c649c8ec086d78319a29bc7a4e80492cc41da1830a3893941c9e4764736f6c63430008100033",
|
|
234
|
+
"bytecode": "0x60c06040523480156200001157600080fd5b506040516200187a3803806200187a833981016040819052620000349162000248565b816001600160a01b038116620000b75760405162461bcd60e51b815260206004820152603c60248201527f4c69717569646974795468726573686f6c6441737365744d616e616765723a2060448201527f61737365742063616e6e6f74206265207a65726f20616464726573730000000060648201526084015b60405180910390fd5b6001600160a01b0390811660805281166200012f5760405162461bcd60e51b815260206004820152603160248201527f4552433436323641737365744d616e616765723a207661756c742063616e6e6f60448201527074206265207a65726f206164647265737360781b6064820152608401620000ae565b806001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200016e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000194919062000287565b6001600160a01b0316826001600160a01b0316146200021c5760405162461bcd60e51b815260206004820152603360248201527f4552433436323641737365744d616e616765723a207661756c74206d7573742060448201527f68617665207468652073616d65206173736574000000000000000000000000006064820152608401620000ae565b6001600160a01b031660a05250620002ae565b6001600160a01b03811681146200024557600080fd5b50565b600080604083850312156200025c57600080fd5b825162000269816200022f565b60208401519092506200027c816200022f565b809150509250929050565b6000602082840312156200029a57600080fd5b8151620002a7816200022f565b9392505050565b60805160a05161154b6200032f6000396000818161069e015281816109f001528181610ac201528181610e330152610f370152600081816101680152818161025b01528181610356015281816104ad015281816105cf015281816108380152818161092601528181610a2001528181610c460152610f88015261154b6000f3fe608060405234801561001057600080fd5b50600436106100a85760003560e01c80634eb978a4116100715780634eb978a41461011b5780637d7c2a1c146101235780638d7ddd901461012b578063948cb71914610133578063cec16f3f1461013b578063f9c4fd1b1461014357600080fd5b8062a9bb8d146100ad57806301ffc9a7146100c25780631014a0c2146100ea5780633b6612c81461010b5780634dd93bd314610113575b600080fd5b6100c06100bb36600461121f565b61014b565b005b6100d56100d036600461124b565b610454565b60405190151581526020015b60405180910390f35b6100fd6100f8366004611275565b61048b565b6040519081526020016100e1565b6100fd6105cb565b6100fd610686565b6100fd610778565b6100c0610820565b6100fd610922565b6100c06109d1565b6100fd610a8d565b6100fd610c42565b6000805160206114f6833981519152600019841461024d576102027f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e8919061128e565b6101f390600a6113ab565b6101fd90866113ba565b610cf9565b815463ffffffff191663ffffffff9190911617815560266040518581527f7bc647fe5043209e2019aa3503b79c1b0dd83eb61c56013d373a7584ff6bfb139060200160405180910390a25b6000198314610348576102f07f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102db919061128e565b6102e690600a6113ab565b6101fd90856113ba565b815463ffffffff919091166401000000000267ffffffff000000001990911617815560276040518481527f7bc647fe5043209e2019aa3503b79c1b0dd83eb61c56013d373a7584ff6bfb139060200160405180910390a25b6000198214610446576103eb7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d6919061128e565b6103e190600a6113ab565b6101fd90846113ba565b815463ffffffff91909116600160401b026bffffffff00000000000000001990911617815560286040518381527f7bc647fe5043209e2019aa3503b79c1b0dd83eb61c56013d373a7584ff6bfb139060200160405180910390a25b5061044f610d62565b505050565b60006001600160e01b031982166301ffc9a760e01b148061048557506001600160e01b03198216631e670a9760e21b145b92915050565b6040516370a0823160e01b815230600482015260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa1580156104f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051891906113dc565b90508281106105845760405162461bcd60e51b815260206004820152602d60248201527f4e6f206e65656420746f20726566696c6c207468652077616c6c657420666f7260448201526c081d1a1a5cc81c185e5b595b9d609a1b60648201526084015b60405180910390fd5b600061058e610686565b905081610599610c42565b6105a390866113f5565b6105ad9190611408565b9250808311156105bb578092505b6105c483610e07565b5050919050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561062b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064f919061128e565b61065a90600a6113ab565b6000805160206114f6833981519152546106819190600160401b900463ffffffff1661141b565b905090565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906307a2d13a9082906370a0823190602401602060405180830381865afa1580156106f5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071991906113dc565b6040518263ffffffff1660e01b815260040161073791815260200190565b602060405180830381865afa158015610754573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061068191906113dc565b600080610783610686565b6000805160206114f68339815191528054919250906000906107b590600160601b90046001600160801b03168461143a565b90506107c083610ea9565b82546001600160801b0391909116600160601b02600160601b600160e01b03199091161782556040518181527f731c439c5bae15be1344eec709967e046b4f7d3f7e37abeffc5247f448fa18bf9060200160405180910390a19392505050565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610887573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ab91906113dc565b90506108b56105cb565b8111156108d9576108d66108c7610c42565b6108d19083611408565b610f12565b50565b6108e1610922565b8110156108d657600061090d6108f5610686565b836108fe610c42565b6109089190611408565b610f6e565b9050801561091e5761091e81610e07565b5050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610982573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a6919061128e565b6109b190600a6113ab565b6000805160206114f683398151915254610681919063ffffffff1661141b565b6109d9610f86565b60405163095ea7b360e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015260001960248301527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303816000875af1158015610a69573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d69190611461565b6000806000805160206114f68339815191526040516370a0823160e01b81523060048201529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ba0876529082906370a0823190602401602060405180830381865afa158015610b11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3591906113dc565b6040516001600160e01b031960e084901b1681526004810191909152306024820181905260448201526064016020604051808303816000875af1158015610b80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba491906113dc565b8254909150610bc390600160601b90046001600160801b03168261143a565b8254600160601b600160e01b03191683556040518281529093507fb82d4e0870bf4ae7236ad1de74d6612d04d1b805b47d98c2f40088a193d87c659060200160405180910390a16040518381527f731c439c5bae15be1344eec709967e046b4f7d3f7e37abeffc5247f448fa18bf9060200160405180910390a1505090565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ca2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc6919061128e565b610cd190600a6113ab565b6000805160206114f6833981519152546106819190640100000000900463ffffffff1661141b565b600063ffffffff821115610d5e5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b606482015260840161057b565b5090565b6000805160206114f6833981519152805463ffffffff64010000000082048116911611801590610daa5750805463ffffffff600160401b820481166401000000009092041611155b6108d65760405162461bcd60e51b815260206004820152602860248201527f56616c69646174696f6e3a204c6971756964697479206c696d69747320617265604482015267081a5b9d985b1a5960c21b606482015260840161057b565b610e10816110d9565b604051632d182be560e21b815260048101829052306024820181905260448201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b460af94906064015b6020604051808303816000875af1158015610e85573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091e91906113dc565b60006001600160801b03821115610d5e5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b606482015260840161057b565b610f1b81611190565b604051636e553f6560e01b8152600481018290523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636e553f6590604401610e66565b6000818310610f7d5781610f7f565b825b9392505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316306001600160a01b0316634d15eb036040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110129190611498565b6001600160a01b031663e5a6b10f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561104f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110739190611498565b6001600160a01b0316146110ba5760405162461bcd60e51b815260206004820152600e60248201526d082e6e6cae840dad2e6dac2e8c6d60931b604482015260640161057b565b6000805160206114f683398151915280546001600160e01b0319169055565b6000805160206114f6833981519152805461110d9061110890600160601b90046001600160801b031684610f6e565b610ea9565b81548290600c9061112f908490600160601b90046001600160801b03166114b5565b92506101000a8154816001600160801b0302191690836001600160801b031602179055507fb82d4e0870bf4ae7236ad1de74d6612d04d1b805b47d98c2f40088a193d87c658260405161118491815260200190565b60405180910390a15050565b6000805160206114f68339815191526111a882610ea9565b81548290600c906111ca908490600160601b90046001600160801b03166114d5565b92506101000a8154816001600160801b0302191690836001600160801b031602179055507f0f0cdeac88e111e1dd9b9f043e8c671053dedfbaeccabfb144fd51a4f870fcf48260405161118491815260200190565b60008060006060848603121561123457600080fd5b505081359360208301359350604090920135919050565b60006020828403121561125d57600080fd5b81356001600160e01b031981168114610f7f57600080fd5b60006020828403121561128757600080fd5b5035919050565b6000602082840312156112a057600080fd5b815160ff81168114610f7f57600080fd5b634e487b7160e01b600052601160045260246000fd5b600181815b808511156113025781600019048211156112e8576112e86112b1565b808516156112f557918102915b93841c93908002906112cc565b509250929050565b60008261131957506001610485565b8161132657506000610485565b816001811461133c576002811461134657611362565b6001915050610485565b60ff841115611357576113576112b1565b50506001821b610485565b5060208310610133831016604e8410600b8410161715611385575081810a610485565b61138f83836112c7565b80600019048211156113a3576113a36112b1565b029392505050565b6000610f7f60ff84168361130a565b6000826113d757634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156113ee57600080fd5b5051919050565b80820180821115610485576104856112b1565b81810381811115610485576104856112b1565b6000816000190483118215151615611435576114356112b1565b500290565b818103600083128015838313168383128216171561145a5761145a6112b1565b5092915050565b60006020828403121561147357600080fd5b81518015158114610f7f57600080fd5b6001600160a01b03811681146108d657600080fd5b6000602082840312156114aa57600080fd5b8151610f7f81611483565b6001600160801b0382811682821603908082111561145a5761145a6112b1565b6001600160801b0381811683821601908082111561145a5761145a6112b156fe2285f21cf946f4f139f84d60d1bd42e41b7cecbb3685384f294f426ac09f5f46a2646970667358221220c0f7479c854afdf2fdacbce81339b25d1c74a74dc59352bacf482b5bea403a3e64736f6c63430008100033",
|
|
235
|
+
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a85760003560e01c80634eb978a4116100715780634eb978a41461011b5780637d7c2a1c146101235780638d7ddd901461012b578063948cb71914610133578063cec16f3f1461013b578063f9c4fd1b1461014357600080fd5b8062a9bb8d146100ad57806301ffc9a7146100c25780631014a0c2146100ea5780633b6612c81461010b5780634dd93bd314610113575b600080fd5b6100c06100bb36600461121f565b61014b565b005b6100d56100d036600461124b565b610454565b60405190151581526020015b60405180910390f35b6100fd6100f8366004611275565b61048b565b6040519081526020016100e1565b6100fd6105cb565b6100fd610686565b6100fd610778565b6100c0610820565b6100fd610922565b6100c06109d1565b6100fd610a8d565b6100fd610c42565b6000805160206114f6833981519152600019841461024d576102027f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e8919061128e565b6101f390600a6113ab565b6101fd90866113ba565b610cf9565b815463ffffffff191663ffffffff9190911617815560266040518581527f7bc647fe5043209e2019aa3503b79c1b0dd83eb61c56013d373a7584ff6bfb139060200160405180910390a25b6000198314610348576102f07f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102db919061128e565b6102e690600a6113ab565b6101fd90856113ba565b815463ffffffff919091166401000000000267ffffffff000000001990911617815560276040518481527f7bc647fe5043209e2019aa3503b79c1b0dd83eb61c56013d373a7584ff6bfb139060200160405180910390a25b6000198214610446576103eb7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d6919061128e565b6103e190600a6113ab565b6101fd90846113ba565b815463ffffffff91909116600160401b026bffffffff00000000000000001990911617815560286040518381527f7bc647fe5043209e2019aa3503b79c1b0dd83eb61c56013d373a7584ff6bfb139060200160405180910390a25b5061044f610d62565b505050565b60006001600160e01b031982166301ffc9a760e01b148061048557506001600160e01b03198216631e670a9760e21b145b92915050565b6040516370a0823160e01b815230600482015260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa1580156104f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051891906113dc565b90508281106105845760405162461bcd60e51b815260206004820152602d60248201527f4e6f206e65656420746f20726566696c6c207468652077616c6c657420666f7260448201526c081d1a1a5cc81c185e5b595b9d609a1b60648201526084015b60405180910390fd5b600061058e610686565b905081610599610c42565b6105a390866113f5565b6105ad9190611408565b9250808311156105bb578092505b6105c483610e07565b5050919050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561062b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064f919061128e565b61065a90600a6113ab565b6000805160206114f6833981519152546106819190600160401b900463ffffffff1661141b565b905090565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906307a2d13a9082906370a0823190602401602060405180830381865afa1580156106f5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071991906113dc565b6040518263ffffffff1660e01b815260040161073791815260200190565b602060405180830381865afa158015610754573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061068191906113dc565b600080610783610686565b6000805160206114f68339815191528054919250906000906107b590600160601b90046001600160801b03168461143a565b90506107c083610ea9565b82546001600160801b0391909116600160601b02600160601b600160e01b03199091161782556040518181527f731c439c5bae15be1344eec709967e046b4f7d3f7e37abeffc5247f448fa18bf9060200160405180910390a19392505050565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610887573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ab91906113dc565b90506108b56105cb565b8111156108d9576108d66108c7610c42565b6108d19083611408565b610f12565b50565b6108e1610922565b8110156108d657600061090d6108f5610686565b836108fe610c42565b6109089190611408565b610f6e565b9050801561091e5761091e81610e07565b5050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610982573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a6919061128e565b6109b190600a6113ab565b6000805160206114f683398151915254610681919063ffffffff1661141b565b6109d9610f86565b60405163095ea7b360e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015260001960248301527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303816000875af1158015610a69573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d69190611461565b6000806000805160206114f68339815191526040516370a0823160e01b81523060048201529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ba0876529082906370a0823190602401602060405180830381865afa158015610b11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3591906113dc565b6040516001600160e01b031960e084901b1681526004810191909152306024820181905260448201526064016020604051808303816000875af1158015610b80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba491906113dc565b8254909150610bc390600160601b90046001600160801b03168261143a565b8254600160601b600160e01b03191683556040518281529093507fb82d4e0870bf4ae7236ad1de74d6612d04d1b805b47d98c2f40088a193d87c659060200160405180910390a16040518381527f731c439c5bae15be1344eec709967e046b4f7d3f7e37abeffc5247f448fa18bf9060200160405180910390a1505090565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ca2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc6919061128e565b610cd190600a6113ab565b6000805160206114f6833981519152546106819190640100000000900463ffffffff1661141b565b600063ffffffff821115610d5e5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b606482015260840161057b565b5090565b6000805160206114f6833981519152805463ffffffff64010000000082048116911611801590610daa5750805463ffffffff600160401b820481166401000000009092041611155b6108d65760405162461bcd60e51b815260206004820152602860248201527f56616c69646174696f6e3a204c6971756964697479206c696d69747320617265604482015267081a5b9d985b1a5960c21b606482015260840161057b565b610e10816110d9565b604051632d182be560e21b815260048101829052306024820181905260448201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b460af94906064015b6020604051808303816000875af1158015610e85573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091e91906113dc565b60006001600160801b03821115610d5e5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b606482015260840161057b565b610f1b81611190565b604051636e553f6560e01b8152600481018290523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636e553f6590604401610e66565b6000818310610f7d5781610f7f565b825b9392505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316306001600160a01b0316634d15eb036040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110129190611498565b6001600160a01b031663e5a6b10f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561104f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110739190611498565b6001600160a01b0316146110ba5760405162461bcd60e51b815260206004820152600e60248201526d082e6e6cae840dad2e6dac2e8c6d60931b604482015260640161057b565b6000805160206114f683398151915280546001600160e01b0319169055565b6000805160206114f6833981519152805461110d9061110890600160601b90046001600160801b031684610f6e565b610ea9565b81548290600c9061112f908490600160601b90046001600160801b03166114b5565b92506101000a8154816001600160801b0302191690836001600160801b031602179055507fb82d4e0870bf4ae7236ad1de74d6612d04d1b805b47d98c2f40088a193d87c658260405161118491815260200190565b60405180910390a15050565b6000805160206114f68339815191526111a882610ea9565b81548290600c906111ca908490600160601b90046001600160801b03166114d5565b92506101000a8154816001600160801b0302191690836001600160801b031602179055507f0f0cdeac88e111e1dd9b9f043e8c671053dedfbaeccabfb144fd51a4f870fcf48260405161118491815260200190565b60008060006060848603121561123457600080fd5b505081359360208301359350604090920135919050565b60006020828403121561125d57600080fd5b81356001600160e01b031981168114610f7f57600080fd5b60006020828403121561128757600080fd5b5035919050565b6000602082840312156112a057600080fd5b815160ff81168114610f7f57600080fd5b634e487b7160e01b600052601160045260246000fd5b600181815b808511156113025781600019048211156112e8576112e86112b1565b808516156112f557918102915b93841c93908002906112cc565b509250929050565b60008261131957506001610485565b8161132657506000610485565b816001811461133c576002811461134657611362565b6001915050610485565b60ff841115611357576113576112b1565b50506001821b610485565b5060208310610133831016604e8410600b8410161715611385575081810a610485565b61138f83836112c7565b80600019048211156113a3576113a36112b1565b029392505050565b6000610f7f60ff84168361130a565b6000826113d757634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156113ee57600080fd5b5051919050565b80820180821115610485576104856112b1565b81810381811115610485576104856112b1565b6000816000190483118215151615611435576114356112b1565b500290565b818103600083128015838313168383128216171561145a5761145a6112b1565b5092915050565b60006020828403121561147357600080fd5b81518015158114610f7f57600080fd5b6001600160a01b03811681146108d657600080fd5b6000602082840312156114aa57600080fd5b8151610f7f81611483565b6001600160801b0382811682821603908082111561145a5761145a6112b1565b6001600160801b0381811683821601908082111561145a5761145a6112b156fe2285f21cf946f4f139f84d60d1bd42e41b7cecbb3685384f294f426ac09f5f46a2646970667358221220c0f7479c854afdf2fdacbce81339b25d1c74a74dc59352bacf482b5bea403a3e64736f6c63430008100033",
|
|
236
236
|
"linkReferences": {},
|
|
237
237
|
"deployedLinkReferences": {}
|
|
238
238
|
}
|
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_format": "hh-sol-artifact-1",
|
|
3
|
+
"contractName": "ERC4626PlusVaultAssetManager",
|
|
4
|
+
"sourceName": "contracts/ERC4626PlusVaultAssetManager.sol",
|
|
5
|
+
"abi": [
|
|
6
|
+
{
|
|
7
|
+
"inputs": [
|
|
8
|
+
{
|
|
9
|
+
"internalType": "contract IERC20Metadata",
|
|
10
|
+
"name": "asset_",
|
|
11
|
+
"type": "address"
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"internalType": "contract IERC4626",
|
|
15
|
+
"name": "vault_",
|
|
16
|
+
"type": "address"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"internalType": "contract IERC4626",
|
|
20
|
+
"name": "discretionaryVault_",
|
|
21
|
+
"type": "address"
|
|
22
|
+
}
|
|
23
|
+
],
|
|
24
|
+
"stateMutability": "nonpayable",
|
|
25
|
+
"type": "constructor"
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"anonymous": false,
|
|
29
|
+
"inputs": [
|
|
30
|
+
{
|
|
31
|
+
"indexed": false,
|
|
32
|
+
"internalType": "int256",
|
|
33
|
+
"name": "earnings",
|
|
34
|
+
"type": "int256"
|
|
35
|
+
}
|
|
36
|
+
],
|
|
37
|
+
"name": "EarningsRecorded",
|
|
38
|
+
"type": "event"
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"anonymous": false,
|
|
42
|
+
"inputs": [
|
|
43
|
+
{
|
|
44
|
+
"indexed": true,
|
|
45
|
+
"internalType": "enum IAccessManager.GovernanceActions",
|
|
46
|
+
"name": "action",
|
|
47
|
+
"type": "uint8"
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"indexed": false,
|
|
51
|
+
"internalType": "uint256",
|
|
52
|
+
"name": "value",
|
|
53
|
+
"type": "uint256"
|
|
54
|
+
}
|
|
55
|
+
],
|
|
56
|
+
"name": "GovernanceAction",
|
|
57
|
+
"type": "event"
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"anonymous": false,
|
|
61
|
+
"inputs": [
|
|
62
|
+
{
|
|
63
|
+
"indexed": false,
|
|
64
|
+
"internalType": "uint256",
|
|
65
|
+
"name": "amount",
|
|
66
|
+
"type": "uint256"
|
|
67
|
+
}
|
|
68
|
+
],
|
|
69
|
+
"name": "MoneyDeinvested",
|
|
70
|
+
"type": "event"
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"anonymous": false,
|
|
74
|
+
"inputs": [
|
|
75
|
+
{
|
|
76
|
+
"indexed": false,
|
|
77
|
+
"internalType": "uint256",
|
|
78
|
+
"name": "amount",
|
|
79
|
+
"type": "uint256"
|
|
80
|
+
}
|
|
81
|
+
],
|
|
82
|
+
"name": "MoneyInvested",
|
|
83
|
+
"type": "event"
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
"inputs": [],
|
|
87
|
+
"name": "connect",
|
|
88
|
+
"outputs": [],
|
|
89
|
+
"stateMutability": "nonpayable",
|
|
90
|
+
"type": "function"
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"inputs": [],
|
|
94
|
+
"name": "deinvestAll",
|
|
95
|
+
"outputs": [
|
|
96
|
+
{
|
|
97
|
+
"internalType": "int256",
|
|
98
|
+
"name": "earnings",
|
|
99
|
+
"type": "int256"
|
|
100
|
+
}
|
|
101
|
+
],
|
|
102
|
+
"stateMutability": "nonpayable",
|
|
103
|
+
"type": "function"
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
"inputs": [
|
|
107
|
+
{
|
|
108
|
+
"internalType": "uint256",
|
|
109
|
+
"name": "amount",
|
|
110
|
+
"type": "uint256"
|
|
111
|
+
}
|
|
112
|
+
],
|
|
113
|
+
"name": "discretionaryToVault",
|
|
114
|
+
"outputs": [],
|
|
115
|
+
"stateMutability": "nonpayable",
|
|
116
|
+
"type": "function"
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
"inputs": [],
|
|
120
|
+
"name": "getInvestmentValue",
|
|
121
|
+
"outputs": [
|
|
122
|
+
{
|
|
123
|
+
"internalType": "uint256",
|
|
124
|
+
"name": "",
|
|
125
|
+
"type": "uint256"
|
|
126
|
+
}
|
|
127
|
+
],
|
|
128
|
+
"stateMutability": "view",
|
|
129
|
+
"type": "function"
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
"inputs": [],
|
|
133
|
+
"name": "liquidityMax",
|
|
134
|
+
"outputs": [
|
|
135
|
+
{
|
|
136
|
+
"internalType": "uint256",
|
|
137
|
+
"name": "",
|
|
138
|
+
"type": "uint256"
|
|
139
|
+
}
|
|
140
|
+
],
|
|
141
|
+
"stateMutability": "view",
|
|
142
|
+
"type": "function"
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
"inputs": [],
|
|
146
|
+
"name": "liquidityMiddle",
|
|
147
|
+
"outputs": [
|
|
148
|
+
{
|
|
149
|
+
"internalType": "uint256",
|
|
150
|
+
"name": "",
|
|
151
|
+
"type": "uint256"
|
|
152
|
+
}
|
|
153
|
+
],
|
|
154
|
+
"stateMutability": "view",
|
|
155
|
+
"type": "function"
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
"inputs": [],
|
|
159
|
+
"name": "liquidityMin",
|
|
160
|
+
"outputs": [
|
|
161
|
+
{
|
|
162
|
+
"internalType": "uint256",
|
|
163
|
+
"name": "",
|
|
164
|
+
"type": "uint256"
|
|
165
|
+
}
|
|
166
|
+
],
|
|
167
|
+
"stateMutability": "view",
|
|
168
|
+
"type": "function"
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
"inputs": [],
|
|
172
|
+
"name": "rebalance",
|
|
173
|
+
"outputs": [],
|
|
174
|
+
"stateMutability": "nonpayable",
|
|
175
|
+
"type": "function"
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
"inputs": [],
|
|
179
|
+
"name": "recordEarnings",
|
|
180
|
+
"outputs": [
|
|
181
|
+
{
|
|
182
|
+
"internalType": "int256",
|
|
183
|
+
"name": "",
|
|
184
|
+
"type": "int256"
|
|
185
|
+
}
|
|
186
|
+
],
|
|
187
|
+
"stateMutability": "nonpayable",
|
|
188
|
+
"type": "function"
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
"inputs": [
|
|
192
|
+
{
|
|
193
|
+
"internalType": "uint256",
|
|
194
|
+
"name": "paymentAmount",
|
|
195
|
+
"type": "uint256"
|
|
196
|
+
}
|
|
197
|
+
],
|
|
198
|
+
"name": "refillWallet",
|
|
199
|
+
"outputs": [
|
|
200
|
+
{
|
|
201
|
+
"internalType": "uint256",
|
|
202
|
+
"name": "deinvest",
|
|
203
|
+
"type": "uint256"
|
|
204
|
+
}
|
|
205
|
+
],
|
|
206
|
+
"stateMutability": "nonpayable",
|
|
207
|
+
"type": "function"
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
"inputs": [
|
|
211
|
+
{
|
|
212
|
+
"internalType": "uint256",
|
|
213
|
+
"name": "min",
|
|
214
|
+
"type": "uint256"
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
"internalType": "uint256",
|
|
218
|
+
"name": "middle",
|
|
219
|
+
"type": "uint256"
|
|
220
|
+
},
|
|
221
|
+
{
|
|
222
|
+
"internalType": "uint256",
|
|
223
|
+
"name": "max",
|
|
224
|
+
"type": "uint256"
|
|
225
|
+
}
|
|
226
|
+
],
|
|
227
|
+
"name": "setLiquidityThresholds",
|
|
228
|
+
"outputs": [],
|
|
229
|
+
"stateMutability": "nonpayable",
|
|
230
|
+
"type": "function"
|
|
231
|
+
},
|
|
232
|
+
{
|
|
233
|
+
"inputs": [
|
|
234
|
+
{
|
|
235
|
+
"internalType": "bytes4",
|
|
236
|
+
"name": "interfaceId",
|
|
237
|
+
"type": "bytes4"
|
|
238
|
+
}
|
|
239
|
+
],
|
|
240
|
+
"name": "supportsInterface",
|
|
241
|
+
"outputs": [
|
|
242
|
+
{
|
|
243
|
+
"internalType": "bool",
|
|
244
|
+
"name": "",
|
|
245
|
+
"type": "bool"
|
|
246
|
+
}
|
|
247
|
+
],
|
|
248
|
+
"stateMutability": "view",
|
|
249
|
+
"type": "function"
|
|
250
|
+
},
|
|
251
|
+
{
|
|
252
|
+
"inputs": [
|
|
253
|
+
{
|
|
254
|
+
"internalType": "uint256",
|
|
255
|
+
"name": "amount",
|
|
256
|
+
"type": "uint256"
|
|
257
|
+
}
|
|
258
|
+
],
|
|
259
|
+
"name": "vaultToDiscretionary",
|
|
260
|
+
"outputs": [],
|
|
261
|
+
"stateMutability": "nonpayable",
|
|
262
|
+
"type": "function"
|
|
263
|
+
}
|
|
264
|
+
],
|
|
265
|
+
"bytecode": "0x60e06040523480156200001157600080fd5b506040516200222438038062002224833981016040819052620000349162000415565b8282816001600160a01b038116620000b95760405162461bcd60e51b815260206004820152603c60248201527f4c69717569646974795468726573686f6c6441737365744d616e616765723a2060448201527f61737365742063616e6e6f74206265207a65726f20616464726573730000000060648201526084015b60405180910390fd5b6001600160a01b039081166080528116620001315760405162461bcd60e51b815260206004820152603160248201527f4552433436323641737365744d616e616765723a207661756c742063616e6e6f60448201527074206265207a65726f206164647265737360781b6064820152608401620000b0565b806001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000170573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000196919062000469565b6001600160a01b0316826001600160a01b0316146200021e5760405162461bcd60e51b815260206004820152603360248201527f4552433436323641737365744d616e616765723a207661756c74206d7573742060448201527f68617665207468652073616d65206173736574000000000000000000000000006064820152608401620000b0565b6001600160a01b0390811660a05282169050620002935760405162461bcd60e51b815260206004820152603a60248201526000805160206200220483398151915260448201527f756c742063616e6e6f74206265207a65726f20616464726573730000000000006064820152608401620000b0565b806001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002d2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f8919062000469565b6001600160a01b0316836001600160a01b0316146200036f5760405162461bcd60e51b815260206004820152603c60248201526000805160206200220483398151915260448201527f756c74206d7573742068617665207468652073616d65206173736574000000006064820152608401620000b0565b806001600160a01b0316826001600160a01b031603620003e75760405162461bcd60e51b815260206004820152603660248201526000805160206200220483398151915260448201527f756c7473206d75737420626520646966666572656e74000000000000000000006064820152608401620000b0565b6001600160a01b031660c05250620004909050565b6001600160a01b03811681146200041257600080fd5b50565b6000806000606084860312156200042b57600080fd5b83516200043881620003fc565b60208501519093506200044b81620003fc565b60408501519092506200045e81620003fc565b809150509250925092565b6000602082840312156200047c57600080fd5b81516200048981620003fc565b9392505050565b60805160a05160c051611c956200056f600039600081816106f2015281816107ee0152818161090801528181610c4d01528181610d9101528181610f5d01528181610ff2015261143501526000818161088b0152818161093101528181610b2701528181610bb401528181610e64015281816113140152818161139e015281816115e401526116520152600081816101b4015281816102a7015281816103a2015281816104f90152818161061b01528181610a1f01528181610cc701528181610dc1015281816111240152818161168201526117f90152611c956000f3fe608060405234801561001057600080fd5b50600436106100ce5760003560e01c80634eb978a41161008c5780638d7ddd90116100665780638d7ddd9014610177578063948cb7191461017f578063cec16f3f14610187578063f9c4fd1b1461018f57600080fd5b80634eb978a4146101545780637d7c2a1c1461015c5780638831c06e1461016457600080fd5b8062a9bb8d146100d357806301ffc9a7146100e85780631014a0c2146101105780633b6612c8146101315780633db77cb8146101395780634dd93bd31461014c575b600080fd5b6100e66100e136600461194a565b610197565b005b6100fb6100f6366004611976565b6104a0565b60405190151581526020015b60405180910390f35b61012361011e3660046119a0565b6104d7565b604051908152602001610107565b610123610617565b6100e66101473660046119a0565b6106d2565b610123610901565b61012361095f565b6100e6610a07565b6100e66101723660046119a0565b610b09565b610123610cc3565b6100e6610d72565b610123610e2f565b610123611120565b600080516020611c4083398151915260001984146102995761024e7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610210573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061023491906119b9565b61023f90600a611ad6565b6102499086611ae5565b6111d7565b815463ffffffff191663ffffffff9190911617815560266040518581527f7bc647fe5043209e2019aa3503b79c1b0dd83eb61c56013d373a7584ff6bfb139060200160405180910390a25b60001983146103945761033c7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610303573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061032791906119b9565b61033290600a611ad6565b6102499085611ae5565b815463ffffffff919091166401000000000267ffffffff000000001990911617815560276040518481527f7bc647fe5043209e2019aa3503b79c1b0dd83eb61c56013d373a7584ff6bfb139060200160405180910390a25b6000198214610492576104377f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042291906119b9565b61042d90600a611ad6565b6102499084611ae5565b815463ffffffff91909116600160401b026bffffffff00000000000000001990911617815560286040518381527f7bc647fe5043209e2019aa3503b79c1b0dd83eb61c56013d373a7584ff6bfb139060200160405180910390a25b5061049b611240565b505050565b60006001600160e01b031982166301ffc9a760e01b14806104d157506001600160e01b03198216631e670a9760e21b145b92915050565b6040516370a0823160e01b815230600482015260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610540573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105649190611b07565b90508281106105d05760405162461bcd60e51b815260206004820152602d60248201527f4e6f206e65656420746f20726566696c6c207468652077616c6c657420666f7260448201526c081d1a1a5cc81c185e5b595b9d609a1b60648201526084015b60405180910390fd5b60006105da610901565b9050816105e5611120565b6105ef9086611b20565b6105f99190611b33565b925080831115610607578092505b610610836112e5565b5050919050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610677573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061069b91906119b9565b6106a690600a611ad6565b600080516020611c40833981519152546106cd9190600160401b900463ffffffff16611b46565b905090565b600060001982036107d757604051636c82bbbf60e11b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ba08765290829063d905777e90602401602060405180830381865afa158015610749573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076d9190611b07565b30306040518463ffffffff1660e01b815260040161078d93929190611b65565b6020604051808303816000875af11580156107ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d09190611b07565b905061086f565b604051632d182be560e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b460af949061082790859030908190600401611b65565b6020604051808303816000875af1158015610846573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086a9190611b07565b508190505b604051636e553f6560e01b8152600481018290523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636e553f65906044015b6020604051808303816000875af11580156108dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061049b9190611b07565b600061092c7f0000000000000000000000000000000000000000000000000000000000000000611484565b6109557f0000000000000000000000000000000000000000000000000000000000000000611484565b6106cd9190611b20565b60008061096a610901565b600080516020611c4083398151915280549192509060009061099c90600160601b90046001600160801b031684611b84565b90506109a783611556565b82546001600160801b0391909116600160601b02600160601b600160e01b03199091161782556040518181527f731c439c5bae15be1344eec709967e046b4f7d3f7e37abeffc5247f448fa18bf9060200160405180910390a19392505050565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610a6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a929190611b07565b9050610a9c610617565b811115610ac057610abd610aae611120565b610ab89083611b33565b6115bf565b50565b610ac8610cc3565b811015610abd576000610af4610adc610901565b83610ae5611120565b610aef9190611b33565b61161b565b90508015610b0557610b05816112e5565b5050565b6000198103610b9d5760405163ce96cb7760e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ce96cb7790602401602060405180830381865afa158015610b76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9a9190611b07565b90505b604051632d182be560e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b460af9490610bed90849030908190600401611b65565b6020604051808303816000875af1158015610c0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c309190611b07565b50604051636e553f6560e01b8152600481018290523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636e553f65906044015b6020604051808303816000875af1158015610c9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b059190611b07565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4791906119b9565b610d5290600a611ad6565b600080516020611c40833981519152546106cd919063ffffffff16611b46565b610d7a611633565b60405163095ea7b360e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015260001960248301527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044015b6020604051808303816000875af1158015610e0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610abd9190611bab565b600080600080516020611c408339815191526040516370a0823160e01b81523060048201529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ba0876529082906370a0823190602401602060405180830381865afa158015610eb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed79190611b07565b30306040518463ffffffff1660e01b8152600401610ef793929190611b65565b6020604051808303816000875af1158015610f16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3a9190611b07565b604051636c82bbbf60e11b81523060048201529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d905777e90602401602060405180830381865afa158015610fa4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc89190611b07565b9050600081600003610fdb57600061106e565b604051635d043b2960e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ba0876529061102b90859030908190600401611b65565b6020604051808303816000875af115801561104a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106e9190611b07565b8454909150600160601b90046001600160801b031661108d8285611b20565b6110979190611b84565b8454600160601b600160e01b031916855594507fb82d4e0870bf4ae7236ad1de74d6612d04d1b805b47d98c2f40088a193d87c656110d58483611b20565b60405190815260200160405180910390a16040518581527f731c439c5bae15be1344eec709967e046b4f7d3f7e37abeffc5247f448fa18bf9060200160405180910390a15050505090565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611180573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a491906119b9565b6111af90600a611ad6565b600080516020611c40833981519152546106cd9190640100000000900463ffffffff16611b46565b600063ffffffff82111561123c5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b60648201526084016105c7565b5090565b600080516020611c40833981519152805463ffffffff640100000000820481169116118015906112885750805463ffffffff600160401b820481166401000000009092041611155b610abd5760405162461bcd60e51b815260206004820152602860248201527f56616c69646174696f6e3a204c6971756964697479206c696d69747320617265604482015267081a5b9d985b1a5960c21b60648201526084016105c7565b6112ee816116b1565b60405163ce96cb7760e01b815230600482015260009061137f9083906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ce96cb7790602401602060405180830381865afa15801561135b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aef9190611b07565b9050801561141c57604051632d182be560e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b460af94906113d790849030908190600401611b65565b6020604051808303816000875af11580156113f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141a9190611b07565b505b6114268183611b33565b15610b05576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663b460af946114648385611b33565b30306040518463ffffffff1660e01b81526004016108be93929190611b65565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906307a2d13a9082906370a0823190602401602060405180830381865afa1580156114d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f79190611b07565b6040518263ffffffff1660e01b815260040161151591815260200190565b602060405180830381865afa158015611532573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d19190611b07565b60006001600160801b0382111561123c5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b60648201526084016105c7565b6115c881611768565b604051636e553f6560e01b8152600481018290523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636e553f6590604401610c80565b600081831061162a578161162c565b825b9392505050565b61163b6117f7565b60405163095ea7b360e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015260001960248301527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b390604401610dec565b600080516020611c4083398151915280546116e5906116e090600160601b90046001600160801b03168461161b565b611556565b81548290600c90611707908490600160601b90046001600160801b0316611bcd565b92506101000a8154816001600160801b0302191690836001600160801b031602179055507fb82d4e0870bf4ae7236ad1de74d6612d04d1b805b47d98c2f40088a193d87c658260405161175c91815260200190565b60405180910390a15050565b600080516020611c4083398151915261178082611556565b81548290600c906117a2908490600160601b90046001600160801b0316611bed565b92506101000a8154816001600160801b0302191690836001600160801b031602179055507f0f0cdeac88e111e1dd9b9f043e8c671053dedfbaeccabfb144fd51a4f870fcf48260405161175c91815260200190565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316306001600160a01b0316634d15eb036040518163ffffffff1660e01b8152600401602060405180830381865afa15801561185f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118839190611c22565b6001600160a01b031663e5a6b10f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e49190611c22565b6001600160a01b03161461192b5760405162461bcd60e51b815260206004820152600e60248201526d082e6e6cae840dad2e6dac2e8c6d60931b60448201526064016105c7565b600080516020611c4083398151915280546001600160e01b0319169055565b60008060006060848603121561195f57600080fd5b505081359360208301359350604090920135919050565b60006020828403121561198857600080fd5b81356001600160e01b03198116811461162c57600080fd5b6000602082840312156119b257600080fd5b5035919050565b6000602082840312156119cb57600080fd5b815160ff8116811461162c57600080fd5b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611a2d578160001904821115611a1357611a136119dc565b80851615611a2057918102915b93841c93908002906119f7565b509250929050565b600082611a44575060016104d1565b81611a51575060006104d1565b8160018114611a675760028114611a7157611a8d565b60019150506104d1565b60ff841115611a8257611a826119dc565b50506001821b6104d1565b5060208310610133831016604e8410600b8410161715611ab0575081810a6104d1565b611aba83836119f2565b8060001904821115611ace57611ace6119dc565b029392505050565b600061162c60ff841683611a35565b600082611b0257634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611b1957600080fd5b5051919050565b808201808211156104d1576104d16119dc565b818103818111156104d1576104d16119dc565b6000816000190483118215151615611b6057611b606119dc565b500290565b9283526001600160a01b03918216602084015216604082015260600190565b8181036000831280158383131683831282161715611ba457611ba46119dc565b5092915050565b600060208284031215611bbd57600080fd5b8151801515811461162c57600080fd5b6001600160801b03828116828216039080821115611ba457611ba46119dc565b6001600160801b03818116838216019080821115611ba457611ba46119dc565b6001600160a01b0381168114610abd57600080fd5b600060208284031215611c3457600080fd5b815161162c81611c0d56fe2285f21cf946f4f139f84d60d1bd42e41b7cecbb3685384f294f426ac09f5f46a2646970667358221220ed83f68147792d5e060d3d630c126909bdd66d5acb458d2f2a96907fd7065be464736f6c6343000810003345524334363236506c75735661756c7441737365744d616e616765723a207661",
|
|
266
|
+
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100ce5760003560e01c80634eb978a41161008c5780638d7ddd90116100665780638d7ddd9014610177578063948cb7191461017f578063cec16f3f14610187578063f9c4fd1b1461018f57600080fd5b80634eb978a4146101545780637d7c2a1c1461015c5780638831c06e1461016457600080fd5b8062a9bb8d146100d357806301ffc9a7146100e85780631014a0c2146101105780633b6612c8146101315780633db77cb8146101395780634dd93bd31461014c575b600080fd5b6100e66100e136600461194a565b610197565b005b6100fb6100f6366004611976565b6104a0565b60405190151581526020015b60405180910390f35b61012361011e3660046119a0565b6104d7565b604051908152602001610107565b610123610617565b6100e66101473660046119a0565b6106d2565b610123610901565b61012361095f565b6100e6610a07565b6100e66101723660046119a0565b610b09565b610123610cc3565b6100e6610d72565b610123610e2f565b610123611120565b600080516020611c4083398151915260001984146102995761024e7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610210573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061023491906119b9565b61023f90600a611ad6565b6102499086611ae5565b6111d7565b815463ffffffff191663ffffffff9190911617815560266040518581527f7bc647fe5043209e2019aa3503b79c1b0dd83eb61c56013d373a7584ff6bfb139060200160405180910390a25b60001983146103945761033c7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610303573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061032791906119b9565b61033290600a611ad6565b6102499085611ae5565b815463ffffffff919091166401000000000267ffffffff000000001990911617815560276040518481527f7bc647fe5043209e2019aa3503b79c1b0dd83eb61c56013d373a7584ff6bfb139060200160405180910390a25b6000198214610492576104377f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042291906119b9565b61042d90600a611ad6565b6102499084611ae5565b815463ffffffff91909116600160401b026bffffffff00000000000000001990911617815560286040518381527f7bc647fe5043209e2019aa3503b79c1b0dd83eb61c56013d373a7584ff6bfb139060200160405180910390a25b5061049b611240565b505050565b60006001600160e01b031982166301ffc9a760e01b14806104d157506001600160e01b03198216631e670a9760e21b145b92915050565b6040516370a0823160e01b815230600482015260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610540573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105649190611b07565b90508281106105d05760405162461bcd60e51b815260206004820152602d60248201527f4e6f206e65656420746f20726566696c6c207468652077616c6c657420666f7260448201526c081d1a1a5cc81c185e5b595b9d609a1b60648201526084015b60405180910390fd5b60006105da610901565b9050816105e5611120565b6105ef9086611b20565b6105f99190611b33565b925080831115610607578092505b610610836112e5565b5050919050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610677573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061069b91906119b9565b6106a690600a611ad6565b600080516020611c40833981519152546106cd9190600160401b900463ffffffff16611b46565b905090565b600060001982036107d757604051636c82bbbf60e11b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ba08765290829063d905777e90602401602060405180830381865afa158015610749573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076d9190611b07565b30306040518463ffffffff1660e01b815260040161078d93929190611b65565b6020604051808303816000875af11580156107ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d09190611b07565b905061086f565b604051632d182be560e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b460af949061082790859030908190600401611b65565b6020604051808303816000875af1158015610846573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086a9190611b07565b508190505b604051636e553f6560e01b8152600481018290523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636e553f65906044015b6020604051808303816000875af11580156108dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061049b9190611b07565b600061092c7f0000000000000000000000000000000000000000000000000000000000000000611484565b6109557f0000000000000000000000000000000000000000000000000000000000000000611484565b6106cd9190611b20565b60008061096a610901565b600080516020611c4083398151915280549192509060009061099c90600160601b90046001600160801b031684611b84565b90506109a783611556565b82546001600160801b0391909116600160601b02600160601b600160e01b03199091161782556040518181527f731c439c5bae15be1344eec709967e046b4f7d3f7e37abeffc5247f448fa18bf9060200160405180910390a19392505050565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610a6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a929190611b07565b9050610a9c610617565b811115610ac057610abd610aae611120565b610ab89083611b33565b6115bf565b50565b610ac8610cc3565b811015610abd576000610af4610adc610901565b83610ae5611120565b610aef9190611b33565b61161b565b90508015610b0557610b05816112e5565b5050565b6000198103610b9d5760405163ce96cb7760e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ce96cb7790602401602060405180830381865afa158015610b76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9a9190611b07565b90505b604051632d182be560e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b460af9490610bed90849030908190600401611b65565b6020604051808303816000875af1158015610c0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c309190611b07565b50604051636e553f6560e01b8152600481018290523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636e553f65906044015b6020604051808303816000875af1158015610c9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b059190611b07565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4791906119b9565b610d5290600a611ad6565b600080516020611c40833981519152546106cd919063ffffffff16611b46565b610d7a611633565b60405163095ea7b360e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015260001960248301527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044015b6020604051808303816000875af1158015610e0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610abd9190611bab565b600080600080516020611c408339815191526040516370a0823160e01b81523060048201529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ba0876529082906370a0823190602401602060405180830381865afa158015610eb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed79190611b07565b30306040518463ffffffff1660e01b8152600401610ef793929190611b65565b6020604051808303816000875af1158015610f16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3a9190611b07565b604051636c82bbbf60e11b81523060048201529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d905777e90602401602060405180830381865afa158015610fa4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc89190611b07565b9050600081600003610fdb57600061106e565b604051635d043b2960e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ba0876529061102b90859030908190600401611b65565b6020604051808303816000875af115801561104a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106e9190611b07565b8454909150600160601b90046001600160801b031661108d8285611b20565b6110979190611b84565b8454600160601b600160e01b031916855594507fb82d4e0870bf4ae7236ad1de74d6612d04d1b805b47d98c2f40088a193d87c656110d58483611b20565b60405190815260200160405180910390a16040518581527f731c439c5bae15be1344eec709967e046b4f7d3f7e37abeffc5247f448fa18bf9060200160405180910390a15050505090565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611180573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a491906119b9565b6111af90600a611ad6565b600080516020611c40833981519152546106cd9190640100000000900463ffffffff16611b46565b600063ffffffff82111561123c5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b60648201526084016105c7565b5090565b600080516020611c40833981519152805463ffffffff640100000000820481169116118015906112885750805463ffffffff600160401b820481166401000000009092041611155b610abd5760405162461bcd60e51b815260206004820152602860248201527f56616c69646174696f6e3a204c6971756964697479206c696d69747320617265604482015267081a5b9d985b1a5960c21b60648201526084016105c7565b6112ee816116b1565b60405163ce96cb7760e01b815230600482015260009061137f9083906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ce96cb7790602401602060405180830381865afa15801561135b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aef9190611b07565b9050801561141c57604051632d182be560e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b460af94906113d790849030908190600401611b65565b6020604051808303816000875af11580156113f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141a9190611b07565b505b6114268183611b33565b15610b05576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663b460af946114648385611b33565b30306040518463ffffffff1660e01b81526004016108be93929190611b65565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906307a2d13a9082906370a0823190602401602060405180830381865afa1580156114d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f79190611b07565b6040518263ffffffff1660e01b815260040161151591815260200190565b602060405180830381865afa158015611532573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d19190611b07565b60006001600160801b0382111561123c5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b60648201526084016105c7565b6115c881611768565b604051636e553f6560e01b8152600481018290523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636e553f6590604401610c80565b600081831061162a578161162c565b825b9392505050565b61163b6117f7565b60405163095ea7b360e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015260001960248301527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b390604401610dec565b600080516020611c4083398151915280546116e5906116e090600160601b90046001600160801b03168461161b565b611556565b81548290600c90611707908490600160601b90046001600160801b0316611bcd565b92506101000a8154816001600160801b0302191690836001600160801b031602179055507fb82d4e0870bf4ae7236ad1de74d6612d04d1b805b47d98c2f40088a193d87c658260405161175c91815260200190565b60405180910390a15050565b600080516020611c4083398151915261178082611556565b81548290600c906117a2908490600160601b90046001600160801b0316611bed565b92506101000a8154816001600160801b0302191690836001600160801b031602179055507f0f0cdeac88e111e1dd9b9f043e8c671053dedfbaeccabfb144fd51a4f870fcf48260405161175c91815260200190565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316306001600160a01b0316634d15eb036040518163ffffffff1660e01b8152600401602060405180830381865afa15801561185f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118839190611c22565b6001600160a01b031663e5a6b10f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e49190611c22565b6001600160a01b03161461192b5760405162461bcd60e51b815260206004820152600e60248201526d082e6e6cae840dad2e6dac2e8c6d60931b60448201526064016105c7565b600080516020611c4083398151915280546001600160e01b0319169055565b60008060006060848603121561195f57600080fd5b505081359360208301359350604090920135919050565b60006020828403121561198857600080fd5b81356001600160e01b03198116811461162c57600080fd5b6000602082840312156119b257600080fd5b5035919050565b6000602082840312156119cb57600080fd5b815160ff8116811461162c57600080fd5b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611a2d578160001904821115611a1357611a136119dc565b80851615611a2057918102915b93841c93908002906119f7565b509250929050565b600082611a44575060016104d1565b81611a51575060006104d1565b8160018114611a675760028114611a7157611a8d565b60019150506104d1565b60ff841115611a8257611a826119dc565b50506001821b6104d1565b5060208310610133831016604e8410600b8410161715611ab0575081810a6104d1565b611aba83836119f2565b8060001904821115611ace57611ace6119dc565b029392505050565b600061162c60ff841683611a35565b600082611b0257634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611b1957600080fd5b5051919050565b808201808211156104d1576104d16119dc565b818103818111156104d1576104d16119dc565b6000816000190483118215151615611b6057611b606119dc565b500290565b9283526001600160a01b03918216602084015216604082015260600190565b8181036000831280158383131683831282161715611ba457611ba46119dc565b5092915050565b600060208284031215611bbd57600080fd5b8151801515811461162c57600080fd5b6001600160801b03828116828216039080821115611ba457611ba46119dc565b6001600160801b03818116838216019080821115611ba457611ba46119dc565b6001600160a01b0381168114610abd57600080fd5b600060208284031215611c3457600080fd5b815161162c81611c0d56fe2285f21cf946f4f139f84d60d1bd42e41b7cecbb3685384f294f426ac09f5f46a2646970667358221220ed83f68147792d5e060d3d630c126909bdd66d5acb458d2f2a96907fd7065be464736f6c63430008100033",
|
|
267
|
+
"linkReferences": {},
|
|
268
|
+
"deployedLinkReferences": {}
|
|
269
|
+
}
|
|
@@ -21,25 +21,26 @@ contract ERC4626AssetManager is LiquidityThresholdAssetManager {
|
|
|
21
21
|
|
|
22
22
|
constructor(IERC20Metadata asset_, IERC4626 vault_) LiquidityThresholdAssetManager(asset_) {
|
|
23
23
|
require(address(vault_) != address(0), "ERC4626AssetManager: vault cannot be zero address");
|
|
24
|
+
require(address(asset_) == vault_.asset(), "ERC4626AssetManager: vault must have the same asset");
|
|
24
25
|
_vault = vault_;
|
|
25
26
|
}
|
|
26
27
|
|
|
27
|
-
function connect() public override {
|
|
28
|
+
function connect() public virtual override {
|
|
28
29
|
super.connect();
|
|
29
30
|
_asset.approve(address(_vault), type(uint256).max); // infinite approval to the vault
|
|
30
31
|
}
|
|
31
32
|
|
|
32
|
-
function _invest(uint256 amount) internal override {
|
|
33
|
+
function _invest(uint256 amount) internal virtual override {
|
|
33
34
|
super._invest(amount);
|
|
34
35
|
_vault.deposit(amount, address(this));
|
|
35
36
|
}
|
|
36
37
|
|
|
37
|
-
function _deinvest(uint256 amount) internal override {
|
|
38
|
+
function _deinvest(uint256 amount) internal virtual override {
|
|
38
39
|
super._deinvest(amount);
|
|
39
40
|
_vault.withdraw(amount, address(this), address(this));
|
|
40
41
|
}
|
|
41
42
|
|
|
42
|
-
function deinvestAll() external override returns (int256 earnings) {
|
|
43
|
+
function deinvestAll() external virtual override returns (int256 earnings) {
|
|
43
44
|
DiamondStorage storage ds = diamondStorage();
|
|
44
45
|
uint256 assets = _vault.redeem(_vault.balanceOf(address(this)), address(this), address(this));
|
|
45
46
|
earnings = int256(assets) - int256(uint256(ds.lastInvestmentValue));
|
|
@@ -49,7 +50,7 @@ contract ERC4626AssetManager is LiquidityThresholdAssetManager {
|
|
|
49
50
|
return earnings;
|
|
50
51
|
}
|
|
51
52
|
|
|
52
|
-
function getInvestmentValue() public view override returns (uint256) {
|
|
53
|
+
function getInvestmentValue() public view virtual override returns (uint256) {
|
|
53
54
|
return _vault.convertToAssets(_vault.balanceOf(address(this)));
|
|
54
55
|
}
|
|
55
56
|
}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
pragma solidity ^0.8.0;
|
|
3
|
+
|
|
4
|
+
import {Math} from "@openzeppelin/contracts/utils/math/Math.sol";
|
|
5
|
+
import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
|
|
6
|
+
import {IERC4626} from "@openzeppelin/contracts/interfaces/IERC4626.sol";
|
|
7
|
+
import {ERC4626AssetManager} from "./ERC4626AssetManager.sol";
|
|
8
|
+
import {LiquidityThresholdAssetManager} from "./LiquidityThresholdAssetManager.sol";
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* @title Asset Manager that deploys the funds into a given ERC4626 but also, at request, can deploy the funds in
|
|
12
|
+
* another vault, the discretionary vault.
|
|
13
|
+
* @dev Using liquidity thresholds defined in {LiquidityThresholdAssetManager}, deploys the funds into _vault.
|
|
14
|
+
* By request of the administrator it can also deploy the funds in _discretionaryVault. When deinvesting, if
|
|
15
|
+
* funds in _vault are not enough, it tries to withdraw from _discretionaryVault.
|
|
16
|
+
* @custom:security-contact security@ensuro.co
|
|
17
|
+
* @author Ensuro
|
|
18
|
+
*/
|
|
19
|
+
contract ERC4626PlusVaultAssetManager is ERC4626AssetManager {
|
|
20
|
+
IERC4626 internal immutable _discretionaryVault;
|
|
21
|
+
|
|
22
|
+
constructor(
|
|
23
|
+
IERC20Metadata asset_,
|
|
24
|
+
IERC4626 vault_,
|
|
25
|
+
IERC4626 discretionaryVault_
|
|
26
|
+
) ERC4626AssetManager(asset_, vault_) {
|
|
27
|
+
require(address(discretionaryVault_) != address(0), "ERC4626PlusVaultAssetManager: vault cannot be zero address");
|
|
28
|
+
require(
|
|
29
|
+
address(asset_) == discretionaryVault_.asset(),
|
|
30
|
+
"ERC4626PlusVaultAssetManager: vault must have the same asset"
|
|
31
|
+
);
|
|
32
|
+
require(vault_ != discretionaryVault_, "ERC4626PlusVaultAssetManager: vaults must be different");
|
|
33
|
+
_discretionaryVault = discretionaryVault_;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function _deinvest(uint256 amount) internal virtual override {
|
|
37
|
+
LiquidityThresholdAssetManager._deinvest(amount);
|
|
38
|
+
uint256 vaultAmount = Math.min(amount, _vault.maxWithdraw(address(this)));
|
|
39
|
+
if (vaultAmount != 0) _vault.withdraw(vaultAmount, address(this), address(this));
|
|
40
|
+
if (amount - vaultAmount != 0) _discretionaryVault.withdraw(amount - vaultAmount, address(this), address(this));
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
function connect() public override {
|
|
44
|
+
super.connect();
|
|
45
|
+
_asset.approve(address(_discretionaryVault), type(uint256).max); // infinite approval to the vault
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
function deinvestAll() external virtual override returns (int256 earnings) {
|
|
49
|
+
DiamondStorage storage ds = diamondStorage();
|
|
50
|
+
uint256 fromVault = _vault.redeem(_vault.balanceOf(address(this)), address(this), address(this));
|
|
51
|
+
/**
|
|
52
|
+
* WARNING: this was implemented withdrawing as much as possible from the vault WITHOUT failing.
|
|
53
|
+
* This implementation might leave some assets (those that aren't withdrawable) in the vault and those will
|
|
54
|
+
* be reported as losses.
|
|
55
|
+
*/
|
|
56
|
+
uint256 redeemable = _discretionaryVault.maxRedeem(address(this));
|
|
57
|
+
uint256 fromDiscVault = redeemable != 0 ? _discretionaryVault.redeem(redeemable, address(this), address(this)) : 0;
|
|
58
|
+
earnings = int256(fromVault + fromDiscVault) - int256(uint256(ds.lastInvestmentValue));
|
|
59
|
+
ds.lastInvestmentValue = 0;
|
|
60
|
+
emit MoneyDeinvested(fromDiscVault + fromVault);
|
|
61
|
+
emit EarningsRecorded(earnings);
|
|
62
|
+
return earnings;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
function _erc4626Assets(IERC4626 vault) internal view returns (uint256) {
|
|
66
|
+
return vault.convertToAssets(vault.balanceOf(address(this)));
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
function getInvestmentValue() public view virtual override returns (uint256) {
|
|
70
|
+
return _erc4626Assets(_vault) + _erc4626Assets(_discretionaryVault);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* @dev Transfers the given amount from _vault to the _discretionaryVault
|
|
75
|
+
*
|
|
76
|
+
* @param amount The amount to transfer. If that amount isn't available in _vault it reverts.
|
|
77
|
+
* If amount = type(uint256).max it withdraws all the withdrawable funds from _vault.
|
|
78
|
+
*/
|
|
79
|
+
function vaultToDiscretionary(uint256 amount) external {
|
|
80
|
+
if (amount == type(uint256).max) amount = _vault.maxWithdraw(address(this));
|
|
81
|
+
_vault.withdraw(amount, address(this), address(this));
|
|
82
|
+
_discretionaryVault.deposit(amount, address(this));
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* @dev Transfers the given amount from the _discretionaryVault to _vault
|
|
87
|
+
*
|
|
88
|
+
* @param amount The amount to transfer. If that amount isn't available in the _discretionaryVault it reverts.
|
|
89
|
+
* If amount = type(uint256).max it withdraws all the funds withdrawable in the _discretionaryVault
|
|
90
|
+
*/
|
|
91
|
+
function discretionaryToVault(uint256 amount) external {
|
|
92
|
+
uint256 withdrawn;
|
|
93
|
+
if (amount == type(uint256).max) {
|
|
94
|
+
withdrawn = _discretionaryVault.redeem(
|
|
95
|
+
_discretionaryVault.maxRedeem(address(this)),
|
|
96
|
+
address(this),
|
|
97
|
+
address(this)
|
|
98
|
+
);
|
|
99
|
+
} else {
|
|
100
|
+
_discretionaryVault.withdraw(amount, address(this), address(this));
|
|
101
|
+
withdrawn = amount;
|
|
102
|
+
}
|
|
103
|
+
_vault.deposit(withdrawn, address(this));
|
|
104
|
+
}
|
|
105
|
+
}
|