@ensuro/core
Version:
Ensuro - Decentralized insurance protocol
270 lines (269 loc) • 37.1 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "ERC4626PlusVaultAssetManager",
"sourceName": "contracts/ERC4626PlusVaultAssetManager.sol",
"abi": [
{
"inputs": [
{
"internalType": "contract IERC20Metadata",
"name": "asset_",
"type": "address"
},
{
"internalType": "contract IERC4626",
"name": "vault_",
"type": "address"
},
{
"internalType": "contract IERC4626",
"name": "discretionaryVault_",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "int256",
"name": "earnings",
"type": "int256"
}
],
"name": "EarningsRecorded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "enum IAccessManager.GovernanceActions",
"name": "action",
"type": "uint8"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "GovernanceAction",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "MoneyDeinvested",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "MoneyInvested",
"type": "event"
},
{
"inputs": [],
"name": "connect",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "deinvestAll",
"outputs": [
{
"internalType": "int256",
"name": "earnings",
"type": "int256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "discretionaryToVault",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "getInvestmentValue",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "liquidityMax",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "liquidityMiddle",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "liquidityMin",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "rebalance",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "recordEarnings",
"outputs": [
{
"internalType": "int256",
"name": "",
"type": "int256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "paymentAmount",
"type": "uint256"
}
],
"name": "refillWallet",
"outputs": [
{
"internalType": "uint256",
"name": "deinvest",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "min",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "middle",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "max",
"type": "uint256"
}
],
"name": "setLiquidityThresholds",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes4",
"name": "interfaceId",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "vaultToDiscretionary",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"bytecode": "0x60e060405234801561000f575f5ffd5b5060405161215c38038061215c83398101604081905261002e916103f1565b8282816001600160a01b0381166100b25760405162461bcd60e51b815260206004820152603c60248201527f4c69717569646974795468726573686f6c6441737365744d616e616765723a2060448201527f61737365742063616e6e6f74206265207a65726f20616464726573730000000060648201526084015b60405180910390fd5b6001600160a01b0390811660805281166101285760405162461bcd60e51b815260206004820152603160248201527f4552433436323641737365744d616e616765723a207661756c742063616e6e6f60448201527074206265207a65726f206164647265737360781b60648201526084016100a9565b806001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610164573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610188919061043b565b6001600160a01b0316826001600160a01b03161461020e5760405162461bcd60e51b815260206004820152603360248201527f4552433436323641737365744d616e616765723a207661756c74206d7573742060448201527f68617665207468652073616d652061737365740000000000000000000000000060648201526084016100a9565b6001600160a01b0390811660a0528216905061027f5760405162461bcd60e51b815260206004820152603a60248201525f51602061213c5f395f51905f5260448201527f756c742063616e6e6f74206265207a65726f206164647265737300000000000060648201526084016100a9565b806001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102bb573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102df919061043b565b6001600160a01b0316836001600160a01b0316146103525760405162461bcd60e51b815260206004820152603c60248201525f51602061213c5f395f51905f5260448201527f756c74206d7573742068617665207468652073616d652061737365740000000060648201526084016100a9565b806001600160a01b0316826001600160a01b0316036103c65760405162461bcd60e51b815260206004820152603660248201525f51602061213c5f395f51905f5260448201527f756c7473206d75737420626520646966666572656e740000000000000000000060648201526084016100a9565b6001600160a01b031660c0525061045d9050565b6001600160a01b03811681146103ee575f5ffd5b50565b5f5f5f60608486031215610403575f5ffd5b835161040e816103da565b602085015190935061041f816103da565b6040850151909250610430816103da565b809150509250925092565b5f6020828403121561044b575f5ffd5b8151610456816103da565b9392505050565b60805160a05160c051611c066105365f395f81816106d8015281816107cf015281816108e201528181610c1a01528181610d5701528181610f1601528181610fa601526113da01525f81816108690152818161090b01528181610af901528181610b8401528181610e23015281816112be015281816113460152818161158301526115f001525f81816101ad0152818161029d01528181610395015281816104e801528181610606015281816109f501528181610c9001528181610d86015281816110d40152818161161f01526117940152611c065ff3fe608060405234801561000f575f5ffd5b50600436106100ca575f3560e01c80634eb978a4116100885780638d7ddd90116100635780638d7ddd9014610172578063948cb7191461017a578063cec16f3f14610182578063f9c4fd1b1461018a575f5ffd5b80634eb978a41461014f5780637d7c2a1c146101575780638831c06e1461015f575f5ffd5b8062a9bb8d146100ce57806301ffc9a7146100e35780631014a0c21461010b5780633b6612c81461012c5780633db77cb8146101345780634dd93bd314610147575b5f5ffd5b6100e16100dc3660046118e0565b610192565b005b6100f66100f1366004611909565b610491565b60405190151581526020015b60405180910390f35b61011e610119366004611930565b6104c7565b604051908152602001610102565b61011e610603565b6100e1610142366004611930565b6106ba565b61011e6108dc565b61011e610939565b6100e16109de565b6100e161016d366004611930565b610adc565b61011e610c8d565b6100e1610d38565b61011e610df1565b61011e6110d1565b5f516020611bb15f395f51905f525f198414610290576102457f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610207573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061022b9190611947565b61023690600a611a5e565b6102409086611a6c565b611184565b815463ffffffff191663ffffffff9190911617815560266040518581527f7bc647fe5043209e2019aa3503b79c1b0dd83eb61c56013d373a7584ff6bfb139060200160405180910390a25b5f198314610388576103307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102f7573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061031b9190611947565b61032690600a611a5e565b6102409085611a6c565b815463ffffffff919091166401000000000267ffffffff000000001990911617815560276040518481527f7bc647fe5043209e2019aa3503b79c1b0dd83eb61c56013d373a7584ff6bfb139060200160405180910390a25b5f198214610483576104287f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103ef573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104139190611947565b61041e90600a611a5e565b6102409084611a6c565b815463ffffffff91909116600160401b026bffffffff00000000000000001990911617815560286040518381527f7bc647fe5043209e2019aa3503b79c1b0dd83eb61c56013d373a7584ff6bfb139060200160405180910390a25b5061048c6111ec565b505050565b5f6001600160e01b031982166301ffc9a760e01b14806104c157506001600160e01b03198216631e670a9760e21b145b92915050565b6040516370a0823160e01b81523060048201525f9081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa15801561052d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105519190611a8b565b90508281106105bd5760405162461bcd60e51b815260206004820152602d60248201527f4e6f206e65656420746f20726566696c6c207468652077616c6c657420666f7260448201526c081d1a1a5cc81c185e5b595b9d609a1b60648201526084015b60405180910390fd5b5f6105c66108dc565b9050816105d16110d1565b6105db9086611aa2565b6105e59190611ab5565b9250808311156105f3578092505b6105fc83611290565b5050919050565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610660573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106849190611947565b61068f90600a611a5e565b5f516020611bb15f395f51905f52546106b59190600160401b900463ffffffff16611ac8565b905090565b5f5f1982036107b857604051636c82bbbf60e11b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ba08765290829063d905777e90602401602060405180830381865afa15801561072d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107519190611a8b565b30306040518463ffffffff1660e01b815260040161077193929190611adf565b6020604051808303815f875af115801561078d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107b19190611a8b565b905061084d565b604051632d182be560e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b460af949061080890859030908190600401611adf565b6020604051808303815f875af1158015610824573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108489190611a8b565b508190505b604051636e553f6560e01b8152600481018290523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636e553f65906044015b6020604051808303815f875af11580156108b8573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061048c9190611a8b565b5f6109067f0000000000000000000000000000000000000000000000000000000000000000611429565b61092f7f0000000000000000000000000000000000000000000000000000000000000000611429565b6106b59190611aa2565b5f5f6109436108dc565b5f516020611bb15f395f51905f528054919250905f9061097390600160601b90046001600160801b031684611afe565b905061097e836114f6565b82546001600160801b0391909116600160601b02600160601b600160e01b03199091161782556040518181527f731c439c5bae15be1344eec709967e046b4f7d3f7e37abeffc5247f448fa18bf9060200160405180910390a19392505050565b6040516370a0823160e01b81523060048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610a42573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a669190611a8b565b9050610a70610603565b811115610a9457610a91610a826110d1565b610a8c9083611ab5565b61155e565b50565b610a9c610c8d565b811015610a91575f610ac7610aaf6108dc565b83610ab86110d1565b610ac29190611ab5565b6115ba565b90508015610ad857610ad881611290565b5050565b5f198103610b6d5760405163ce96cb7760e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ce96cb7790602401602060405180830381865afa158015610b46573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b6a9190611a8b565b90505b604051632d182be560e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b460af9490610bbd90849030908190600401611adf565b6020604051808303815f875af1158015610bd9573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bfd9190611a8b565b50604051636e553f6560e01b8152600481018290523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636e553f65906044015b6020604051808303815f875af1158015610c69573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ad89190611a8b565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cea573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d0e9190611947565b610d1990600a611a5e565b5f516020611bb15f395f51905f52546106b5919063ffffffff16611ac8565b610d406115d1565b60405163095ea7b360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f1960248301527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044015b6020604051808303815f875af1158015610dcd573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a919190611b24565b5f805f516020611bb15f395f51905f526040516370a0823160e01b81523060048201529091505f906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ba0876529082906370a0823190602401602060405180830381865afa158015610e70573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e949190611a8b565b30306040518463ffffffff1660e01b8152600401610eb493929190611adf565b6020604051808303815f875af1158015610ed0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ef49190611a8b565b604051636c82bbbf60e11b81523060048201529091505f906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d905777e90602401602060405180830381865afa158015610f5b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f7f9190611a8b565b90505f815f03610f8f575f61101f565b604051635d043b2960e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ba08765290610fdf90859030908190600401611adf565b6020604051808303815f875af1158015610ffb573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061101f9190611a8b565b8454909150600160601b90046001600160801b031661103e8285611aa2565b6110489190611afe565b8454600160601b600160e01b031916855594507fb82d4e0870bf4ae7236ad1de74d6612d04d1b805b47d98c2f40088a193d87c656110868483611aa2565b60405190815260200160405180910390a16040518581527f731c439c5bae15be1344eec709967e046b4f7d3f7e37abeffc5247f448fa18bf9060200160405180910390a15050505090565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561112e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111529190611947565b61115d90600a611a5e565b5f516020611bb15f395f51905f52546106b59190640100000000900463ffffffff16611ac8565b5f63ffffffff8211156111e85760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b60648201526084016105b4565b5090565b5f516020611bb15f395f51905f52805463ffffffff640100000000820481169116118015906112335750805463ffffffff600160401b820481166401000000009092041611155b610a915760405162461bcd60e51b815260206004820152602860248201527f56616c69646174696f6e3a204c6971756964697479206c696d69747320617265604482015267081a5b9d985b1a5960c21b60648201526084016105b4565b6112998161164e565b60405163ce96cb7760e01b81523060048201525f906113279083906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ce96cb7790602401602060405180830381865afa158015611303573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ac29190611a8b565b905080156113c157604051632d182be560e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b460af949061137f90849030908190600401611adf565b6020604051808303815f875af115801561139b573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113bf9190611a8b565b505b6113cb8183611ab5565b15610ad8576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663b460af946114098385611ab5565b30306040518463ffffffff1660e01b815260040161089c93929190611adf565b6040516370a0823160e01b81523060048201525f906001600160a01b038316906307a2d13a9082906370a0823190602401602060405180830381865afa158015611475573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114999190611a8b565b6040518263ffffffff1660e01b81526004016114b791815260200190565b602060405180830381865afa1580156114d2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104c19190611a8b565b5f6001600160801b038211156111e85760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b60648201526084016105b4565b61156781611704565b604051636e553f6560e01b8152600481018290523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636e553f6590604401610c4d565b5f8183106115c857816115ca565b825b9392505050565b6115d9611792565b60405163095ea7b360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f1960248301527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b390604401610db1565b5f516020611bb15f395f51905f5280546116819061167c90600160601b90046001600160801b0316846115ba565b6114f6565b81548290600c906116a3908490600160601b90046001600160801b0316611b43565b92506101000a8154816001600160801b0302191690836001600160801b031602179055507fb82d4e0870bf4ae7236ad1de74d6612d04d1b805b47d98c2f40088a193d87c65826040516116f891815260200190565b60405180910390a15050565b5f516020611bb15f395f51905f5261171b826114f6565b81548290600c9061173d908490600160601b90046001600160801b0316611b62565b92506101000a8154816001600160801b0302191690836001600160801b031602179055507f0f0cdeac88e111e1dd9b9f043e8c671053dedfbaeccabfb144fd51a4f870fcf4826040516116f891815260200190565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316306001600160a01b0316634d15eb036040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117f8573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061181c9190611b95565b6001600160a01b031663e5a6b10f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611857573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061187b9190611b95565b6001600160a01b0316146118c25760405162461bcd60e51b815260206004820152600e60248201526d082e6e6cae840dad2e6dac2e8c6d60931b60448201526064016105b4565b5f516020611bb15f395f51905f5280546001600160e01b0319169055565b5f5f5f606084860312156118f2575f5ffd5b505081359360208301359350604090920135919050565b5f60208284031215611919575f5ffd5b81356001600160e01b0319811681146115ca575f5ffd5b5f60208284031215611940575f5ffd5b5035919050565b5f60208284031215611957575f5ffd5b815160ff811681146115ca575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b6001815b60018411156119b65780850481111561199a5761199a611967565b60018416156119a857908102905b60019390931c92800261197f565b935093915050565b5f826119cc575060016104c1565b816119d857505f6104c1565b81600181146119ee57600281146119f857611a14565b60019150506104c1565b60ff841115611a0957611a09611967565b50506001821b6104c1565b5060208310610133831016604e8410600b8410161715611a37575081810a6104c1565b611a435f19848461197b565b805f1904821115611a5657611a56611967565b029392505050565b5f6115ca60ff8416836119be565b5f82611a8657634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215611a9b575f5ffd5b5051919050565b808201808211156104c1576104c1611967565b818103818111156104c1576104c1611967565b80820281158282048414176104c1576104c1611967565b9283526001600160a01b03918216602084015216604082015260600190565b8181035f831280158383131683831282161715611b1d57611b1d611967565b5092915050565b5f60208284031215611b34575f5ffd5b815180151581146115ca575f5ffd5b6001600160801b0382811682821603908111156104c1576104c1611967565b6001600160801b0381811683821601908111156104c1576104c1611967565b6001600160a01b0381168114610a91575f5ffd5b5f60208284031215611ba5575f5ffd5b81516115ca81611b8156fe2285f21cf946f4f139f84d60d1bd42e41b7cecbb3685384f294f426ac09f5f46a264697066735822122041899b1a2fd0dd10fe545bf2461c0beeb94e865097d047829309778e35a3c3e564736f6c634300081c003345524334363236506c75735661756c7441737365744d616e616765723a207661",
"deployedBytecode": "0x608060405234801561000f575f5ffd5b50600436106100ca575f3560e01c80634eb978a4116100885780638d7ddd90116100635780638d7ddd9014610172578063948cb7191461017a578063cec16f3f14610182578063f9c4fd1b1461018a575f5ffd5b80634eb978a41461014f5780637d7c2a1c146101575780638831c06e1461015f575f5ffd5b8062a9bb8d146100ce57806301ffc9a7146100e35780631014a0c21461010b5780633b6612c81461012c5780633db77cb8146101345780634dd93bd314610147575b5f5ffd5b6100e16100dc3660046118e0565b610192565b005b6100f66100f1366004611909565b610491565b60405190151581526020015b60405180910390f35b61011e610119366004611930565b6104c7565b604051908152602001610102565b61011e610603565b6100e1610142366004611930565b6106ba565b61011e6108dc565b61011e610939565b6100e16109de565b6100e161016d366004611930565b610adc565b61011e610c8d565b6100e1610d38565b61011e610df1565b61011e6110d1565b5f516020611bb15f395f51905f525f198414610290576102457f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610207573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061022b9190611947565b61023690600a611a5e565b6102409086611a6c565b611184565b815463ffffffff191663ffffffff9190911617815560266040518581527f7bc647fe5043209e2019aa3503b79c1b0dd83eb61c56013d373a7584ff6bfb139060200160405180910390a25b5f198314610388576103307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102f7573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061031b9190611947565b61032690600a611a5e565b6102409085611a6c565b815463ffffffff919091166401000000000267ffffffff000000001990911617815560276040518481527f7bc647fe5043209e2019aa3503b79c1b0dd83eb61c56013d373a7584ff6bfb139060200160405180910390a25b5f198214610483576104287f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103ef573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104139190611947565b61041e90600a611a5e565b6102409084611a6c565b815463ffffffff91909116600160401b026bffffffff00000000000000001990911617815560286040518381527f7bc647fe5043209e2019aa3503b79c1b0dd83eb61c56013d373a7584ff6bfb139060200160405180910390a25b5061048c6111ec565b505050565b5f6001600160e01b031982166301ffc9a760e01b14806104c157506001600160e01b03198216631e670a9760e21b145b92915050565b6040516370a0823160e01b81523060048201525f9081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa15801561052d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105519190611a8b565b90508281106105bd5760405162461bcd60e51b815260206004820152602d60248201527f4e6f206e65656420746f20726566696c6c207468652077616c6c657420666f7260448201526c081d1a1a5cc81c185e5b595b9d609a1b60648201526084015b60405180910390fd5b5f6105c66108dc565b9050816105d16110d1565b6105db9086611aa2565b6105e59190611ab5565b9250808311156105f3578092505b6105fc83611290565b5050919050565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610660573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106849190611947565b61068f90600a611a5e565b5f516020611bb15f395f51905f52546106b59190600160401b900463ffffffff16611ac8565b905090565b5f5f1982036107b857604051636c82bbbf60e11b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ba08765290829063d905777e90602401602060405180830381865afa15801561072d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107519190611a8b565b30306040518463ffffffff1660e01b815260040161077193929190611adf565b6020604051808303815f875af115801561078d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107b19190611a8b565b905061084d565b604051632d182be560e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b460af949061080890859030908190600401611adf565b6020604051808303815f875af1158015610824573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108489190611a8b565b508190505b604051636e553f6560e01b8152600481018290523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636e553f65906044015b6020604051808303815f875af11580156108b8573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061048c9190611a8b565b5f6109067f0000000000000000000000000000000000000000000000000000000000000000611429565b61092f7f0000000000000000000000000000000000000000000000000000000000000000611429565b6106b59190611aa2565b5f5f6109436108dc565b5f516020611bb15f395f51905f528054919250905f9061097390600160601b90046001600160801b031684611afe565b905061097e836114f6565b82546001600160801b0391909116600160601b02600160601b600160e01b03199091161782556040518181527f731c439c5bae15be1344eec709967e046b4f7d3f7e37abeffc5247f448fa18bf9060200160405180910390a19392505050565b6040516370a0823160e01b81523060048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610a42573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a669190611a8b565b9050610a70610603565b811115610a9457610a91610a826110d1565b610a8c9083611ab5565b61155e565b50565b610a9c610c8d565b811015610a91575f610ac7610aaf6108dc565b83610ab86110d1565b610ac29190611ab5565b6115ba565b90508015610ad857610ad881611290565b5050565b5f198103610b6d5760405163ce96cb7760e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ce96cb7790602401602060405180830381865afa158015610b46573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b6a9190611a8b565b90505b604051632d182be560e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b460af9490610bbd90849030908190600401611adf565b6020604051808303815f875af1158015610bd9573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bfd9190611a8b565b50604051636e553f6560e01b8152600481018290523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636e553f65906044015b6020604051808303815f875af1158015610c69573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ad89190611a8b565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cea573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d0e9190611947565b610d1990600a611a5e565b5f516020611bb15f395f51905f52546106b5919063ffffffff16611ac8565b610d406115d1565b60405163095ea7b360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f1960248301527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044015b6020604051808303815f875af1158015610dcd573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a919190611b24565b5f805f516020611bb15f395f51905f526040516370a0823160e01b81523060048201529091505f906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ba0876529082906370a0823190602401602060405180830381865afa158015610e70573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e949190611a8b565b30306040518463ffffffff1660e01b8152600401610eb493929190611adf565b6020604051808303815f875af1158015610ed0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ef49190611a8b565b604051636c82bbbf60e11b81523060048201529091505f906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d905777e90602401602060405180830381865afa158015610f5b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f7f9190611a8b565b90505f815f03610f8f575f61101f565b604051635d043b2960e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ba08765290610fdf90859030908190600401611adf565b6020604051808303815f875af1158015610ffb573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061101f9190611a8b565b8454909150600160601b90046001600160801b031661103e8285611aa2565b6110489190611afe565b8454600160601b600160e01b031916855594507fb82d4e0870bf4ae7236ad1de74d6612d04d1b805b47d98c2f40088a193d87c656110868483611aa2565b60405190815260200160405180910390a16040518581527f731c439c5bae15be1344eec709967e046b4f7d3f7e37abeffc5247f448fa18bf9060200160405180910390a15050505090565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561112e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111529190611947565b61115d90600a611a5e565b5f516020611bb15f395f51905f52546106b59190640100000000900463ffffffff16611ac8565b5f63ffffffff8211156111e85760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b60648201526084016105b4565b5090565b5f516020611bb15f395f51905f52805463ffffffff640100000000820481169116118015906112335750805463ffffffff600160401b820481166401000000009092041611155b610a915760405162461bcd60e51b815260206004820152602860248201527f56616c69646174696f6e3a204c6971756964697479206c696d69747320617265604482015267081a5b9d985b1a5960c21b60648201526084016105b4565b6112998161164e565b60405163ce96cb7760e01b81523060048201525f906113279083906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ce96cb7790602401602060405180830381865afa158015611303573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ac29190611a8b565b905080156113c157604051632d182be560e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b460af949061137f90849030908190600401611adf565b6020604051808303815f875af115801561139b573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113bf9190611a8b565b505b6113cb8183611ab5565b15610ad8576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663b460af946114098385611ab5565b30306040518463ffffffff1660e01b815260040161089c93929190611adf565b6040516370a0823160e01b81523060048201525f906001600160a01b038316906307a2d13a9082906370a0823190602401602060405180830381865afa158015611475573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114999190611a8b565b6040518263ffffffff1660e01b81526004016114b791815260200190565b602060405180830381865afa1580156114d2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104c19190611a8b565b5f6001600160801b038211156111e85760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b60648201526084016105b4565b61156781611704565b604051636e553f6560e01b8152600481018290523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636e553f6590604401610c4d565b5f8183106115c857816115ca565b825b9392505050565b6115d9611792565b60405163095ea7b360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f1960248301527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b390604401610db1565b5f516020611bb15f395f51905f5280546116819061167c90600160601b90046001600160801b0316846115ba565b6114f6565b81548290600c906116a3908490600160601b90046001600160801b0316611b43565b92506101000a8154816001600160801b0302191690836001600160801b031602179055507fb82d4e0870bf4ae7236ad1de74d6612d04d1b805b47d98c2f40088a193d87c65826040516116f891815260200190565b60405180910390a15050565b5f516020611bb15f395f51905f5261171b826114f6565b81548290600c9061173d908490600160601b90046001600160801b0316611b62565b92506101000a8154816001600160801b0302191690836001600160801b031602179055507f0f0cdeac88e111e1dd9b9f043e8c671053dedfbaeccabfb144fd51a4f870fcf4826040516116f891815260200190565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316306001600160a01b0316634d15eb036040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117f8573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061181c9190611b95565b6001600160a01b031663e5a6b10f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611857573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061187b9190611b95565b6001600160a01b0316146118c25760405162461bcd60e51b815260206004820152600e60248201526d082e6e6cae840dad2e6dac2e8c6d60931b60448201526064016105b4565b5f516020611bb15f395f51905f5280546001600160e01b0319169055565b5f5f5f606084860312156118f2575f5ffd5b505081359360208301359350604090920135919050565b5f60208284031215611919575f5ffd5b81356001600160e01b0319811681146115ca575f5ffd5b5f60208284031215611940575f5ffd5b5035919050565b5f60208284031215611957575f5ffd5b815160ff811681146115ca575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b6001815b60018411156119b65780850481111561199a5761199a611967565b60018416156119a857908102905b60019390931c92800261197f565b935093915050565b5f826119cc575060016104c1565b816119d857505f6104c1565b81600181146119ee57600281146119f857611a14565b60019150506104c1565b60ff841115611a0957611a09611967565b50506001821b6104c1565b5060208310610133831016604e8410600b8410161715611a37575081810a6104c1565b611a435f19848461197b565b805f1904821115611a5657611a56611967565b029392505050565b5f6115ca60ff8416836119be565b5f82611a8657634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215611a9b575f5ffd5b5051919050565b808201808211156104c1576104c1611967565b818103818111156104c1576104c1611967565b80820281158282048414176104c1576104c1611967565b9283526001600160a01b03918216602084015216604082015260600190565b8181035f831280158383131683831282161715611b1d57611b1d611967565b5092915050565b5f60208284031215611b34575f5ffd5b815180151581146115ca575f5ffd5b6001600160801b0382811682821603908111156104c1576104c1611967565b6001600160801b0381811683821601908111156104c1576104c1611967565b6001600160a01b0381168114610a91575f5ffd5b5f60208284031215611ba5575f5ffd5b81516115ca81611b8156fe2285f21cf946f4f139f84d60d1bd42e41b7cecbb3685384f294f426ac09f5f46a264697066735822122041899b1a2fd0dd10fe545bf2461c0beeb94e865097d047829309778e35a3c3e564736f6c634300081c0033",
"linkReferences": {},
"deployedLinkReferences": {}
}