ocean-subgraph/abis/FixedRateExchange.json

930 lines
69 KiB
JSON

{
"_format": "hh-sol-artifact-1",
"contractName": "FixedRateExchange",
"sourceName": "contracts/pools/fixedRate/FixedRateExchange.sol",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "_router",
"type": "address"
},
{
"internalType": "address",
"name": "_opcCollector",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "exchangeOwner",
"type": "address"
}
],
"name": "ExchangeActivated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "allowedSwapper",
"type": "address"
}
],
"name": "ExchangeAllowedSwapperChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "baseToken",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "datatoken",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "exchangeOwner",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "fixedRate",
"type": "uint256"
}
],
"name": "ExchangeCreated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "exchangeOwner",
"type": "address"
}
],
"name": "ExchangeDeactivated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "exchangeOwner",
"type": "address"
},
{
"indexed": false,
"internalType": "bool",
"name": "withMint",
"type": "bool"
}
],
"name": "ExchangeMintStateChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "exchangeOwner",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "newRate",
"type": "uint256"
}
],
"name": "ExchangeRateChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "feeToken",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "feeAmount",
"type": "uint256"
}
],
"name": "MarketFeeCollected",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "feeToken",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "feeAmount",
"type": "uint256"
}
],
"name": "OceanFeeCollected",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "by",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "baseTokenSwappedAmount",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "datatokenSwappedAmount",
"type": "uint256"
},
{
"indexed": false,
"internalType": "address",
"name": "tokenOutAddress",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "marketFeeAmount",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "oceanFeeAmount",
"type": "uint256"
}
],
"name": "Swapped",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "token",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "TokenCollected",
"type": "event"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "datatokenAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "maxBaseTokenAmount",
"type": "uint256"
}
],
"name": "buyDT",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "datatokenAmount",
"type": "uint256"
}
],
"name": "calcBaseInGivenOutDT",
"outputs": [
{
"internalType": "uint256",
"name": "baseTokenAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "baseTokenAmountBeforeFee",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "oceanFeeAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "marketFeeAmount",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "datatokenAmount",
"type": "uint256"
}
],
"name": "calcBaseOutGivenInDT",
"outputs": [
{
"internalType": "uint256",
"name": "baseTokenAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "baseTokenAmountBeforeFee",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "oceanFeeAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "marketFeeAmount",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
}
],
"name": "collectBT",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
}
],
"name": "collectDT",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
}
],
"name": "collectMarketFee",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
}
],
"name": "collectOceanFee",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "datatoken",
"type": "address"
},
{
"internalType": "address[]",
"name": "addresses",
"type": "address[]"
},
{
"internalType": "uint256[]",
"name": "uints",
"type": "uint256[]"
}
],
"name": "createWithDecimals",
"outputs": [
{
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "baseToken",
"type": "address"
},
{
"internalType": "address",
"name": "datatoken",
"type": "address"
},
{
"internalType": "address",
"name": "exchangeOwner",
"type": "address"
}
],
"name": "generateExchangeId",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
}
],
"name": "getAllowedSwapper",
"outputs": [
{
"internalType": "address",
"name": "allowedSwapper",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
}
],
"name": "getBTSupply",
"outputs": [
{
"internalType": "uint256",
"name": "supply",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
}
],
"name": "getDTSupply",
"outputs": [
{
"internalType": "uint256",
"name": "supply",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
}
],
"name": "getExchange",
"outputs": [
{
"internalType": "address",
"name": "exchangeOwner",
"type": "address"
},
{
"internalType": "address",
"name": "datatoken",
"type": "address"
},
{
"internalType": "uint256",
"name": "dtDecimals",
"type": "uint256"
},
{
"internalType": "address",
"name": "baseToken",
"type": "address"
},
{
"internalType": "uint256",
"name": "btDecimals",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "fixedRate",
"type": "uint256"
},
{
"internalType": "bool",
"name": "active",
"type": "bool"
},
{
"internalType": "uint256",
"name": "dtSupply",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "btSupply",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "dtBalance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "btBalance",
"type": "uint256"
},
{
"internalType": "bool",
"name": "withMint",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getExchanges",
"outputs": [
{
"internalType": "bytes32[]",
"name": "",
"type": "bytes32[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
}
],
"name": "getFeesInfo",
"outputs": [
{
"internalType": "uint256",
"name": "marketFee",
"type": "uint256"
},
{
"internalType": "address",
"name": "marketFeeCollector",
"type": "address"
},
{
"internalType": "uint256",
"name": "opcFee",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "marketFeeAvailable",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "oceanFeeAvailable",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getId",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [],
"name": "getNumberOfExchanges",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "baseTokenAddress",
"type": "address"
}
],
"name": "getOPCFee",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
}
],
"name": "getRate",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
}
],
"name": "isActive",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "opcCollector",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "router",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "datatokenAmount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "minBaseTokenAmount",
"type": "uint256"
}
],
"name": "sellDT",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
},
{
"internalType": "address",
"name": "newAllowedSwapper",
"type": "address"
}
],
"name": "setAllowedSwapper",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "newRate",
"type": "uint256"
}
],
"name": "setRate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
}
],
"name": "toggleExchangeState",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
},
{
"internalType": "bool",
"name": "withMint",
"type": "bool"
}
],
"name": "toggleMintState",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "_newMarketFee",
"type": "uint256"
}
],
"name": "updateMarketFee",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "exchangeId",
"type": "bytes32"
},
{
"internalType": "address",
"name": "_newMarketCollector",
"type": "address"
}
],
"name": "updateMarketFeeCollector",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"bytecode": "0x60806040523480156200001157600080fd5b50604051620031b9380380620031b9833981016040819052620000349162000158565b60016000556001600160a01b038216620000a55760405162461bcd60e51b815260206004820152602760248201527f46697865645261746545786368616e67653a2057726f6e6720526f75746572206044820152666164647265737360c81b60648201526084015b60405180910390fd5b6001600160a01b038116620001095760405162461bcd60e51b8152602060048201526024808201527f46697865645261746545786368616e67653a2057726f6e67204f5043206164646044820152637265737360e01b60648201526084016200009c565b600180546001600160a01b039384166001600160a01b0319918216179091556002805492909316911617905562000190565b80516001600160a01b03811681146200015357600080fd5b919050565b600080604083850312156200016c57600080fd5b62000177836200013b565b915062000187602084016200013b565b90509250929050565b61301980620001a06000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c806379dd283611610104578063b4241429116100a2578063c66274ea11610071578063c66274ea14610590578063c99733a7146105a3578063f532129e146105b6578063f887ea40146105c957600080fd5b8063b42414291461054f578063b686bcaf14610557578063b8421e2b1461056a578063c1f6572e1461057d57600080fd5b8063855058dd116100de578063855058dd1461041d57806385fcbc2f146105055780638882387214610518578063b32b56f91461052b57600080fd5b806379dd2836146103e45780637c82ebe9146103f7578063825b5cd61461040a57600080fd5b80635acfedc71161017157806360311e951161014b57806360311e9514610378578063680819eb1461038b5780636e4c62691461039e57806371dc14b2146103b157600080fd5b80635acfedc7146103235780635c36901c146103365780635d1ca6311461036957600080fd5b80631e2e3a6b116101ad5780631e2e3a6b1461026857806324cb477e1461027d578063450dccc3146102925780634c87087d146102a557600080fd5b8063012c3275146101d457806303814238146101fa5780630b3b430d14610225575b600080fd5b6101e76101e23660046129f5565b6105dc565b6040519081526020015b60405180910390f35b60025461020d906001600160a01b031681565b6040516001600160a01b0390911681526020016101f1565b610238610233366004612ac7565b610d51565b604080519586526001600160a01b039094166020860152928401919091526060830152608082015260a0016101f1565b610270610e5b565b6040516101f19190612ae0565b61029061028b366004612ac7565b610eb3565b005b6102906102a0366004612ac7565b610f92565b6102b86102b3366004612ac7565b61109e565b604080516001600160a01b039d8e1681529b8d1660208d01528b0199909952999096166060890152608088019490945260a0870192909252151560c086015260e0850152610100840152610120830152610140820192909252901515610160820152610180016101f1565b610290610331366004612ac7565b6111c5565b610359610344366004612ac7565b60009081526003602052604090205460ff1690565b60405190151581526020016101f1565b604051600181526020016101f1565b610290610386366004612b24565b611280565b610290610399366004612b50565b611322565b6102906103ac366004612b72565b61140f565b6103c46103bf366004612b50565b61170d565b6040805194855260208501939093529183015260608201526080016101f1565b6102906103f2366004612baf565b611854565b610290610405366004612b24565b6118e6565b610290610418366004612b72565b611979565b61020d61042b366004612ac7565b60009081526003602081815260409283902083516101e081018552815460ff808216151583526001600160a01b03610100928390048116958401959095526001840154851696830196909652600283015484166060830152938201546080820152600482015460a0820152600582015460c0820152600682015460e0820152600782015484820152600882015461012082015260098201548316610140820152600a820154610160820152600b820154610180820152600c9091015493841615156101a0820152919092049091166101c090910181905290565b6101e7610513366004612ac7565b611d7b565b610290610526366004612b50565b611f02565b6101e7610539366004612ac7565b6000908152600360208190526040909120015490565b6004546101e7565b610290610565366004612ac7565b611f79565b6101e7610578366004612bdf565b61202a565b6101e761058b366004612bfa565b61209f565b6101e761059e366004612ac7565b6120eb565b6103c46105b1366004612b50565b6123fd565b6102906105c4366004612ac7565b6124ec565b60015461020d906001600160a01b031681565b6001546000906001600160a01b0316331461063e5760405162461bcd60e51b815260206004820152601e60248201527f46697865645261746545786368616e67653a206f6e6c7920726f75746572000060448201526064015b60405180910390fd5b60006001600160a01b03168360008151811061065c5761065c612c3d565b60200260200101516001600160a01b031614156106d75760405162461bcd60e51b815260206004820152603360248201527f46697865645261746545786368616e67653a20496e76616c69642062617365546044820152726f6b656e2c20207a65726f206164647265737360681b6064820152608401610635565b6001600160a01b0384166107495760405162461bcd60e51b815260206004820152603360248201527f46697865645261746545786368616e67653a20496e76616c69642064617461746044820152726f6b656e2c20207a65726f206164647265737360681b6064820152608401610635565b836001600160a01b03168360008151811061076657610766612c3d565b60200260200101516001600160a01b031614156107eb5760405162461bcd60e51b815260206004820152603760248201527f46697865645261746545786368616e67653a20496e76616c696420646174617460448201527f6f6b656e2c2020657175616c732062617365546f6b656e0000000000000000006064820152608401610635565b816002815181106107fe576107fe612c3d565b60200260200101516000141561086d5760405162461bcd60e51b815260206004820152602e60248201527f46697865645261746545786368616e67653a20496e76616c696420657863686160448201526d6e676520726174652076616c756560901b6064820152608401610635565b6108ac8360008151811061088357610883612c3d565b6020026020010151858560018151811061089f5761089f612c3d565b602002602001015161209f565b60008181526003602081905260409091200154909150156109235760405162461bcd60e51b815260206004820152602b60248201527f46697865645261746545786368616e67653a2045786368616e676520616c726560448201526a616479206578697374732160a81b6064820152608401610635565b6000600190508260048151811061093c5761093c612c3d565b602002602001015160001415610950575060005b604051806101e001604052806001151581526020018560018151811061097857610978612c3d565b60200260200101516001600160a01b03168152602001866001600160a01b03168152602001856000815181106109b0576109b0612c3d565b60200260200101516001600160a01b03168152602001846002815181106109d9576109d9612c3d565b60200260200101518152602001846001815181106109f9576109f9612c3d565b6020026020010151815260200184600081518110610a1957610a19612c3d565b60200260200101518152602001600081526020016000815260200184600381518110610a4757610a47612c3d565b6020026020010151815260200185600281518110610a6757610a67612c3d565b60200260200101516001600160a01b031681526020016000815260200160008152602001821515815260200185600381518110610aa657610aa6612c3d565b6020908102919091018101516001600160a01b0390811690925260008581526003808352604080832086518154958801518716610100908102610100600160a81b031992151583166001600160a81b0319988916171783559288015160018084018054928a166001600160a01b031993841617905560608a0151600285018054918b1691841691909117905560808a01519584019590955560a089015160048085019190915560c08a0151600585015560e08a01516006850155848a015160078501556101208a015160088501556101408a0151600985018054918b169190931617909155610160890151600a840155610180890151600b8401556101a0890151600c90930180546101c0909a01518916909402921515909116979095169690961795909517909455815493840182559081527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b9092018490558551908716918691610c1457610c14612c3d565b60200260200101516001600160a01b0316837feb7a353641f7d3cc54b497ef1553fdc292b64d9cc3be8587c23dfba01f310b1987600181518110610c5a57610c5a612c3d565b602002602001015187600281518110610c7557610c75612c3d565b6020026020010151604051610c9f9291906001600160a01b03929092168252602082015260400190565b60405180910390a483600181518110610cba57610cba612c3d565b60200260200101516001600160a01b0316827fc7344c45124818d1d3a4c24ccb9b86d8b88d3bd05209b2a42b494cb32a50352960405160405180910390a383600381518110610d0b57610d0b612c3d565b60200260200101516001600160a01b0316827fcc1b4af8292e6b938f6743c78a62317c9a2d60e0d46b77776a027e53ce617c0c60405160405180910390a3509392505050565b600081815260036020818152604080842081516101e081018352815460ff808216151583526001600160a01b036101009283900481168488015260018501548116958401959095526002840154851660608401819052848801546080850152600485015460a0850152600585015460c0850152600685015460e085015260078501548385015260088501546101208501819052600986015487166101408601819052600a870154610160870152600b870154610180870152600c9096015492831615156101a0860152929091049094166101c0830152878752949093529293918291829190610e3f9061202a565b9350806101600151925080610180015191505091939590929450565b60606004805480602002602001604051908101604052809291908181526020018280548015610ea957602002820191906000526020600020905b815481526020019060010190808311610e95575b5050505050905090565b600081815260036020526040902054819061010090046001600160a01b03163314610ef05760405162461bcd60e51b815260040161063590612c53565b60008281526003602052604090205460ff1615610f4b57600082815260036020526040808220805460ff1916905551339184917f03da9148e1de78fba22de63c573465562ebf6ef878a1d3ea83790a560229984c9190a35050565b600082815260036020526040808220805460ff1916600117905551339184917fc7344c45124818d1d3a4c24ccb9b86d8b88d3bd05209b2a42b494cb32a5035299190a35050565b600081815260036020526040902054819061010090046001600160a01b03163314610fcf5760405162461bcd60e51b815260040161063590612c53565b60026000541415610ff25760405162461bcd60e51b815260040161063590612c9c565b600260009081558281526003602052604081206006810180549290558054600190910154611033916001600160a01b039182169161010090910416836125e8565b6000838152600360209081526040918290206001810154905492518481526001600160a01b039182169361010090049091169186917fecc75f4464886bee0a1c5eae61c0cb4b99c64c5e9cdebe3696217d266f8b163691015b60405180910390a45050600160005550565b600081815260036020818152604080842081516101e081018352815460ff80821615158084526001600160a01b036101009384900481169785018890526001860154811696850187905260028601548116606086018190529886015460808601819052600487015460a08701819052600588015460c08801819052600689015460e0890152600789015487890152600889015461012089015260098901548416610140890152600a890154610160890152600b890154610180890152600c9098015494851615156101a088015294909304166101c08501529597949691959194909281908190819081906111918e6120eb565b955061119c8e611d7b565b94508060e0015193508061010001519250806101a0015191505091939597999b5091939597999b565b600260005414156111e85760405162461bcd60e51b815260040161063590612c9c565b60026000818155828152600360205260408120600b8101805492905582549201549091611222916001600160a01b039081169116836125e8565b6000828152600360209081526040918290206002015491518381526001600160a01b039092169184917f457b44fd47c33fc65bfbd58d0202ad97fbed1bbc9881f56441d05fe9ebd58acf91015b60405180910390a350506001600055565b600082815260036020526040902054829061010090046001600160a01b031633146112bd5760405162461bcd60e51b815260040161063590612c53565b600083815260036020526040808220600c018054610100600160a81b0319166101006001600160a01b038716908102919091179091559051909185917fcc1b4af8292e6b938f6743c78a62317c9a2d60e0d46b77776a027e53ce617c0c9190a3505050565b600082815260036020526040902054829061010090046001600160a01b0316331461135f5760405162461bcd60e51b815260040161063590612c53565b816113b85760405162461bcd60e51b815260206004820152602360248201527f46697865645261746545786368616e67653a20526174696f206d7573742062656044820152620203e360ec1b6064820152608401610635565b6000838152600360208190526040918290200183905551339084907fe50f9919fdc524004a4ee0cb934f4734f144bec0713a52e5483b753f5de0f08c906114029086815260200190565b60405180910390a3505050565b600083815260036020526040902054839060ff1661143f5760405162461bcd60e51b815260040161063590612cd3565b600260005414156114625760405162461bcd60e51b815260040161063590612c9c565b6002600055826114845760405162461bcd60e51b815260040161063590612d1e565b6000848152600360205260409020600c015461010090046001600160a01b0316156114e7576000848152600360205260409020600c015461010090046001600160a01b031633146114e75760405162461bcd60e51b815260040161063590612d66565b6000806000806114f7888861170d565b93509350935093508584101561155e5760405162461bcd60e51b815260206004820152602660248201527f46697865645261746545786368616e67653a20546f6f20666577206261736520604482015265746f6b656e7360d01b6064820152608401610635565b6000888152600360205260409020600b015461157a9083612650565b6000898152600360205260409020600b810191909155600a015461159e9082612650565b6000898152600360205260409020600a810191909155600101546115cd906001600160a01b031633308a61265c565b6000888152600360205260409020600601546115e99088612650565b6000898152600360205260409020600681019190915560070154841115611643576000888152600360205260409020805460029091015461163e916001600160a01b039182169161010090910416338761265c565b61168d565b60008881526003602052604090206007015461165f908461269a565b600089815260036020526040902060078101919091556002015461168d906001600160a01b031633866125e8565b6000888152600360209081526040918290206002015482518781529182018a90526001600160a01b0316918101919091526060810182905260808101839052339089907f71999bcde73cf4958b3a13dcbc60ff31366318eb6e67b45c93725aa07f89cbd29060a0015b60405180910390a350506001600055505050505050565b600082815260036020526040812054819081908190869060ff166117435760405162461bcd60e51b815260040161063590612cd3565b6000878152600360205260409020600401546117bd90670de0b6b3a7640000906117b79061177290600a612eb6565b60008b8152600360205260409020600501546117b79061179390600a612eb6565b60008d815260036020819052604090912001546117b1908d906126a6565b906126a6565b906126b2565b600088815260036020526040812060020154919550906117e5906001600160a01b031661202a565b9050801561180657611803670de0b6b3a76400006117b787846126a6565b93505b60008881526003602052604090206008015461183190670de0b6b3a7640000906117b79088906126a6565b925061184784611841878661269a565b9061269a565b9550505092959194509250565b600082815260036020526040902054829061010090046001600160a01b031633146118915760405162461bcd60e51b815260040161063590612c53565b600083815260036020908152604091829020600c01805460ff19168515159081179091559151918252339185917fe28e899e0f5d6fba0c8d73d1888083bcc62d4d9806d2e26fcf1f607c3ed52f539101611402565b6000828152600360205260409020600901546001600160a01b031633146119485760405162461bcd60e51b81526020600482015260166024820152753737ba1036b0b935b2ba2332b2a1b7b63632b1ba37b960511b6044820152606401610635565b60009182526003602052604090912060090180546001600160a01b0319166001600160a01b03909216919091179055565b600083815260036020526040902054839060ff166119a95760405162461bcd60e51b815260040161063590612cd3565b600260005414156119cc5760405162461bcd60e51b815260040161063590612c9c565b6002600055826119ee5760405162461bcd60e51b815260040161063590612d1e565b6000848152600360205260409020600c015461010090046001600160a01b031615611a51576000848152600360205260409020600c015461010090046001600160a01b03163314611a515760405162461bcd60e51b815260040161063590612d66565b600080600080611a6188886123fd565b935093509350935085841115611ac95760405162461bcd60e51b815260206004820152602760248201527f46697865645261746545786368616e67653a20546f6f206d616e79206261736560448201526620746f6b656e7360c81b6064820152608401610635565b6000888152600360205260409020600b0154611ae59083612650565b6000898152600360205260409020600b810191909155600a0154611b099082612650565b6000898152600360205260409020600a81019190915560020154611b38906001600160a01b031633308761265c565b600088815260036020526040902060070154611b549084612650565b6000898152600360205260409020600781019190915560060154871115611cc4576000888152600360205260409020600c015460ff168015611c0d5750600088815260036020526040908190206001015490516355138f0d60e11b81523060048201526001600160a01b039091169063aa271e1a90602401602060405180830381865afa158015611be9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c0d9190612ec2565b15611c8b57600088815260036020526040908190206001015490516340c10f1960e01b8152336004820152602481018990526001600160a01b03909116906340c10f1990604401600060405180830381600087803b158015611c6e57600080fd5b505af1158015611c82573d6000803e3d6000fd5b50505050611d0e565b60008881526003602052604090208054600190910154611cbf916001600160a01b039182169161010090910416338a61265c565b611d0e565b600088815260036020526040902060060154611ce0908861269a565b6000898152600360205260409020600681019190915560010154611d0e906001600160a01b031633896125e8565b6000888152600360209081526040918290206001015482518781529182018a90526001600160a01b0316918101919091526060810182905260808101839052339089907f71999bcde73cf4958b3a13dcbc60ff31366318eb6e67b45c93725aa07f89cbd29060a0016116f6565b60008181526003602052604081205460ff16611d9957506000919050565b6000828152600360205260408082206002810154905491516370a0823160e01b81526101009092046001600160a01b03908116600484015216906370a0823190602401602060405180830381865afa158015611df9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1d9190612edf565b600084815260036020526040808220600281015490549151636eb1769f60e11b81526001600160a01b0361010090930483166004820152306024820152939450919291169063dd62ed3e90604401602060405180830381865afa158015611e88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eac9190612edf565b905080821015611eda57600084815260036020526040902060070154611ed3908390612650565b9250611efa565b600084815260036020526040902060070154611ef7908290612650565b92505b50505b919050565b6000828152600360205260409020600901546001600160a01b03163314611f645760405162461bcd60e51b81526020600482015260166024820152753737ba1036b0b935b2ba2332b2a1b7b63632b1ba37b960511b6044820152606401610635565b60009182526003602052604090912060080155565b60026000541415611f9c5760405162461bcd60e51b815260040161063590612c9c565b60026000818155828152600360205260408120600a8101805492905560098101549201549091611fd9916001600160a01b039081169116836125e8565b6000828152600360209081526040918290206002015491518381526001600160a01b039092169184917f192a3cd95e40313e0e12c28b398e31633936e38d134419161f883c8d64079055910161126f565b60015460405163b8421e2b60e01b81526001600160a01b038381166004830152600092169063b8421e2b90602401602060405180830381865afa158015612075573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120999190612edf565b92915050565b604080516001600160a01b0380861660208301528085169282019290925290821660608201526000906080016040516020818303038152906040528051906020012090505b9392505050565b60008181526003602052604081205460ff1661210957506000919050565b6000828152600360205260409020600c015460ff1680156121a15750600082815260036020526040908190206001015490516355138f0d60e11b81523060048201526001600160a01b039091169063aa271e1a90602401602060405180830381865afa15801561217d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121a19190612ec2565b156122a6576000828152600360209081526040918290206001015482516318160ddd60e01b815292516001600160a01b03909116926318160ddd9260048083019391928290030181865afa1580156121fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122219190612edf565b600083815260036020908152604091829020600101548251631aa93a7560e11b815292516001600160a01b039091169263355274ea9260048083019391928290030181865afa158015612278573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061229c9190612edf565b6120999190612ef8565b6000828152600360205260408082206001810154905491516370a0823160e01b81526101009092046001600160a01b03908116600484015216906370a0823190602401602060405180830381865afa158015612306573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061232a9190612edf565b600084815260036020526040808220600181015490549151636eb1769f60e11b81526001600160a01b0361010090930483166004820152306024820152939450919291169063dd62ed3e90604401602060405180830381865afa158015612395573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b99190612edf565b9050808210156123e057600084815260036020526040902060060154611ed3908390612650565b600084815260036020526040902060060154611ef7908290612650565b600082815260036020526040812054819081908190869060ff166124335760405162461bcd60e51b815260040161063590612cd3565b60008781526003602052604090206004015461246290670de0b6b3a7640000906117b79061177290600a612eb6565b6000888152600360205260408120600201549195509061248a906001600160a01b031661202a565b905080156124ab576124a8670de0b6b3a76400006117b787846126a6565b93505b6000888152600360205260409020600801546124d690670de0b6b3a7640000906117b79088906126a6565b9250611847846124e68786612650565b90612650565b600081815260036020526040902054819061010090046001600160a01b031633146125295760405162461bcd60e51b815260040161063590612c53565b6002600054141561254c5760405162461bcd60e51b815260040161063590612c9c565b600260008181558381526003602052604081206007810180549290558054920154909161258b916001600160a01b0390811691610100900416836125e8565b6000838152600360209081526040918290206002810154905492518481526001600160a01b039182169361010090049091169186917fecc75f4464886bee0a1c5eae61c0cb4b99c64c5e9cdebe3696217d266f8b1636910161108c565b6040516001600160a01b03831660248201526044810182905261264b90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526126be565b505050565b60006120e48284612f0f565b6040516001600160a01b03808516602483015283166044820152606481018290526126949085906323b872dd60e01b90608401612614565b50505050565b60006120e48284612ef8565b60006120e48284612f27565b60006120e48284612f46565b6000612713826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166127909092919063ffffffff16565b80519091501561264b57808060200190518101906127319190612ec2565b61264b5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610635565b606061279f84846000856127a7565b949350505050565b6060824710156128085760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610635565b843b6128565760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610635565b600080866001600160a01b031685876040516128729190612f94565b60006040518083038185875af1925050503d80600081146128af576040519150601f19603f3d011682016040523d82523d6000602084013e6128b4565b606091505b50915091506128c48282866128cf565b979650505050505050565b606083156128de5750816120e4565b8251156128ee5782518084602001fd5b8160405162461bcd60e51b81526004016106359190612fb0565b80356001600160a01b0381168114611efd57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561295e5761295e61291f565b604052919050565b600067ffffffffffffffff8211156129805761298061291f565b5060051b60200190565b600082601f83011261299b57600080fd5b813560206129b06129ab83612966565b612935565b82815260059290921b840181019181810190868411156129cf57600080fd5b8286015b848110156129ea57803583529183019183016129d3565b509695505050505050565b600080600060608486031215612a0a57600080fd5b612a1384612908565b925060208085013567ffffffffffffffff80821115612a3157600080fd5b818701915087601f830112612a4557600080fd5b8135612a536129ab82612966565b81815260059190911b8301840190848101908a831115612a7257600080fd5b938501935b82851015612a9757612a8885612908565b82529385019390850190612a77565b965050506040870135925080831115612aaf57600080fd5b5050612abd8682870161298a565b9150509250925092565b600060208284031215612ad957600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b81811015612b1857835183529284019291840191600101612afc565b50909695505050505050565b60008060408385031215612b3757600080fd5b82359150612b4760208401612908565b90509250929050565b60008060408385031215612b6357600080fd5b50508035926020909101359150565b600080600060608486031215612b8757600080fd5b505081359360208301359350604090920135919050565b8015158114612bac57600080fd5b50565b60008060408385031215612bc257600080fd5b823591506020830135612bd481612b9e565b809150509250929050565b600060208284031215612bf157600080fd5b6120e482612908565b600080600060608486031215612c0f57600080fd5b612c1884612908565b9250612c2660208501612908565b9150612c3460408501612908565b90509250925092565b634e487b7160e01b600052603260045260246000fd5b60208082526029908201527f46697865645261746545786368616e67653a20696e76616c69642065786368616040820152683733b29037bbb732b960b91b606082015260800190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252602b908201527f46697865645261746545786368616e67653a2045786368616e676520646f657360408201526a206e6f742065786973742160a81b606082015260800190565b60208082526028908201527f46697865645261746545786368616e67653a207a65726f2064617461746f6b656040820152671b88185b5bdd5b9d60c21b606082015260800190565b60208082526036908201527f46697865645261746545786368616e67653a205468697320616464726573732060408201527506973206e6f7420616c6c6f77656420746f20737761760541b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115612e0d578160001904821115612df357612df3612dbc565b80851615612e0057918102915b93841c9390800290612dd7565b509250929050565b600082612e2457506001612099565b81612e3157506000612099565b8160018114612e475760028114612e5157612e6d565b6001915050612099565b60ff841115612e6257612e62612dbc565b50506001821b612099565b5060208310610133831016604e8410600b8410161715612e90575081810a612099565b612e9a8383612dd2565b8060001904821115612eae57612eae612dbc565b029392505050565b60006120e48383612e15565b600060208284031215612ed457600080fd5b81516120e481612b9e565b600060208284031215612ef157600080fd5b5051919050565b600082821015612f0a57612f0a612dbc565b500390565b60008219821115612f2257612f22612dbc565b500190565b6000816000190483118215151615612f4157612f41612dbc565b500290565b600082612f6357634e487b7160e01b600052601260045260246000fd5b500490565b60005b83811015612f83578181015183820152602001612f6b565b838111156126945750506000910152565b60008251612fa6818460208701612f68565b9190910192915050565b6020815260008251806020840152612fcf816040850160208701612f68565b601f01601f1916919091016040019291505056fea26469706673582212207a39153979ea587416600b8146b451020b2f3248d1f1f05112a77e65cae3d03f64736f6c634300080a0033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101cf5760003560e01c806379dd283611610104578063b4241429116100a2578063c66274ea11610071578063c66274ea14610590578063c99733a7146105a3578063f532129e146105b6578063f887ea40146105c957600080fd5b8063b42414291461054f578063b686bcaf14610557578063b8421e2b1461056a578063c1f6572e1461057d57600080fd5b8063855058dd116100de578063855058dd1461041d57806385fcbc2f146105055780638882387214610518578063b32b56f91461052b57600080fd5b806379dd2836146103e45780637c82ebe9146103f7578063825b5cd61461040a57600080fd5b80635acfedc71161017157806360311e951161014b57806360311e9514610378578063680819eb1461038b5780636e4c62691461039e57806371dc14b2146103b157600080fd5b80635acfedc7146103235780635c36901c146103365780635d1ca6311461036957600080fd5b80631e2e3a6b116101ad5780631e2e3a6b1461026857806324cb477e1461027d578063450dccc3146102925780634c87087d146102a557600080fd5b8063012c3275146101d457806303814238146101fa5780630b3b430d14610225575b600080fd5b6101e76101e23660046129f5565b6105dc565b6040519081526020015b60405180910390f35b60025461020d906001600160a01b031681565b6040516001600160a01b0390911681526020016101f1565b610238610233366004612ac7565b610d51565b604080519586526001600160a01b039094166020860152928401919091526060830152608082015260a0016101f1565b610270610e5b565b6040516101f19190612ae0565b61029061028b366004612ac7565b610eb3565b005b6102906102a0366004612ac7565b610f92565b6102b86102b3366004612ac7565b61109e565b604080516001600160a01b039d8e1681529b8d1660208d01528b0199909952999096166060890152608088019490945260a0870192909252151560c086015260e0850152610100840152610120830152610140820192909252901515610160820152610180016101f1565b610290610331366004612ac7565b6111c5565b610359610344366004612ac7565b60009081526003602052604090205460ff1690565b60405190151581526020016101f1565b604051600181526020016101f1565b610290610386366004612b24565b611280565b610290610399366004612b50565b611322565b6102906103ac366004612b72565b61140f565b6103c46103bf366004612b50565b61170d565b6040805194855260208501939093529183015260608201526080016101f1565b6102906103f2366004612baf565b611854565b610290610405366004612b24565b6118e6565b610290610418366004612b72565b611979565b61020d61042b366004612ac7565b60009081526003602081815260409283902083516101e081018552815460ff808216151583526001600160a01b03610100928390048116958401959095526001840154851696830196909652600283015484166060830152938201546080820152600482015460a0820152600582015460c0820152600682015460e0820152600782015484820152600882015461012082015260098201548316610140820152600a820154610160820152600b820154610180820152600c9091015493841615156101a0820152919092049091166101c090910181905290565b6101e7610513366004612ac7565b611d7b565b610290610526366004612b50565b611f02565b6101e7610539366004612ac7565b6000908152600360208190526040909120015490565b6004546101e7565b610290610565366004612ac7565b611f79565b6101e7610578366004612bdf565b61202a565b6101e761058b366004612bfa565b61209f565b6101e761059e366004612ac7565b6120eb565b6103c46105b1366004612b50565b6123fd565b6102906105c4366004612ac7565b6124ec565b60015461020d906001600160a01b031681565b6001546000906001600160a01b0316331461063e5760405162461bcd60e51b815260206004820152601e60248201527f46697865645261746545786368616e67653a206f6e6c7920726f75746572000060448201526064015b60405180910390fd5b60006001600160a01b03168360008151811061065c5761065c612c3d565b60200260200101516001600160a01b031614156106d75760405162461bcd60e51b815260206004820152603360248201527f46697865645261746545786368616e67653a20496e76616c69642062617365546044820152726f6b656e2c20207a65726f206164647265737360681b6064820152608401610635565b6001600160a01b0384166107495760405162461bcd60e51b815260206004820152603360248201527f46697865645261746545786368616e67653a20496e76616c69642064617461746044820152726f6b656e2c20207a65726f206164647265737360681b6064820152608401610635565b836001600160a01b03168360008151811061076657610766612c3d565b60200260200101516001600160a01b031614156107eb5760405162461bcd60e51b815260206004820152603760248201527f46697865645261746545786368616e67653a20496e76616c696420646174617460448201527f6f6b656e2c2020657175616c732062617365546f6b656e0000000000000000006064820152608401610635565b816002815181106107fe576107fe612c3d565b60200260200101516000141561086d5760405162461bcd60e51b815260206004820152602e60248201527f46697865645261746545786368616e67653a20496e76616c696420657863686160448201526d6e676520726174652076616c756560901b6064820152608401610635565b6108ac8360008151811061088357610883612c3d565b6020026020010151858560018151811061089f5761089f612c3d565b602002602001015161209f565b60008181526003602081905260409091200154909150156109235760405162461bcd60e51b815260206004820152602b60248201527f46697865645261746545786368616e67653a2045786368616e676520616c726560448201526a616479206578697374732160a81b6064820152608401610635565b6000600190508260048151811061093c5761093c612c3d565b602002602001015160001415610950575060005b604051806101e001604052806001151581526020018560018151811061097857610978612c3d565b60200260200101516001600160a01b03168152602001866001600160a01b03168152602001856000815181106109b0576109b0612c3d565b60200260200101516001600160a01b03168152602001846002815181106109d9576109d9612c3d565b60200260200101518152602001846001815181106109f9576109f9612c3d565b6020026020010151815260200184600081518110610a1957610a19612c3d565b60200260200101518152602001600081526020016000815260200184600381518110610a4757610a47612c3d565b6020026020010151815260200185600281518110610a6757610a67612c3d565b60200260200101516001600160a01b031681526020016000815260200160008152602001821515815260200185600381518110610aa657610aa6612c3d565b6020908102919091018101516001600160a01b0390811690925260008581526003808352604080832086518154958801518716610100908102610100600160a81b031992151583166001600160a81b0319988916171783559288015160018084018054928a166001600160a01b031993841617905560608a0151600285018054918b1691841691909117905560808a01519584019590955560a089015160048085019190915560c08a0151600585015560e08a01516006850155848a015160078501556101208a015160088501556101408a0151600985018054918b169190931617909155610160890151600a840155610180890151600b8401556101a0890151600c90930180546101c0909a01518916909402921515909116979095169690961795909517909455815493840182559081527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b9092018490558551908716918691610c1457610c14612c3d565b60200260200101516001600160a01b0316837feb7a353641f7d3cc54b497ef1553fdc292b64d9cc3be8587c23dfba01f310b1987600181518110610c5a57610c5a612c3d565b602002602001015187600281518110610c7557610c75612c3d565b6020026020010151604051610c9f9291906001600160a01b03929092168252602082015260400190565b60405180910390a483600181518110610cba57610cba612c3d565b60200260200101516001600160a01b0316827fc7344c45124818d1d3a4c24ccb9b86d8b88d3bd05209b2a42b494cb32a50352960405160405180910390a383600381518110610d0b57610d0b612c3d565b60200260200101516001600160a01b0316827fcc1b4af8292e6b938f6743c78a62317c9a2d60e0d46b77776a027e53ce617c0c60405160405180910390a3509392505050565b600081815260036020818152604080842081516101e081018352815460ff808216151583526001600160a01b036101009283900481168488015260018501548116958401959095526002840154851660608401819052848801546080850152600485015460a0850152600585015460c0850152600685015460e085015260078501548385015260088501546101208501819052600986015487166101408601819052600a870154610160870152600b870154610180870152600c9096015492831615156101a0860152929091049094166101c0830152878752949093529293918291829190610e3f9061202a565b9350806101600151925080610180015191505091939590929450565b60606004805480602002602001604051908101604052809291908181526020018280548015610ea957602002820191906000526020600020905b815481526020019060010190808311610e95575b5050505050905090565b600081815260036020526040902054819061010090046001600160a01b03163314610ef05760405162461bcd60e51b815260040161063590612c53565b60008281526003602052604090205460ff1615610f4b57600082815260036020526040808220805460ff1916905551339184917f03da9148e1de78fba22de63c573465562ebf6ef878a1d3ea83790a560229984c9190a35050565b600082815260036020526040808220805460ff1916600117905551339184917fc7344c45124818d1d3a4c24ccb9b86d8b88d3bd05209b2a42b494cb32a5035299190a35050565b600081815260036020526040902054819061010090046001600160a01b03163314610fcf5760405162461bcd60e51b815260040161063590612c53565b60026000541415610ff25760405162461bcd60e51b815260040161063590612c9c565b600260009081558281526003602052604081206006810180549290558054600190910154611033916001600160a01b039182169161010090910416836125e8565b6000838152600360209081526040918290206001810154905492518481526001600160a01b039182169361010090049091169186917fecc75f4464886bee0a1c5eae61c0cb4b99c64c5e9cdebe3696217d266f8b163691015b60405180910390a45050600160005550565b600081815260036020818152604080842081516101e081018352815460ff80821615158084526001600160a01b036101009384900481169785018890526001860154811696850187905260028601548116606086018190529886015460808601819052600487015460a08701819052600588015460c08801819052600689015460e0890152600789015487890152600889015461012089015260098901548416610140890152600a890154610160890152600b890154610180890152600c9098015494851615156101a088015294909304166101c08501529597949691959194909281908190819081906111918e6120eb565b955061119c8e611d7b565b94508060e0015193508061010001519250806101a0015191505091939597999b5091939597999b565b600260005414156111e85760405162461bcd60e51b815260040161063590612c9c565b60026000818155828152600360205260408120600b8101805492905582549201549091611222916001600160a01b039081169116836125e8565b6000828152600360209081526040918290206002015491518381526001600160a01b039092169184917f457b44fd47c33fc65bfbd58d0202ad97fbed1bbc9881f56441d05fe9ebd58acf91015b60405180910390a350506001600055565b600082815260036020526040902054829061010090046001600160a01b031633146112bd5760405162461bcd60e51b815260040161063590612c53565b600083815260036020526040808220600c018054610100600160a81b0319166101006001600160a01b038716908102919091179091559051909185917fcc1b4af8292e6b938f6743c78a62317c9a2d60e0d46b77776a027e53ce617c0c9190a3505050565b600082815260036020526040902054829061010090046001600160a01b0316331461135f5760405162461bcd60e51b815260040161063590612c53565b816113b85760405162461bcd60e51b815260206004820152602360248201527f46697865645261746545786368616e67653a20526174696f206d7573742062656044820152620203e360ec1b6064820152608401610635565b6000838152600360208190526040918290200183905551339084907fe50f9919fdc524004a4ee0cb934f4734f144bec0713a52e5483b753f5de0f08c906114029086815260200190565b60405180910390a3505050565b600083815260036020526040902054839060ff1661143f5760405162461bcd60e51b815260040161063590612cd3565b600260005414156114625760405162461bcd60e51b815260040161063590612c9c565b6002600055826114845760405162461bcd60e51b815260040161063590612d1e565b6000848152600360205260409020600c015461010090046001600160a01b0316156114e7576000848152600360205260409020600c015461010090046001600160a01b031633146114e75760405162461bcd60e51b815260040161063590612d66565b6000806000806114f7888861170d565b93509350935093508584101561155e5760405162461bcd60e51b815260206004820152602660248201527f46697865645261746545786368616e67653a20546f6f20666577206261736520604482015265746f6b656e7360d01b6064820152608401610635565b6000888152600360205260409020600b015461157a9083612650565b6000898152600360205260409020600b810191909155600a015461159e9082612650565b6000898152600360205260409020600a810191909155600101546115cd906001600160a01b031633308a61265c565b6000888152600360205260409020600601546115e99088612650565b6000898152600360205260409020600681019190915560070154841115611643576000888152600360205260409020805460029091015461163e916001600160a01b039182169161010090910416338761265c565b61168d565b60008881526003602052604090206007015461165f908461269a565b600089815260036020526040902060078101919091556002015461168d906001600160a01b031633866125e8565b6000888152600360209081526040918290206002015482518781529182018a90526001600160a01b0316918101919091526060810182905260808101839052339089907f71999bcde73cf4958b3a13dcbc60ff31366318eb6e67b45c93725aa07f89cbd29060a0015b60405180910390a350506001600055505050505050565b600082815260036020526040812054819081908190869060ff166117435760405162461bcd60e51b815260040161063590612cd3565b6000878152600360205260409020600401546117bd90670de0b6b3a7640000906117b79061177290600a612eb6565b60008b8152600360205260409020600501546117b79061179390600a612eb6565b60008d815260036020819052604090912001546117b1908d906126a6565b906126a6565b906126b2565b600088815260036020526040812060020154919550906117e5906001600160a01b031661202a565b9050801561180657611803670de0b6b3a76400006117b787846126a6565b93505b60008881526003602052604090206008015461183190670de0b6b3a7640000906117b79088906126a6565b925061184784611841878661269a565b9061269a565b9550505092959194509250565b600082815260036020526040902054829061010090046001600160a01b031633146118915760405162461bcd60e51b815260040161063590612c53565b600083815260036020908152604091829020600c01805460ff19168515159081179091559151918252339185917fe28e899e0f5d6fba0c8d73d1888083bcc62d4d9806d2e26fcf1f607c3ed52f539101611402565b6000828152600360205260409020600901546001600160a01b031633146119485760405162461bcd60e51b81526020600482015260166024820152753737ba1036b0b935b2ba2332b2a1b7b63632b1ba37b960511b6044820152606401610635565b60009182526003602052604090912060090180546001600160a01b0319166001600160a01b03909216919091179055565b600083815260036020526040902054839060ff166119a95760405162461bcd60e51b815260040161063590612cd3565b600260005414156119cc5760405162461bcd60e51b815260040161063590612c9c565b6002600055826119ee5760405162461bcd60e51b815260040161063590612d1e565b6000848152600360205260409020600c015461010090046001600160a01b031615611a51576000848152600360205260409020600c015461010090046001600160a01b03163314611a515760405162461bcd60e51b815260040161063590612d66565b600080600080611a6188886123fd565b935093509350935085841115611ac95760405162461bcd60e51b815260206004820152602760248201527f46697865645261746545786368616e67653a20546f6f206d616e79206261736560448201526620746f6b656e7360c81b6064820152608401610635565b6000888152600360205260409020600b0154611ae59083612650565b6000898152600360205260409020600b810191909155600a0154611b099082612650565b6000898152600360205260409020600a81019190915560020154611b38906001600160a01b031633308761265c565b600088815260036020526040902060070154611b549084612650565b6000898152600360205260409020600781019190915560060154871115611cc4576000888152600360205260409020600c015460ff168015611c0d5750600088815260036020526040908190206001015490516355138f0d60e11b81523060048201526001600160a01b039091169063aa271e1a90602401602060405180830381865afa158015611be9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c0d9190612ec2565b15611c8b57600088815260036020526040908190206001015490516340c10f1960e01b8152336004820152602481018990526001600160a01b03909116906340c10f1990604401600060405180830381600087803b158015611c6e57600080fd5b505af1158015611c82573d6000803e3d6000fd5b50505050611d0e565b60008881526003602052604090208054600190910154611cbf916001600160a01b039182169161010090910416338a61265c565b611d0e565b600088815260036020526040902060060154611ce0908861269a565b6000898152600360205260409020600681019190915560010154611d0e906001600160a01b031633896125e8565b6000888152600360209081526040918290206001015482518781529182018a90526001600160a01b0316918101919091526060810182905260808101839052339089907f71999bcde73cf4958b3a13dcbc60ff31366318eb6e67b45c93725aa07f89cbd29060a0016116f6565b60008181526003602052604081205460ff16611d9957506000919050565b6000828152600360205260408082206002810154905491516370a0823160e01b81526101009092046001600160a01b03908116600484015216906370a0823190602401602060405180830381865afa158015611df9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1d9190612edf565b600084815260036020526040808220600281015490549151636eb1769f60e11b81526001600160a01b0361010090930483166004820152306024820152939450919291169063dd62ed3e90604401602060405180830381865afa158015611e88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eac9190612edf565b905080821015611eda57600084815260036020526040902060070154611ed3908390612650565b9250611efa565b600084815260036020526040902060070154611ef7908290612650565b92505b50505b919050565b6000828152600360205260409020600901546001600160a01b03163314611f645760405162461bcd60e51b81526020600482015260166024820152753737ba1036b0b935b2ba2332b2a1b7b63632b1ba37b960511b6044820152606401610635565b60009182526003602052604090912060080155565b60026000541415611f9c5760405162461bcd60e51b815260040161063590612c9c565b60026000818155828152600360205260408120600a8101805492905560098101549201549091611fd9916001600160a01b039081169116836125e8565b6000828152600360209081526040918290206002015491518381526001600160a01b039092169184917f192a3cd95e40313e0e12c28b398e31633936e38d134419161f883c8d64079055910161126f565b60015460405163b8421e2b60e01b81526001600160a01b038381166004830152600092169063b8421e2b90602401602060405180830381865afa158015612075573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120999190612edf565b92915050565b604080516001600160a01b0380861660208301528085169282019290925290821660608201526000906080016040516020818303038152906040528051906020012090505b9392505050565b60008181526003602052604081205460ff1661210957506000919050565b6000828152600360205260409020600c015460ff1680156121a15750600082815260036020526040908190206001015490516355138f0d60e11b81523060048201526001600160a01b039091169063aa271e1a90602401602060405180830381865afa15801561217d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121a19190612ec2565b156122a6576000828152600360209081526040918290206001015482516318160ddd60e01b815292516001600160a01b03909116926318160ddd9260048083019391928290030181865afa1580156121fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122219190612edf565b600083815260036020908152604091829020600101548251631aa93a7560e11b815292516001600160a01b039091169263355274ea9260048083019391928290030181865afa158015612278573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061229c9190612edf565b6120999190612ef8565b6000828152600360205260408082206001810154905491516370a0823160e01b81526101009092046001600160a01b03908116600484015216906370a0823190602401602060405180830381865afa158015612306573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061232a9190612edf565b600084815260036020526040808220600181015490549151636eb1769f60e11b81526001600160a01b0361010090930483166004820152306024820152939450919291169063dd62ed3e90604401602060405180830381865afa158015612395573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b99190612edf565b9050808210156123e057600084815260036020526040902060060154611ed3908390612650565b600084815260036020526040902060060154611ef7908290612650565b600082815260036020526040812054819081908190869060ff166124335760405162461bcd60e51b815260040161063590612cd3565b60008781526003602052604090206004015461246290670de0b6b3a7640000906117b79061177290600a612eb6565b6000888152600360205260408120600201549195509061248a906001600160a01b031661202a565b905080156124ab576124a8670de0b6b3a76400006117b787846126a6565b93505b6000888152600360205260409020600801546124d690670de0b6b3a7640000906117b79088906126a6565b9250611847846124e68786612650565b90612650565b600081815260036020526040902054819061010090046001600160a01b031633146125295760405162461bcd60e51b815260040161063590612c53565b6002600054141561254c5760405162461bcd60e51b815260040161063590612c9c565b600260008181558381526003602052604081206007810180549290558054920154909161258b916001600160a01b0390811691610100900416836125e8565b6000838152600360209081526040918290206002810154905492518481526001600160a01b039182169361010090049091169186917fecc75f4464886bee0a1c5eae61c0cb4b99c64c5e9cdebe3696217d266f8b1636910161108c565b6040516001600160a01b03831660248201526044810182905261264b90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526126be565b505050565b60006120e48284612f0f565b6040516001600160a01b03808516602483015283166044820152606481018290526126949085906323b872dd60e01b90608401612614565b50505050565b60006120e48284612ef8565b60006120e48284612f27565b60006120e48284612f46565b6000612713826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166127909092919063ffffffff16565b80519091501561264b57808060200190518101906127319190612ec2565b61264b5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610635565b606061279f84846000856127a7565b949350505050565b6060824710156128085760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610635565b843b6128565760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610635565b600080866001600160a01b031685876040516128729190612f94565b60006040518083038185875af1925050503d80600081146128af576040519150601f19603f3d011682016040523d82523d6000602084013e6128b4565b606091505b50915091506128c48282866128cf565b979650505050505050565b606083156128de5750816120e4565b8251156128ee5782518084602001fd5b8160405162461bcd60e51b81526004016106359190612fb0565b80356001600160a01b0381168114611efd57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561295e5761295e61291f565b604052919050565b600067ffffffffffffffff8211156129805761298061291f565b5060051b60200190565b600082601f83011261299b57600080fd5b813560206129b06129ab83612966565b612935565b82815260059290921b840181019181810190868411156129cf57600080fd5b8286015b848110156129ea57803583529183019183016129d3565b509695505050505050565b600080600060608486031215612a0a57600080fd5b612a1384612908565b925060208085013567ffffffffffffffff80821115612a3157600080fd5b818701915087601f830112612a4557600080fd5b8135612a536129ab82612966565b81815260059190911b8301840190848101908a831115612a7257600080fd5b938501935b82851015612a9757612a8885612908565b82529385019390850190612a77565b965050506040870135925080831115612aaf57600080fd5b5050612abd8682870161298a565b9150509250925092565b600060208284031215612ad957600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b81811015612b1857835183529284019291840191600101612afc565b50909695505050505050565b60008060408385031215612b3757600080fd5b82359150612b4760208401612908565b90509250929050565b60008060408385031215612b6357600080fd5b50508035926020909101359150565b600080600060608486031215612b8757600080fd5b505081359360208301359350604090920135919050565b8015158114612bac57600080fd5b50565b60008060408385031215612bc257600080fd5b823591506020830135612bd481612b9e565b809150509250929050565b600060208284031215612bf157600080fd5b6120e482612908565b600080600060608486031215612c0f57600080fd5b612c1884612908565b9250612c2660208501612908565b9150612c3460408501612908565b90509250925092565b634e487b7160e01b600052603260045260246000fd5b60208082526029908201527f46697865645261746545786368616e67653a20696e76616c69642065786368616040820152683733b29037bbb732b960b91b606082015260800190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252602b908201527f46697865645261746545786368616e67653a2045786368616e676520646f657360408201526a206e6f742065786973742160a81b606082015260800190565b60208082526028908201527f46697865645261746545786368616e67653a207a65726f2064617461746f6b656040820152671b88185b5bdd5b9d60c21b606082015260800190565b60208082526036908201527f46697865645261746545786368616e67653a205468697320616464726573732060408201527506973206e6f7420616c6c6f77656420746f20737761760541b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115612e0d578160001904821115612df357612df3612dbc565b80851615612e0057918102915b93841c9390800290612dd7565b509250929050565b600082612e2457506001612099565b81612e3157506000612099565b8160018114612e475760028114612e5157612e6d565b6001915050612099565b60ff841115612e6257612e62612dbc565b50506001821b612099565b5060208310610133831016604e8410600b8410161715612e90575081810a612099565b612e9a8383612dd2565b8060001904821115612eae57612eae612dbc565b029392505050565b60006120e48383612e15565b600060208284031215612ed457600080fd5b81516120e481612b9e565b600060208284031215612ef157600080fd5b5051919050565b600082821015612f0a57612f0a612dbc565b500390565b60008219821115612f2257612f22612dbc565b500190565b6000816000190483118215151615612f4157612f41612dbc565b500290565b600082612f6357634e487b7160e01b600052601260045260246000fd5b500490565b60005b83811015612f83578181015183820152602001612f6b565b838111156126945750506000910152565b60008251612fa6818460208701612f68565b9190910192915050565b6020815260008251806020840152612fcf816040850160208701612f68565b601f01601f1916919091016040019291505056fea26469706673582212207a39153979ea587416600b8146b451020b2f3248d1f1f05112a77e65cae3d03f64736f6c634300080a0033",
"linkReferences": {},
"deployedLinkReferences": {}
}