@perp/curie-deployments
Version:
Perpetual Protocol Curie (v2) contract artifacts (ABIs) and deployed addresses
584 lines • 54.7 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "OtcMaker",
"sourceName": "contracts/otcMaker/OtcMaker.sol",
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "oldCaller",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "newCaller",
"type": "address"
}
],
"name": "CallerUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "oldFundOwner",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "newFundOwner",
"type": "address"
}
],
"name": "FundOwnerUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "oldPositionManager",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "newPositionManager",
"type": "address"
}
],
"name": "PositionManagerUpdated",
"type": "event"
},
{
"inputs": [],
"name": "candidate",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "merkleRedeem",
"type": "address"
},
{
"internalType": "address",
"name": "liquidityProvider",
"type": "address"
},
{
"internalType": "uint256",
"name": "week",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "claimedBalance",
"type": "uint256"
},
{
"internalType": "bytes32[]",
"name": "merkleProof",
"type": "bytes32[]"
}
],
"name": "claimWeek",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "deposit",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "getCaller",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getClearingHouse",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getFundOwner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getLimitOrderBook",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getMarginRatioLimit",
"outputs": [
{
"internalType": "uint24",
"name": "",
"type": "uint24"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getPositionManager",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "clearingHouseArg",
"type": "address"
},
{
"internalType": "address",
"name": "limitOrderBookArg",
"type": "address"
}
],
"name": "initialize",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "isMarginSufficient",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "address",
"name": "baseToken",
"type": "address"
},
{
"internalType": "bool",
"name": "isBaseToQuote",
"type": "bool"
},
{
"internalType": "bool",
"name": "isExactInput",
"type": "bool"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "oppositeAmountBound",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "deadline",
"type": "uint256"
},
{
"internalType": "uint160",
"name": "sqrtPriceLimitX96",
"type": "uint160"
},
{
"internalType": "bytes32",
"name": "referralCode",
"type": "bytes32"
}
],
"internalType": "struct IClearingHouse.OpenPositionParams",
"name": "params",
"type": "tuple"
}
],
"name": "openPosition",
"outputs": [
{
"internalType": "uint256",
"name": "base",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "quote",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "enum ILimitOrderBook.OrderType",
"name": "orderType",
"type": "uint8"
},
{
"internalType": "uint256",
"name": "salt",
"type": "uint256"
},
{
"internalType": "address",
"name": "trader",
"type": "address"
},
{
"internalType": "address",
"name": "baseToken",
"type": "address"
},
{
"internalType": "bool",
"name": "isBaseToQuote",
"type": "bool"
},
{
"internalType": "bool",
"name": "isExactInput",
"type": "bool"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "oppositeAmountBound",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "deadline",
"type": "uint256"
},
{
"internalType": "uint160",
"name": "sqrtPriceLimitX96",
"type": "uint160"
},
{
"internalType": "bytes32",
"name": "referralCode",
"type": "bytes32"
},
{
"internalType": "bool",
"name": "reduceOnly",
"type": "bool"
},
{
"internalType": "uint80",
"name": "roundIdWhenCreated",
"type": "uint80"
},
{
"internalType": "uint256",
"name": "triggerPrice",
"type": "uint256"
}
],
"internalType": "struct ILimitOrderBook.LimitOrder",
"name": "limitOrderParams",
"type": "tuple"
},
{
"components": [
{
"internalType": "uint256",
"name": "liquidityBase",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "liquidityQuote",
"type": "uint256"
},
{
"internalType": "int24",
"name": "lowerTick",
"type": "int24"
},
{
"internalType": "int24",
"name": "upperTick",
"type": "int24"
},
{
"internalType": "uint256",
"name": "minLiquidityBase",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "minLiquidityQuote",
"type": "uint256"
}
],
"internalType": "struct IOtcMakerStruct.JitLiquidityParams",
"name": "jitLiquidityParams",
"type": "tuple"
},
{
"internalType": "bytes",
"name": "signature",
"type": "bytes"
}
],
"name": "openPositionFor",
"outputs": [
{
"internalType": "int256",
"name": "",
"type": "int256"
},
{
"internalType": "int256",
"name": "",
"type": "int256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newCaller",
"type": "address"
}
],
"name": "setCaller",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newFundOwner",
"type": "address"
}
],
"name": "setFundOwner",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint24",
"name": "marginRatioLimitArg",
"type": "uint24"
}
],
"name": "setMarginRatioLimit",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "setOwner",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newPositionManager",
"type": "address"
}
],
"name": "setPositionManager",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "updateOwner",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "withdraw",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "withdrawToken",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"bytecode": "0x608060405234801561001057600080fd5b5061283a806100206000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c80638da5cb5b116100c3578063c575ff791161007c578063c575ff791461027d578063d544f20614610285578063dfbe807414610298578063e5596e0b146102a0578063f3fef3a3146102a8578063f63d5ea7146102bb5761014d565b80638da5cb5b1461022a57806399bb790514610232578063ab470f0514610247578063b6b1b6c31461024f578063bc5920ba14610262578063beb92f551461026a5761014d565b80636a22dede116101155780636a22dede146101ca5780636b9c5e3f146101df5780636c8381f8146101f2578063715018a6146101fa5780638421f3f21461020257806389476069146102175761014d565b806313af40351461015257806318c298e11461016757806347e7ef2414610191578063485cc955146101a45780635760f2e3146101b7575b600080fd5b610165610160366004611ea4565b6102ce565b005b61017a610175366004612109565b610429565b604051610188929190612327565b60405180910390f35b61016561019f366004611fbb565b6108b5565b6101656101b2366004611edc565b6109f7565b6101656101c5366004611ea4565b610c59565b6101d2610d1e565b604051610188919061227a565b6101656101ed366004611f14565b610d2d565b6101d2610dd5565b610165610de4565b61020a610e97565b604051610188919061231c565b610165610225366004611ea4565b610fca565b6101d26110a2565b61023a6110b1565b60405161018891906126cf565b6101d26110c3565b61017a61025d3660046121a5565b6110d2565b61016561119b565b610165610278366004611ea4565b611299565b6101d2611352565b6101656102933660046121bd565b611361565b6101d261150e565b6101d261151d565b6101656102b6366004611fbb565b61152c565b6101656102c9366004611ea4565b6115e2565b6102d661169b565b6001600160a01b03166102e76110a2565b6001600160a01b03161461032b576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b03811661036f576040805162461bcd60e51b81526020600482015260066024820152650534f5f4e57360d41b604482015290519081900360640190fd5b6033546001600160a01b03828116911614156103bb576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414f60d01b604482015290519081900360640190fd5b6034546001600160a01b0382811691161415610407576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414360d01b604482015290519081900360640190fd5b603480546001600160a01b0319166001600160a01b0392909216919091179055565b609b5460009081906001600160a01b031661044261169b565b6001600160a01b0316146104715760405162461bcd60e51b815260040161046890612335565b60405180910390fd5b60036104806020880188612002565b600381111561048b57fe5b146104a85760405162461bcd60e51b815260040161046890612354565b609f546000906001600160a01b0316636332fef6306104cd60808b0160608c01611ea4565b6040518363ffffffff1660e01b81526004016104ea92919061228e565b60606040518083038186803b15801561050257600080fd5b505afa158015610516573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061053a91906120b4565b609c546040805161012081019091529192506000916001600160a01b039091169063c35eb28c908061057260808d0160608e01611ea4565b6001600160a01b031681526020018a6000013581526020018a6020013581526020018a60400160208101906105a7919061201c565b60020b81526020016105bf60808c0160608d0161201c565b60020b81526020018a6080013581526020018a60a001358152602001600015158152602001428152506040518263ffffffff1660e01b81526004016106049190612413565b608060405180830381600087803b15801561061e57600080fd5b505af1158015610632573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106569190612055565b609d546040516394184a5560e01b81529192506001600160a01b0316906394184a559061068e908b908a908a90600090600401612496565b600060405180830381600087803b1580156106a857600080fd5b505af11580156106bc573d6000803e3d6000fd5b5050609c546040805160e081019091526001600160a01b03909116925063cde109b69150806106f160808d0160608e01611ea4565b6001600160a01b0316815260200161070f60608c0160408d0161201c565b60020b815260200161072760808c0160608d0161201c565b60020b815260200161073c856060015161169f565b6001600160801b031681526020016000815260200160008152602001428152506040518263ffffffff1660e01b8152600401610778919061266a565b606060405180830381600087803b15801561079257600080fd5b505af11580156107a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ca91906120b4565b506107d3610e97565b6107ef5760405162461bcd60e51b8152600401610468906123f4565b609f546000906001600160a01b0316636332fef63061081460808d0160608e01611ea4565b6040518363ffffffff1660e01b815260040161083192919061228e565b60606040518083038186803b15801561084957600080fd5b505afa15801561085d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088191906120b4565b8351815191925061089291906116ec565b602080850151908301516108a5916116ec565b9450945050505094509492505050565b60a0546001600160a01b03166108c961169b565b6001600160a01b0316146108ef5760405162461bcd60e51b8152600401610468906123b4565b60a0546109089083906001600160a01b03163084611758565b609e5460405163095ea7b360e01b81526001600160a01b038481169263095ea7b39261093c929091169085906004016122a8565b602060405180830381600087803b15801561095657600080fd5b505af115801561096a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098e9190611fe6565b50609e546040516311f9fbc960e21b81526001600160a01b03909116906347e7ef24906109c190859085906004016122a8565b600060405180830381600087803b1580156109db57600080fd5b505af11580156109ef573d6000803e3d6000fd5b505050505050565b600054610100900460ff1680610a105750610a106117b8565b80610a1e575060005460ff16155b610a595760405162461bcd60e51b815260040180806020018281038252602e815260200180612761602e913960400191505060405180910390fd5b600054610100900460ff16158015610a84576000805460ff1961ff0019909116610100171660011790555b610a8c6117c9565b610a9461169b565b609b80546001600160a01b0319166001600160a01b0392909216919091179055610abc61169b565b60a080546001600160a01b0319166001600160a01b0392909216919091179055610ae461169b565b60a180546001600160a01b03199081166001600160a01b0393841617909155609c805482168684161790819055609d805490921685841617909155604080516311b2515f60e31b815290519190921691638d928af8916004828101926020929190829003018186803b158015610b5957600080fd5b505afa158015610b6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b919190611ec0565b609e80546001600160a01b0319166001600160a01b03928316179055609c5460408051636896fabf60e01b815290519190921691636896fabf916004808301926020929190829003018186803b158015610bea57600080fd5b505afa158015610bfe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c229190611ec0565b609f80546001600160a01b0319166001600160a01b03929092169190911790558015610c54576000805461ff00191690555b505050565b610c6161169b565b6001600160a01b0316610c726110a2565b6001600160a01b031614610cb6576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b610cbf816118cb565b60a180546001600160a01b038381166001600160a01b03198316179092556040519116907f9ee681927833c2398c73d0f5b2a218383929087bada1b839781887af24e6bb0290610d12908390859061228e565b60405180910390a15050565b60a1546001600160a01b031690565b60a0546001600160a01b0316610d4161169b565b6001600160a01b031614610d675760405162461bcd60e51b8152600401610468906123b4565b60405163162d392d60e21b81526001600160a01b038716906358b4e4b490610d9b90889088908890889088906004016122c1565b600060405180830381600087803b158015610db557600080fd5b505af1158015610dc9573d6000803e3d6000fd5b50505050505050505050565b6034546001600160a01b031690565b610dec61169b565b6001600160a01b0316610dfd6110a2565b6001600160a01b031614610e41576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6033546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603380546001600160a01b0319908116909155603480549091169055565b609c54604051635ae8095160e01b815260009182916001600160a01b0390911690635ae8095190610ecc90309060040161227a565b60206040518083038186803b158015610ee457600080fd5b505afa158015610ef8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1c919061203d565b609f54604051633666e41760e11b8152919250600091610fc091610fbb9162ffffff600160a01b830416916001600160a01b031690636ccdc82e90610f6590309060040161227a565b60206040518083038186803b158015610f7d57600080fd5b505afa158015610f91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb5919061203d565b906118f1565b611906565b9091121591505090565b60a0546001600160a01b0316610fde61169b565b6001600160a01b0316146110045760405162461bcd60e51b8152600401610468906123b4565b6040516370a0823160e01b81526000906001600160a01b038316906370a082319061103390309060040161227a565b60206040518083038186803b15801561104b57600080fd5b505afa15801561105f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611083919061203d565b60a05490915061109e9083906001600160a01b031683611952565b5050565b6033546001600160a01b031690565b609f54600160a01b900462ffffff1690565b609b546001600160a01b031690565b60a15460009081906001600160a01b03166110eb61169b565b6001600160a01b0316146111115760405162461bcd60e51b815260040161046890612394565b609c5460405163b6b1b6c360e01b81526001600160a01b039091169063b6b1b6c3906111419086906004016125d8565b6040805180830381600087803b15801561115a57600080fd5b505af115801561116e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119291906121f5565b91509150915091565b6034546001600160a01b03166111e0576040805162461bcd60e51b81526020600482015260056024820152640534f5f43360dc1b604482015290519081900360640190fd5b6111e861169b565b6034546001600160a01b03908116911614611233576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4360d01b604482015290519081900360640190fd5b6034546033546040516001600160a01b0392831692909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360348054603380546001600160a01b03199081166001600160a01b03841617909155169055565b6112a161169b565b6001600160a01b03166112b26110a2565b6001600160a01b0316146112f6576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6112ff816118cb565b609b80546001600160a01b038381166001600160a01b03198316179092556040519116907f8ee0c0bf71c2ee4432c73fa249b11adfdf9ee8948168fb59639e8d240686208190610d12908390859061228e565b609c546001600160a01b031690565b61136961169b565b6001600160a01b031661137a6110a2565b6001600160a01b0316146113be576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b609c5460408051632a8aa0a560e21b815290516000926001600160a01b03169163aa2a8294916004808301926020929190829003018186803b15801561140357600080fd5b505afa158015611417573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143b9190611ec0565b6001600160a01b031663a85494026040518163ffffffff1660e01b815260040160206040518083038186803b15801561147357600080fd5b505afa158015611487573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ab91906121d9565b90508062ffffff168262ffffff161180156114cd5750620f42408262ffffff16105b6114e95760405162461bcd60e51b8152600401610468906123d4565b50609f805462ffffff909216600160a01b0262ffffff60a01b19909216919091179055565b609d546001600160a01b031690565b60a0546001600160a01b031690565b60a0546001600160a01b031661154061169b565b6001600160a01b0316146115665760405162461bcd60e51b8152600401610468906123b4565b609e5460405163f3fef3a360e01b81526001600160a01b039091169063f3fef3a39061159890859085906004016122a8565b600060405180830381600087803b1580156115b257600080fd5b505af11580156115c6573d6000803e3d6000fd5b505060a05461109e92508491506001600160a01b031683611952565b6115ea61169b565b6001600160a01b03166115fb6110a2565b6001600160a01b03161461163f576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b611648816118cb565b60a080546001600160a01b038381166001600160a01b03198316179092556040519116907fceeb903291fcb0b2c048267b2e6c7874698308e5fd1d7ef64a1b7c7a6680d77690610d12908390859061228e565b3390565b806001600160801b03811681146116e75760405162461bcd60e51b81526004018080602001828103825260278152602001806127146027913960400191505060405180910390fd5b919050565b60008183038183128015906117015750838113155b80611716575060008312801561171657508381135b6117515760405162461bcd60e51b81526004018080602001828103825260248152602001806127b76024913960400191505060405180910390fd5b9392505050565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b1790526117b29085906119a0565b50505050565b60006117c330611a51565b15905090565b600054610100900460ff16806117e257506117e26117b8565b806117f0575060005460ff16155b61182b5760405162461bcd60e51b815260040180806020018281038252602e815260200180612761602e913960400191505060405180910390fd5b600054610100900460ff16158015611856576000805460ff1961ff0019909116610100171660011790555b61185e611a57565b600061186861169b565b603380546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35080156118c8576000805461ff00191690555b50565b6001600160a01b0381166118c85760405162461bcd60e51b815260040161046890612375565b6000611751838362ffffff16620f4240611b00565b60006001600160ff1b0382111561194e5760405162461bcd60e51b815260040180806020018281038252602881526020018061278f6028913960400191505060405180910390fd5b5090565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610c549084905b60006119f5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611baf9092919063ffffffff16565b805190915015610c5457808060200190516020811015611a1457600080fd5b5051610c545760405162461bcd60e51b815260040180806020018281038252602a8152602001806127db602a913960400191505060405180910390fd5b3b151590565b600054610100900460ff1680611a705750611a706117b8565b80611a7e575060005460ff16155b611ab95760405162461bcd60e51b815260040180806020018281038252602e815260200180612761602e913960400191505060405180910390fd5b600054610100900460ff16158015611ae4576000805460ff1961ff0019909116610100171660011790555b611aec611bc6565b80156118c8576000805461ff001916905550565b6000808060001985870986860292508281109083900303905080611b365760008411611b2b57600080fd5b508290049050611751565b808411611b4257600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b6060611bbe8484600085611c66565b949350505050565b600054610100900460ff1680611bdf5750611bdf6117b8565b80611bed575060005460ff16155b611c285760405162461bcd60e51b815260040180806020018281038252602e815260200180612761602e913960400191505060405180910390fd5b600054610100900460ff16158015611aec576000805460ff1961ff00199091166101001716600117905580156118c8576000805461ff001916905550565b606082471015611ca75760405162461bcd60e51b815260040180806020018281038252602681526020018061273b6026913960400191505060405180910390fd5b611cb085611a51565b611d01576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b60208310611d3f5780518252601f199092019160209182019101611d20565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611da1576040519150601f19603f3d011682016040523d82523d6000602084013e611da6565b606091505b5091509150611db6828286611dc1565b979650505050505050565b60608315611dd0575081611751565b825115611de05782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611e2a578181015183820152602001611e12565b50505050905090810190601f168015611e575780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b80356116e7816126df565b80356116e7816126f4565b8035600481106116e757600080fd5b803569ffffffffffffffffffff811681146116e757600080fd5b600060208284031215611eb5578081fd5b8135611751816126df565b600060208284031215611ed1578081fd5b8151611751816126df565b60008060408385031215611eee578081fd5b8235611ef9816126df565b91506020830135611f09816126df565b809150509250929050565b60008060008060008060a08789031215611f2c578182fd5b8635611f37816126df565b95506020870135611f47816126df565b94506040870135935060608701359250608087013567ffffffffffffffff80821115611f71578384fd5b818901915089601f830112611f84578384fd5b813581811115611f92578485fd5b8a60208083028501011115611fa5578485fd5b6020830194508093505050509295509295509295565b60008060408385031215611fcd578182fd5b8235611fd8816126df565b946020939093013593505050565b600060208284031215611ff7578081fd5b8151611751816126f4565b600060208284031215612013578081fd5b61175182611e7b565b60006020828403121561202d578081fd5b81358060020b8114611751578182fd5b60006020828403121561204e578081fd5b5051919050565b600060808284031215612066578081fd5b6040516080810181811067ffffffffffffffff8211171561208357fe5b8060405250825181526020830151602082015260408301516040820152606083015160608201528091505092915050565b6000606082840312156120c5578081fd5b6040516060810181811067ffffffffffffffff821117156120e257fe5b80604052508251815260208301516020820152604083015160408201528091505092915050565b6000806000808486036102a0811215612120578283fd5b6101c08082121561212f578384fd5b86955060c06101bf1983011215612144578384fd5b860193505061028085013567ffffffffffffffff80821115612164578384fd5b818701915087601f830112612177578384fd5b813581811115612185578485fd5b886020828501011115612196578485fd5b95989497505060200194505050565b600061010082840312156121b7578081fd5b50919050565b6000602082840312156121ce578081fd5b813561175181612702565b6000602082840312156121ea578081fd5b815161175181612702565b60008060408385031215612207578182fd5b505080516020909101519092909150565b6001600160a01b03169052565b15159052565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b6004811061225f57fe5b9052565b60020b9052565b69ffffffffffffffffffff169052565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03861681526020810185905260408101849052608060608201819052810182905260006001600160fb1b038311156122fe578081fd5b60208302808560a08501379190910160a00190815295945050505050565b901515815260200190565b918252602082015260400190565b6020808252600590820152644f4d5f4e4360d81b604082015260600190565b6020808252600790820152664f4d5f4e4f4d4f60c81b604082015260600190565b6020808252600590820152644f4d5f5a4160d81b604082015260600190565b6020808252600690820152654f4d5f4e504d60d01b604082015260600190565b6020808252600690820152654f4d5f4e464f60d01b604082015260600190565b60208082526006908201526527a6afa4a6a960d11b604082015260600190565b6020808252600590820152644f4d5f494d60d81b604082015260600190565b81516001600160a01b03168152602080830151908201526040808301519082015260608083015161012083019161244c90840182612263565b50608083015161245f6080840182612263565b5060a083015160a083015260c083015160c083015260e083015161248660e0840182612225565b5061010092830151919092015290565b60006102006124ad836124a889611e7b565b612255565b602087013560208401526124c360408801611e65565b6124d06040850182612218565b506124dd60608801611e65565b6124ea6060850182612218565b506124f760808801611e70565b6125046080850182612225565b5061251160a08801611e70565b61251e60a0850182612225565b5060c087013560c084015260e087013560e084015261010080880135818501525061012061254d818901611e65565b61255982860182612218565b50506101408781013590840152610160612574818901611e70565b61258082860182612225565b5050610180612590818901611e8a565b61259c8286018261226a565b50506101a0808801358185015250806101c08401526125be818401868861222b565b9150506125cf6101e083018461226a565b95945050505050565b610100810182356125e8816126df565b6001600160a01b031682526020830135612601816126f4565b151560208301526040830135612616816126f4565b6126236040840182612225565b50606083013560608301526080830135608083015260a083013560a083015261264e60c08401611e65565b61265b60c0840182612218565b5060e092830135919092015290565b600060e08201905060018060a01b038351168252602083015160020b6020830152604083015160020b60408301526001600160801b0360608401511660608301526080830151608083015260a083015160a083015260c083015160c083015292915050565b62ffffff91909116815260200190565b6001600160a01b03811681146118c857600080fd5b80151581146118c857600080fd5b62ffffff811681146118c857600080fdfe53616665436173743a2076616c756520646f65736e27742066697420696e203132382062697473416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a656453616665436173743a2076616c756520646f65736e27742066697420696e20616e20696e743235365369676e6564536166654d6174683a207375627472616374696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a26469706673582212204646fe9b2ed1107fecd4172008ab166dd33bbf3e7f848d951e7893326bb30c1964736f6c63430007060033",
"deployedBytecode": "0x608060405234801561001057600080fd5b506004361061014d5760003560e01c80638da5cb5b116100c3578063c575ff791161007c578063c575ff791461027d578063d544f20614610285578063dfbe807414610298578063e5596e0b146102a0578063f3fef3a3146102a8578063f63d5ea7146102bb5761014d565b80638da5cb5b1461022a57806399bb790514610232578063ab470f0514610247578063b6b1b6c31461024f578063bc5920ba14610262578063beb92f551461026a5761014d565b80636a22dede116101155780636a22dede146101ca5780636b9c5e3f146101df5780636c8381f8146101f2578063715018a6146101fa5780638421f3f21461020257806389476069146102175761014d565b806313af40351461015257806318c298e11461016757806347e7ef2414610191578063485cc955146101a45780635760f2e3146101b7575b600080fd5b610165610160366004611ea4565b6102ce565b005b61017a610175366004612109565b610429565b604051610188929190612327565b60405180910390f35b61016561019f366004611fbb565b6108b5565b6101656101b2366004611edc565b6109f7565b6101656101c5366004611ea4565b610c59565b6101d2610d1e565b604051610188919061227a565b6101656101ed366004611f14565b610d2d565b6101d2610dd5565b610165610de4565b61020a610e97565b604051610188919061231c565b610165610225366004611ea4565b610fca565b6101d26110a2565b61023a6110b1565b60405161018891906126cf565b6101d26110c3565b61017a61025d3660046121a5565b6110d2565b61016561119b565b610165610278366004611ea4565b611299565b6101d2611352565b6101656102933660046121bd565b611361565b6101d261150e565b6101d261151d565b6101656102b6366004611fbb565b61152c565b6101656102c9366004611ea4565b6115e2565b6102d661169b565b6001600160a01b03166102e76110a2565b6001600160a01b03161461032b576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6001600160a01b03811661036f576040805162461bcd60e51b81526020600482015260066024820152650534f5f4e57360d41b604482015290519081900360640190fd5b6033546001600160a01b03828116911614156103bb576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414f60d01b604482015290519081900360640190fd5b6034546001600160a01b0382811691161415610407576040805162461bcd60e51b8152602060048201526006602482015265534f5f53414360d01b604482015290519081900360640190fd5b603480546001600160a01b0319166001600160a01b0392909216919091179055565b609b5460009081906001600160a01b031661044261169b565b6001600160a01b0316146104715760405162461bcd60e51b815260040161046890612335565b60405180910390fd5b60036104806020880188612002565b600381111561048b57fe5b146104a85760405162461bcd60e51b815260040161046890612354565b609f546000906001600160a01b0316636332fef6306104cd60808b0160608c01611ea4565b6040518363ffffffff1660e01b81526004016104ea92919061228e565b60606040518083038186803b15801561050257600080fd5b505afa158015610516573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061053a91906120b4565b609c546040805161012081019091529192506000916001600160a01b039091169063c35eb28c908061057260808d0160608e01611ea4565b6001600160a01b031681526020018a6000013581526020018a6020013581526020018a60400160208101906105a7919061201c565b60020b81526020016105bf60808c0160608d0161201c565b60020b81526020018a6080013581526020018a60a001358152602001600015158152602001428152506040518263ffffffff1660e01b81526004016106049190612413565b608060405180830381600087803b15801561061e57600080fd5b505af1158015610632573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106569190612055565b609d546040516394184a5560e01b81529192506001600160a01b0316906394184a559061068e908b908a908a90600090600401612496565b600060405180830381600087803b1580156106a857600080fd5b505af11580156106bc573d6000803e3d6000fd5b5050609c546040805160e081019091526001600160a01b03909116925063cde109b69150806106f160808d0160608e01611ea4565b6001600160a01b0316815260200161070f60608c0160408d0161201c565b60020b815260200161072760808c0160608d0161201c565b60020b815260200161073c856060015161169f565b6001600160801b031681526020016000815260200160008152602001428152506040518263ffffffff1660e01b8152600401610778919061266a565b606060405180830381600087803b15801561079257600080fd5b505af11580156107a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ca91906120b4565b506107d3610e97565b6107ef5760405162461bcd60e51b8152600401610468906123f4565b609f546000906001600160a01b0316636332fef63061081460808d0160608e01611ea4565b6040518363ffffffff1660e01b815260040161083192919061228e565b60606040518083038186803b15801561084957600080fd5b505afa15801561085d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088191906120b4565b8351815191925061089291906116ec565b602080850151908301516108a5916116ec565b9450945050505094509492505050565b60a0546001600160a01b03166108c961169b565b6001600160a01b0316146108ef5760405162461bcd60e51b8152600401610468906123b4565b60a0546109089083906001600160a01b03163084611758565b609e5460405163095ea7b360e01b81526001600160a01b038481169263095ea7b39261093c929091169085906004016122a8565b602060405180830381600087803b15801561095657600080fd5b505af115801561096a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098e9190611fe6565b50609e546040516311f9fbc960e21b81526001600160a01b03909116906347e7ef24906109c190859085906004016122a8565b600060405180830381600087803b1580156109db57600080fd5b505af11580156109ef573d6000803e3d6000fd5b505050505050565b600054610100900460ff1680610a105750610a106117b8565b80610a1e575060005460ff16155b610a595760405162461bcd60e51b815260040180806020018281038252602e815260200180612761602e913960400191505060405180910390fd5b600054610100900460ff16158015610a84576000805460ff1961ff0019909116610100171660011790555b610a8c6117c9565b610a9461169b565b609b80546001600160a01b0319166001600160a01b0392909216919091179055610abc61169b565b60a080546001600160a01b0319166001600160a01b0392909216919091179055610ae461169b565b60a180546001600160a01b03199081166001600160a01b0393841617909155609c805482168684161790819055609d805490921685841617909155604080516311b2515f60e31b815290519190921691638d928af8916004828101926020929190829003018186803b158015610b5957600080fd5b505afa158015610b6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b919190611ec0565b609e80546001600160a01b0319166001600160a01b03928316179055609c5460408051636896fabf60e01b815290519190921691636896fabf916004808301926020929190829003018186803b158015610bea57600080fd5b505afa158015610bfe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c229190611ec0565b609f80546001600160a01b0319166001600160a01b03929092169190911790558015610c54576000805461ff00191690555b505050565b610c6161169b565b6001600160a01b0316610c726110a2565b6001600160a01b031614610cb6576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b610cbf816118cb565b60a180546001600160a01b038381166001600160a01b03198316179092556040519116907f9ee681927833c2398c73d0f5b2a218383929087bada1b839781887af24e6bb0290610d12908390859061228e565b60405180910390a15050565b60a1546001600160a01b031690565b60a0546001600160a01b0316610d4161169b565b6001600160a01b031614610d675760405162461bcd60e51b8152600401610468906123b4565b60405163162d392d60e21b81526001600160a01b038716906358b4e4b490610d9b90889088908890889088906004016122c1565b600060405180830381600087803b158015610db557600080fd5b505af1158015610dc9573d6000803e3d6000fd5b50505050505050505050565b6034546001600160a01b031690565b610dec61169b565b6001600160a01b0316610dfd6110a2565b6001600160a01b031614610e41576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6033546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603380546001600160a01b0319908116909155603480549091169055565b609c54604051635ae8095160e01b815260009182916001600160a01b0390911690635ae8095190610ecc90309060040161227a565b60206040518083038186803b158015610ee457600080fd5b505afa158015610ef8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1c919061203d565b609f54604051633666e41760e11b8152919250600091610fc091610fbb9162ffffff600160a01b830416916001600160a01b031690636ccdc82e90610f6590309060040161227a565b60206040518083038186803b158015610f7d57600080fd5b505afa158015610f91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb5919061203d565b906118f1565b611906565b9091121591505090565b60a0546001600160a01b0316610fde61169b565b6001600160a01b0316146110045760405162461bcd60e51b8152600401610468906123b4565b6040516370a0823160e01b81526000906001600160a01b038316906370a082319061103390309060040161227a565b60206040518083038186803b15801561104b57600080fd5b505afa15801561105f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611083919061203d565b60a05490915061109e9083906001600160a01b031683611952565b5050565b6033546001600160a01b031690565b609f54600160a01b900462ffffff1690565b609b546001600160a01b031690565b60a15460009081906001600160a01b03166110eb61169b565b6001600160a01b0316146111115760405162461bcd60e51b815260040161046890612394565b609c5460405163b6b1b6c360e01b81526001600160a01b039091169063b6b1b6c3906111419086906004016125d8565b6040805180830381600087803b15801561115a57600080fd5b505af115801561116e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119291906121f5565b91509150915091565b6034546001600160a01b03166111e0576040805162461bcd60e51b81526020600482015260056024820152640534f5f43360dc1b604482015290519081900360640190fd5b6111e861169b565b6034546001600160a01b03908116911614611233576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4360d01b604482015290519081900360640190fd5b6034546033546040516001600160a01b0392831692909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a360348054603380546001600160a01b03199081166001600160a01b03841617909155169055565b6112a161169b565b6001600160a01b03166112b26110a2565b6001600160a01b0316146112f6576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b6112ff816118cb565b609b80546001600160a01b038381166001600160a01b03198316179092556040519116907f8ee0c0bf71c2ee4432c73fa249b11adfdf9ee8948168fb59639e8d240686208190610d12908390859061228e565b609c546001600160a01b031690565b61136961169b565b6001600160a01b031661137a6110a2565b6001600160a01b0316146113be576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b609c5460408051632a8aa0a560e21b815290516000926001600160a01b03169163aa2a8294916004808301926020929190829003018186803b15801561140357600080fd5b505afa158015611417573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143b9190611ec0565b6001600160a01b031663a85494026040518163ffffffff1660e01b815260040160206040518083038186803b15801561147357600080fd5b505afa158015611487573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ab91906121d9565b90508062ffffff168262ffffff161180156114cd5750620f42408262ffffff16105b6114e95760405162461bcd60e51b8152600401610468906123d4565b50609f805462ffffff909216600160a01b0262ffffff60a01b19909216919091179055565b609d546001600160a01b031690565b60a0546001600160a01b031690565b60a0546001600160a01b031661154061169b565b6001600160a01b0316146115665760405162461bcd60e51b8152600401610468906123b4565b609e5460405163f3fef3a360e01b81526001600160a01b039091169063f3fef3a39061159890859085906004016122a8565b600060405180830381600087803b1580156115b257600080fd5b505af11580156115c6573d6000803e3d6000fd5b505060a05461109e92508491506001600160a01b031683611952565b6115ea61169b565b6001600160a01b03166115fb6110a2565b6001600160a01b03161461163f576040805162461bcd60e51b8152602060048201526006602482015265534f5f434e4f60d01b604482015290519081900360640190fd5b611648816118cb565b60a080546001600160a01b038381166001600160a01b03198316179092556040519116907fceeb903291fcb0b2c048267b2e6c7874698308e5fd1d7ef64a1b7c7a6680d77690610d12908390859061228e565b3390565b806001600160801b03811681146116e75760405162461bcd60e51b81526004018080602001828103825260278152602001806127146027913960400191505060405180910390fd5b919050565b60008183038183128015906117015750838113155b80611716575060008312801561171657508381135b6117515760405162461bcd60e51b81526004018080602001828103825260248152602001806127b76024913960400191505060405180910390fd5b9392505050565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b1790526117b29085906119a0565b50505050565b60006117c330611a51565b15905090565b600054610100900460ff16806117e257506117e26117b8565b806117f0575060005460ff16155b61182b5760405162461bcd60e51b815260040180806020018281038252602e815260200180612761602e913960400191505060405180910390fd5b600054610100900460ff16158015611856576000805460ff1961ff0019909116610100171660011790555b61185e611a57565b600061186861169b565b603380546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35080156118c8576000805461ff00191690555b50565b6001600160a01b0381166118c85760405162461bcd60e51b815260040161046890612375565b6000611751838362ffffff16620f4240611b00565b60006001600160ff1b0382111561194e5760405162461bcd60e51b815260040180806020018281038252602881526020018061278f6028913960400191505060405180910390fd5b5090565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610c549084905b60006119f5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611baf9092919063ffffffff16565b805190915015610c5457808060200190516020811015611a1457600080fd5b5051610c545760405162461bcd60e51b815260040180806020018281038252602a8152602001806127db602a913960400191505060405180910390fd5b3b151590565b600054610100900460ff1680611a705750611a706117b8565b80611a7e575060005460ff16155b611ab95760405162461bcd60e51b815260040180806020018281038252602e815260200180612761602e913960400191505060405180910390fd5b600054610100900460ff16158015611ae4576000805460ff1961ff0019909116610100171660011790555b611aec611bc6565b80156118c8576000805461ff001916905550565b6000808060001985870986860292508281109083900303905080611b365760008411611b2b57600080fd5b508290049050611751565b808411611b4257600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b6060611bbe8484600085611c66565b949350505050565b600054610100900460ff1680611bdf5750611bdf6117b8565b80611bed575060005460ff16155b611c285760405162461bcd60e51b815260040180806020018281038252602e815260200180612761602e913960400191505060405180910390fd5b600054610100900460ff16158015611aec576000805460ff1961ff00199091166101001716600117905580156118c8576000805461ff001916905550565b606082471015611ca75760405162461bcd60e51b815260040180806020018281038252602681526020018061273b6026913960400191505060405180910390fd5b611cb085611a51565b611d01576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b60208310611d3f5780518252601f199092019160209182019101611d20565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611da1576040519150601f19603f3d011682016040523d82523d6000602084013e611da6565b606091505b5091509150611db6828286611dc1565b979650505050505050565b60608315611dd0575081611751565b825115611de05782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611e2a578181015183820152602001611e12565b50505050905090810190601f168015611e575780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b80356116e7816126df565b80356116e7816126f4565b8035600481106116e757600080fd5b803569ffffffffffffffffffff811681146116e757600080fd5b600060208284031215611eb5578081fd5b8135611751816126df565b600060208284031215611ed1578081fd5b8151611751816126df565b60008060408385031215611eee578081fd5b8235611ef9816126df565b91506020830135611f09816126df565b809150509250929050565b60008060008060008060a08789031215611f2c578182fd5b8635611f37816126df565b95506