Overview
ETH Balance
3.531186960138386298 ETH
Eth Value
$11,583.27 (@ $3,280.28/ETH)Token Holdings
More Info
Private Name Tags
ContractCreator
Latest 19 from a total of 19 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
Value | ||||
---|---|---|---|---|---|---|---|---|---|
Enable Trade | 10410586 | 1457 days ago | IN | 0 ETH | 0.00145195 | ||||
Set Kyber Networ... | 10410579 | 1457 days ago | IN | 0 ETH | 0.00129914 | ||||
Set Bancor Contr... | 10404569 | 1458 days ago | IN | 0 ETH | 0.00229438 | ||||
Withdraw Token | 10303689 | 1474 days ago | IN | 0 ETH | 0.00170036 | ||||
Set Bancor Contr... | 10288678 | 1476 days ago | IN | 0 ETH | 0.00229438 | ||||
Disable Trade | 10288662 | 1476 days ago | IN | 0 ETH | 0.00113513 | ||||
Enable Trade | 10282899 | 1477 days ago | IN | 0 ETH | 0.00127771 | ||||
Set Bancor Contr... | 10282779 | 1477 days ago | IN | 0 ETH | 0.00229438 | ||||
Disable Trade | 10282771 | 1477 days ago | IN | 0 ETH | 0.00133887 | ||||
Enable Trade | 10277229 | 1478 days ago | IN | 0 ETH | 0.00159714 | ||||
Set Bancor Contr... | 10277225 | 1478 days ago | IN | 0 ETH | 0.00286797 | ||||
Disable Trade | 10276434 | 1478 days ago | IN | 0 ETH | 0.00128066 | ||||
Enable Trade | 9250878 | 1636 days ago | IN | 0 ETH | 0.00023231 | ||||
Set Bancor Contr... | 9250874 | 1636 days ago | IN | 0 ETH | 0.00041716 | ||||
Disable Trade | 9246165 | 1637 days ago | IN | 0 ETH | 0.00058212 | ||||
Add Alerter | 9199694 | 1644 days ago | IN | 0 ETH | 0.00070561 | ||||
Set Kyber Networ... | 9199621 | 1644 days ago | IN | 0 ETH | 0.00023611 | ||||
Trade | 9199300 | 1644 days ago | IN | 0.001 ETH | 0.0007892 | ||||
0x60806040 | 9199280 | 1644 days ago | IN | Contract Creation | 0 ETH | 0.00690782 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | Value | ||
---|---|---|---|---|---|---|
15535000 | 657 days ago | 0.34835271 ETH | ||||
15535000 | 657 days ago | 0.34835271 ETH | ||||
13928671 | 912 days ago | 4.70098783 ETH | ||||
13928671 | 912 days ago | 4.70098783 ETH | ||||
13790258 | 934 days ago | 0.02485261 ETH | ||||
13790258 | 934 days ago | 0.0248551 ETH | ||||
13760024 | 939 days ago | 7.75160797 ETH | ||||
13760024 | 939 days ago | 7.75160797 ETH | ||||
13755715 | 939 days ago | 0.05417108 ETH | ||||
13755715 | 939 days ago | 0.05417649 ETH | ||||
13751297 | 940 days ago | 7.68007152 ETH | ||||
13751297 | 940 days ago | 7.68007152 ETH | ||||
13714958 | 946 days ago | 14.985 ETH | ||||
13714958 | 946 days ago | 14.985 ETH | ||||
13279346 | 1014 days ago | 0.58496969 ETH | ||||
13279346 | 1014 days ago | 0.58502819 ETH | ||||
13271675 | 1015 days ago | 0.59450804 ETH | ||||
13271675 | 1015 days ago | 0.59450804 ETH | ||||
13124701 | 1038 days ago | 29.80702919 ETH | ||||
13124701 | 1038 days ago | 29.81001019 ETH | ||||
13099620 | 1042 days ago | 23.7764437 ETH | ||||
13099620 | 1042 days ago | 23.7764437 ETH | ||||
13093320 | 1043 days ago | 3.84476744 ETH | ||||
13093320 | 1043 days ago | 3.84476744 ETH | ||||
13088172 | 1044 days ago | 0.22798905 ETH |
Loading...
Loading
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0x1263D106...e28858BC1 The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
KyberBancorReserve
Compiler Version
v0.5.11+commit.c082d0b4
Contract Source Code (Solidity Multiple files format)
pragma solidity 0.5.11; import "./IERC20.sol"; import "./IKyberReserve.sol"; import "./WithdrawableV5.sol"; import "./UtilsV5.sol"; import "./IBancorNetwork.sol"; contract KyberBancorReserve is IKyberReserve, Withdrawable, Utils { uint constant internal BPS = 10000; // 10^4 uint constant ETH_BNT_DECIMALS = 18; address public kyberNetwork; bool public tradeEnabled; uint public feeBps; IBancorNetwork public bancorNetwork; // 0x0e936B11c2e7b601055e58c7E32417187aF4de4a IERC20 public bancorEth; // 0xc0829421C1d260BD3cB3E0F06cfE2D52db2cE315 IERC20 public bancorETHBNT; // 0xb1CD6e4153B2a390Cf00A6556b0fC1458C4A5533 IERC20 public bancorToken; // 0x1F573D6Fb3F13d689FF844B4cE37794d79a7FF1C constructor( address _bancorNetwork, address _kyberNetwork, uint _feeBps, address _bancorEth, address _bancorETHBNT, address _bancorToken, address _admin ) public { require(_bancorNetwork != address(0), "constructor: bancorNetwork address is missing"); require(_kyberNetwork != address(0), "constructor: kyberNetwork address is missing"); require(_bancorEth != address(0), "constructor: bancorEth address is missing"); require(_bancorETHBNT != address(0), "constructor: bancorETHBNT address is missing"); require(_bancorToken != address(0), "constructor: bancorToken address is missing"); require(_admin != address(0), "constructor: admin address is missing"); require(_feeBps < BPS, "constructor: fee is too big"); bancorNetwork = IBancorNetwork(_bancorNetwork); bancorToken = IERC20(_bancorToken); bancorEth = IERC20(_bancorEth); bancorETHBNT = IERC20(_bancorETHBNT); kyberNetwork = _kyberNetwork; feeBps = _feeBps; admin = _admin; tradeEnabled = true; require(bancorToken.approve(address(bancorNetwork), 2 ** 255)); } function() external payable { } function getConversionRate(IERC20 src, IERC20 dest, uint srcQty, uint) public view returns(uint) { if (!tradeEnabled) { return 0; } if (srcQty == 0) { return 0; } if (src != ETH_TOKEN_ADDRESS && dest != ETH_TOKEN_ADDRESS) { return 0; // either src or dest must be ETH } IERC20 token = src == ETH_TOKEN_ADDRESS ? dest : src; if (token != bancorToken) { return 0; } // not BNT token IERC20[] memory path = getConversionPath(src, dest); uint destQty; (destQty, ) = bancorNetwork.getReturnByPath(path, srcQty); // src and dest can be only BNT or ETH uint rate = calcRateFromQty(srcQty, destQty, ETH_BNT_DECIMALS, ETH_BNT_DECIMALS); rate = valueAfterReducingFee(rate); return rate; } event TradeExecute( address indexed sender, address src, uint srcAmount, address destToken, uint destAmount, address payable destAddress ); function trade( IERC20 srcToken, uint srcAmount, IERC20 destToken, address payable destAddress, uint conversionRate, bool validate ) public payable returns(bool) { require(tradeEnabled, "trade: trade is not enabled"); require(msg.sender == kyberNetwork, "trade: sender is not network"); require(srcAmount > 0, "trade: src amount must be greater than 0"); require(srcToken == ETH_TOKEN_ADDRESS || destToken == ETH_TOKEN_ADDRESS, "trade: src or dest must be ETH"); require(srcToken == bancorToken || destToken == bancorToken, "trade: src or dest must be BNT"); require(doTrade(srcToken, srcAmount, destToken, destAddress, conversionRate, validate), "trade: doTrade function returns false"); return true; } event KyberNetworkSet(address kyberNetwork); function setKyberNetwork(address _kyberNetwork) public onlyAdmin { require(_kyberNetwork != address(0), "setKyberNetwork: kyberNetwork address is missing"); kyberNetwork = _kyberNetwork; emit KyberNetworkSet(_kyberNetwork); } event BancorNetworkSet(address _bancorNetwork); function setBancorContract(address _bancorNetwork) public onlyAdmin { require(_bancorNetwork != address(0), "setBancorContract: bancorNetwork address is missing"); if (address(bancorNetwork) != address(0)) { require(bancorToken.approve(address(bancorNetwork), 0), "setBancorContract: can not reset approve token"); } bancorNetwork = IBancorNetwork(_bancorNetwork); require(bancorToken.approve(address(bancorNetwork), 2 ** 255), "setBancorContract: can not approve token"); emit BancorNetworkSet(_bancorNetwork); } event FeeBpsSet(uint feeBps); function setFeeBps(uint _feeBps) public onlyAdmin { require(_feeBps < BPS, "setFeeBps: feeBps >= BPS"); feeBps = _feeBps; emit FeeBpsSet(feeBps); } event TradeEnabled(bool enable); function enableTrade() public onlyAdmin returns(bool) { tradeEnabled = true; emit TradeEnabled(true); return true; } function disableTrade() public onlyAlerter returns(bool) { tradeEnabled = false; emit TradeEnabled(false); return true; } function doTrade( IERC20 srcToken, uint srcAmount, IERC20 destToken, address payable destAddress, uint conversionRate, bool validate ) internal returns(bool) { // can skip validation if done at kyber network level if (validate) { require(conversionRate > 0); if (srcToken == ETH_TOKEN_ADDRESS) require(msg.value == srcAmount, "doTrade: msg value is not correct for ETH trade"); else require(msg.value == 0, "doTrade: msg value is not correct for token trade"); } if (srcToken != ETH_TOKEN_ADDRESS) { // collect source amount require(srcToken.transferFrom(msg.sender, address(this), srcAmount), "doTrade: collect src token failed"); } IERC20[] memory path = getConversionPath(srcToken, destToken); require(path.length > 0, "doTrade: couldn't find path"); // BNT and ETH have the same decimals uint userExpectedDestAmount = calcDstQty(srcAmount, ETH_BNT_DECIMALS, ETH_BNT_DECIMALS, conversionRate); require(userExpectedDestAmount > 0, "doTrade: user expected amount must be greater than 0"); uint destAmount; if (srcToken == ETH_TOKEN_ADDRESS) { destAmount = bancorNetwork.convert2.value(srcAmount)(path, srcAmount, userExpectedDestAmount, address(0), 0); } else { destAmount = bancorNetwork.claimAndConvert2(path, srcAmount, userExpectedDestAmount, address(0), 0); } require(destAmount >= userExpectedDestAmount, "doTrade: dest amount is lower than expected amount"); // transfer back only expected dest amount if (destToken == ETH_TOKEN_ADDRESS) { destAddress.transfer(userExpectedDestAmount); } else { require(destToken.transfer(destAddress, userExpectedDestAmount), "doTrade: transfer back dest token failed"); } emit TradeExecute(msg.sender, address(srcToken), srcAmount, address(destToken), userExpectedDestAmount, destAddress); return true; } function getConversionPath(IERC20 src, IERC20 dest) public view returns(IERC20[] memory path) { if (src == bancorToken) { // trade from BNT to ETH path = new IERC20[](3); path[0] = bancorToken; path[1] = bancorETHBNT; path[2] = bancorEth; return path; } else if (dest == bancorToken) { // trade from ETH to BNT path = new IERC20[](3); path[0] = bancorEth; path[1] = bancorETHBNT; path[2] = bancorToken; return path; } } function valueAfterReducingFee(uint val) internal view returns(uint) { require(val <= MAX_QTY, "valueAfterReducingFee: val > MAX_QTY"); return ((BPS - feeBps) * val) / BPS; } }
pragma solidity 0.5.11; import "./IERC20.sol"; contract IBancorNetwork { // to get rate, return dest amount + fee amount function getReturnByPath(IERC20[] calldata _path, uint256 _amount) external view returns (uint256, uint256); // to convert ETH to token, return dest amount function convert2( IERC20[] calldata _path, uint256 _amount, uint256 _minReturn, address _affiliateAccount, uint256 _affiliateFee ) external payable returns (uint256); // to convert token to ETH, return dest amount function claimAndConvert2( IERC20[] calldata _path, uint256 _amount, uint256 _minReturn, address _affiliateAccount, uint256 _affiliateFee ) external returns (uint256); }
pragma solidity 0.5.11; interface IERC20 { function transfer(address _to, uint _value) external returns (bool success); function transferFrom(address _from, address _to, uint _value) external returns (bool success); function approve(address _spender, uint _value) external returns (bool success); function totalSupply() external view returns (uint supply); function balanceOf(address _owner) external view returns (uint balance); function allowance(address _owner, address _spender) external view returns (uint remaining); function decimals() external view returns(uint digits); event Approval(address indexed _owner, address indexed _spender, uint _value); }
pragma solidity 0.5.11; import "./IERC20.sol"; /// @title Kyber Reserve contract interface IKyberReserve { function trade( IERC20 srcToken, uint srcAmount, IERC20 destToken, address payable destAddress, uint conversionRate, bool validate ) external payable returns(bool); function getConversionRate(IERC20 src, IERC20 dest, uint srcQty, uint blockNumber) external view returns(uint); }
pragma solidity 0.5.11; contract PermissionGroups { address public admin; address public pendingAdmin; mapping(address=>bool) internal operators; mapping(address=>bool) internal alerters; address[] internal operatorsGroup; address[] internal alertersGroup; uint constant internal MAX_GROUP_SIZE = 50; constructor() public { admin = msg.sender; } modifier onlyAdmin() { require(msg.sender == admin); _; } modifier onlyOperator() { require(operators[msg.sender]); _; } modifier onlyAlerter() { require(alerters[msg.sender]); _; } function getOperators () external view returns(address[] memory) { return operatorsGroup; } function getAlerters () external view returns(address[] memory) { return alertersGroup; } event TransferAdminPending(address pendingAdmin); /** * @dev Allows the current admin to set the pendingAdmin address. * @param newAdmin The address to transfer ownership to. */ function transferAdmin(address newAdmin) public onlyAdmin { require(newAdmin != address(0)); emit TransferAdminPending(pendingAdmin); pendingAdmin = newAdmin; } /** * @dev Allows the current admin to set the admin in one tx. Useful initial deployment. * @param newAdmin The address to transfer ownership to. */ function transferAdminQuickly(address newAdmin) public onlyAdmin { require(newAdmin != address(0)); emit TransferAdminPending(newAdmin); emit AdminClaimed(newAdmin, admin); admin = newAdmin; } event AdminClaimed( address newAdmin, address previousAdmin); /** * @dev Allows the pendingAdmin address to finalize the change admin process. */ function claimAdmin() public { require(pendingAdmin == msg.sender); emit AdminClaimed(pendingAdmin, admin); admin = pendingAdmin; pendingAdmin = address(0); } event AlerterAdded (address newAlerter, bool isAdd); function addAlerter(address newAlerter) public onlyAdmin { require(!alerters[newAlerter]); // prevent duplicates. require(alertersGroup.length < MAX_GROUP_SIZE); emit AlerterAdded(newAlerter, true); alerters[newAlerter] = true; alertersGroup.push(newAlerter); } function removeAlerter (address alerter) public onlyAdmin { require(alerters[alerter]); alerters[alerter] = false; for (uint i = 0; i < alertersGroup.length; ++i) { if (alertersGroup[i] == alerter) { alertersGroup[i] = alertersGroup[alertersGroup.length - 1]; alertersGroup.length--; emit AlerterAdded(alerter, false); break; } } } event OperatorAdded(address newOperator, bool isAdd); function addOperator(address newOperator) public onlyAdmin { require(!operators[newOperator]); // prevent duplicates. require(operatorsGroup.length < MAX_GROUP_SIZE); emit OperatorAdded(newOperator, true); operators[newOperator] = true; operatorsGroup.push(newOperator); } function removeOperator (address operator) public onlyAdmin { require(operators[operator]); operators[operator] = false; for (uint i = 0; i < operatorsGroup.length; ++i) { if (operatorsGroup[i] == operator) { operatorsGroup[i] = operatorsGroup[operatorsGroup.length - 1]; operatorsGroup.length -= 1; emit OperatorAdded(operator, false); break; } } } }
pragma solidity 0.5.11; import "./IERC20.sol"; /// @title Kyber utils and utils2 contracts contract Utils { IERC20 constant internal ETH_TOKEN_ADDRESS = IERC20(0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE); uint constant internal PRECISION = (10**18); uint constant internal MAX_QTY = (10**28); // 10B tokens uint constant internal MAX_RATE = (PRECISION * 10**6); // up to 1M tokens per ETH uint constant internal MAX_DECIMALS = 18; uint constant internal ETH_DECIMALS = 18; mapping(address=>uint) internal decimals; /// @dev get the balance of a user. /// @param token The token type /// @return The balance function getBalance(IERC20 token, address user) public view returns(uint) { if (token == ETH_TOKEN_ADDRESS) return user.balance; else return token.balanceOf(user); } function setDecimals(IERC20 token) internal { if (token == ETH_TOKEN_ADDRESS) decimals[address(token)] = ETH_DECIMALS; else decimals[address(token)] = token.decimals(); } function getDecimals(IERC20 token) internal view returns(uint) { if (token == ETH_TOKEN_ADDRESS) return ETH_DECIMALS; // save storage access uint tokenDecimals = decimals[address(token)]; // moreover, very possible that old tokens have decimals 0 // these tokens will just have higher gas fees. if (tokenDecimals == 0) return token.decimals(); return tokenDecimals; } function calcDstQty(uint srcQty, uint srcDecimals, uint dstDecimals, uint rate) internal pure returns(uint) { require(srcQty <= MAX_QTY); require(rate <= MAX_RATE); if (dstDecimals >= srcDecimals) { require((dstDecimals - srcDecimals) <= MAX_DECIMALS); return (srcQty * rate * (10**(dstDecimals - srcDecimals))) / PRECISION; } else { require((srcDecimals - dstDecimals) <= MAX_DECIMALS); return (srcQty * rate) / (PRECISION * (10**(srcDecimals - dstDecimals))); } } function calcSrcQty(uint dstQty, uint srcDecimals, uint dstDecimals, uint rate) internal pure returns(uint) { require(dstQty <= MAX_QTY); require(rate <= MAX_RATE); //source quantity is rounded up. to avoid dest quantity being too low. uint numerator; uint denominator; if (srcDecimals >= dstDecimals) { require((srcDecimals - dstDecimals) <= MAX_DECIMALS); numerator = (PRECISION * dstQty * (10**(srcDecimals - dstDecimals))); denominator = rate; } else { require((dstDecimals - srcDecimals) <= MAX_DECIMALS); numerator = (PRECISION * dstQty); denominator = (rate * (10**(dstDecimals - srcDecimals))); } return (numerator + denominator - 1) / denominator; //avoid rounding down errors } function calcDestAmount(IERC20 src, IERC20 dest, uint srcAmount, uint rate) internal view returns(uint) { return calcDstQty(srcAmount, getDecimals(src), getDecimals(dest), rate); } function calcSrcAmount(IERC20 src, IERC20 dest, uint destAmount, uint rate) internal view returns(uint) { return calcSrcQty(destAmount, getDecimals(src), getDecimals(dest), rate); } function calcRateFromQty(uint srcAmount, uint destAmount, uint srcDecimals, uint dstDecimals) internal pure returns(uint) { require(srcAmount <= MAX_QTY); require(destAmount <= MAX_QTY); if (dstDecimals >= srcDecimals) { require((dstDecimals - srcDecimals) <= MAX_DECIMALS); return (destAmount * PRECISION / ((10 ** (dstDecimals - srcDecimals)) * srcAmount)); } else { require((srcDecimals - dstDecimals) <= MAX_DECIMALS); return (destAmount * PRECISION * (10 ** (srcDecimals - dstDecimals)) / srcAmount); } } function minOf(uint x, uint y) internal pure returns(uint) { return x > y ? y : x; } }
pragma solidity 0.5.11; import "./IERC20.sol"; import "./PermissionGroupsV5.sol"; contract Withdrawable is PermissionGroups { event TokenWithdraw(IERC20 token, uint amount, address sendTo); /** * @dev Withdraw all IERC20 compatible tokens * @param token IERC20 The address of the token contract */ function withdrawToken(IERC20 token, uint amount, address sendTo) external onlyAdmin { require(token.transfer(sendTo, amount)); emit TokenWithdraw(token, amount, sendTo); } event EtherWithdraw(uint amount, address sendTo); /** * @dev Withdraw Ethers */ function withdrawEther(uint amount, address payable sendTo) external onlyAdmin { sendTo.transfer(amount); emit EtherWithdraw(amount, sendTo); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":false,"inputs":[],"name":"enableTrade","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"alerter","type":"address"}],"name":"removeAlerter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"feeBps","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pendingAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"bancorToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"sendTo","type":"address"}],"name":"withdrawToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newAlerter","type":"address"}],"name":"addAlerter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"bancorEth","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_kyberNetwork","type":"address"}],"name":"setKyberNetwork","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"bancorETHBNT","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"disableTrade","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract IERC20","name":"srcToken","type":"address"},{"internalType":"uint256","name":"srcAmount","type":"uint256"},{"internalType":"contract IERC20","name":"destToken","type":"address"},{"internalType":"address payable","name":"destAddress","type":"address"},{"internalType":"uint256","name":"conversionRate","type":"uint256"},{"internalType":"bool","name":"validate","type":"bool"}],"name":"trade","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_feeBps","type":"uint256"}],"name":"setFeeBps","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"transferAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"contract IERC20","name":"src","type":"address"},{"internalType":"contract IERC20","name":"dest","type":"address"}],"name":"getConversionPath","outputs":[{"internalType":"contract IERC20[]","name":"path","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"claimAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"transferAdminQuickly","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getAlerters","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"contract IERC20","name":"src","type":"address"},{"internalType":"contract IERC20","name":"dest","type":"address"},{"internalType":"uint256","name":"srcQty","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"getConversionRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOperator","type":"address"}],"name":"addOperator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"bancorNetwork","outputs":[{"internalType":"contract IBancorNetwork","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"removeOperator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"kyberNetwork","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address payable","name":"sendTo","type":"address"}],"name":"withdrawEther","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"getBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tradeEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_bancorNetwork","type":"address"}],"name":"setBancorContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_bancorNetwork","type":"address"},{"internalType":"address","name":"_kyberNetwork","type":"address"},{"internalType":"uint256","name":"_feeBps","type":"uint256"},{"internalType":"address","name":"_bancorEth","type":"address"},{"internalType":"address","name":"_bancorETHBNT","type":"address"},{"internalType":"address","name":"_bancorToken","type":"address"},{"internalType":"address","name":"_admin","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"address","name":"src","type":"address"},{"indexed":false,"internalType":"uint256","name":"srcAmount","type":"uint256"},{"indexed":false,"internalType":"address","name":"destToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"destAmount","type":"uint256"},{"indexed":false,"internalType":"address payable","name":"destAddress","type":"address"}],"name":"TradeExecute","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"kyberNetwork","type":"address"}],"name":"KyberNetworkSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_bancorNetwork","type":"address"}],"name":"BancorNetworkSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"feeBps","type":"uint256"}],"name":"FeeBpsSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enable","type":"bool"}],"name":"TradeEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract IERC20","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"address","name":"sendTo","type":"address"}],"name":"TokenWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"address","name":"sendTo","type":"address"}],"name":"EtherWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"pendingAdmin","type":"address"}],"name":"TransferAdminPending","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"}],"name":"AdminClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newAlerter","type":"address"},{"indexed":false,"internalType":"bool","name":"isAdd","type":"bool"}],"name":"AlerterAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newOperator","type":"address"},{"indexed":false,"internalType":"bool","name":"isAdd","type":"bool"}],"name":"OperatorAdded","type":"event"}]
Deployed Bytecode
0x6080604052600436106101c15760003560e01c806375829def116100f7578063a4edb25e11610095578063d4fac45d11610064578063d4fac45d1461062c578063d621e81314610667578063ea075bfd1461067c578063f851a440146106af576101c1565b8063a4edb25e14610596578063ac8a584a146105ab578063b78b842d146105de578063ce56c454146105f3576101c1565b80637acc8678116100d15780637acc8678146104d25780637c423f54146105055780637cd442721461051a5780639870d7fe14610563576101c1565b806375829def1461044f57806377db93e11461048257806377f50f97146104bd576101c1565b8063408ee7fe1161016457806359c1c6411161013e57806359c1c641146103af5780636940030f146103c45780636cf69811146103d957806372c27b6214610425576101c1565b8063408ee7fe146103345780634d21dff71461036757806354a325a61461037c576101c1565b806326782247116101a0578063267822471461024657806327a099d8146102775780633b172a32146102dc5780633ccdbb28146102f1576101c1565b806299d386146101c357806301a12fd3146101ec57806324a9d8531461021f575b005b3480156101cf57600080fd5b506101d86106c4565b604080519115158252519081900360200190f35b3480156101f857600080fd5b506101c16004803603602081101561020f57600080fd5b50356001600160a01b031661072a565b34801561022b57600080fd5b5061023461088d565b60408051918252519081900360200190f35b34801561025257600080fd5b5061025b610893565b604080516001600160a01b039092168252519081900360200190f35b34801561028357600080fd5b5061028c6108a2565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156102c85781810151838201526020016102b0565b505050509050019250505060405180910390f35b3480156102e857600080fd5b5061025b610904565b3480156102fd57600080fd5b506101c16004803603606081101561031457600080fd5b506001600160a01b03813581169160208101359160409091013516610913565b34801561034057600080fd5b506101c16004803603602081101561035757600080fd5b50356001600160a01b0316610a0e565b34801561037357600080fd5b5061025b610b04565b34801561038857600080fd5b506101c16004803603602081101561039f57600080fd5b50356001600160a01b0316610b13565b3480156103bb57600080fd5b5061025b610bc3565b3480156103d057600080fd5b506101d8610bd2565b6101d8600480360360c08110156103ef57600080fd5b506001600160a01b038135811691602081013591604082013581169160608101359091169060808101359060a001351515610c35565b34801561043157600080fd5b506101c16004803603602081101561044857600080fd5b5035610e9c565b34801561045b57600080fd5b506101c16004803603602081101561047257600080fd5b50356001600160a01b0316610f44565b34801561048e57600080fd5b5061028c600480360360408110156104a557600080fd5b506001600160a01b0381358116916020013516610fcf565b3480156104c957600080fd5b506101c1611143565b3480156104de57600080fd5b506101c1600480360360208110156104f557600080fd5b50356001600160a01b03166111cd565b34801561051157600080fd5b5061028c61129d565b34801561052657600080fd5b506102346004803603608081101561053d57600080fd5b506001600160a01b038135811691602081013590911690604081013590606001356112fd565b34801561056f57600080fd5b506101c16004803603602081101561058657600080fd5b50356001600160a01b03166114c1565b3480156105a257600080fd5b5061025b6115b7565b3480156105b757600080fd5b506101c1600480360360208110156105ce57600080fd5b50356001600160a01b03166115c6565b3480156105ea57600080fd5b5061025b611725565b3480156105ff57600080fd5b506101c16004803603604081101561061657600080fd5b50803590602001356001600160a01b0316611734565b34801561063857600080fd5b506102346004803603604081101561064f57600080fd5b506001600160a01b03813581169160200135166117c9565b34801561067357600080fd5b506101d861188a565b34801561068857600080fd5b506101c16004803603602081101561069f57600080fd5b50356001600160a01b031661189a565b3480156106bb57600080fd5b5061025b611ade565b600080546001600160a01b031633146106dc57600080fd5b6007805460ff60a01b1916600160a01b179055604080516001815290517f7d7f00509dd73ac4449f698ae75ccc797895eff5fa9d446d3df387598a26e7359181900360200190a15060015b90565b6000546001600160a01b0316331461074157600080fd5b6001600160a01b03811660009081526003602052604090205460ff1661076657600080fd5b6001600160a01b0381166000908152600360205260408120805460ff191690555b60055481101561088957816001600160a01b0316600582815481106107a857fe5b6000918252602090912001546001600160a01b03161415610881576005805460001981019081106107d557fe5b600091825260209091200154600580546001600160a01b0390921691839081106107fb57fe5b600091825260209091200180546001600160a01b0319166001600160a01b0392909216919091179055600580549061083790600019830161227f565b50604080516001600160a01b03841681526000602082015281517f5611bf3e417d124f97bf2c788843ea8bb502b66079fbee02158ef30b172cb762929181900390910190a1610889565b600101610787565b5050565b60085481565b6001546001600160a01b031681565b606060048054806020026020016040519081016040528092919081815260200182805480156108fa57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116108dc575b5050505050905090565b600c546001600160a01b031681565b6000546001600160a01b0316331461092a57600080fd5b826001600160a01b031663a9059cbb82846040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561098a57600080fd5b505af115801561099e573d6000803e3d6000fd5b505050506040513d60208110156109b457600080fd5b50516109bf57600080fd5b604080516001600160a01b0380861682526020820185905283168183015290517f72cb8a894ddb372ceec3d2a7648d86f17d5a15caae0e986c53109b8a9a9385e69181900360600190a1505050565b6000546001600160a01b03163314610a2557600080fd5b6001600160a01b03811660009081526003602052604090205460ff1615610a4b57600080fd5b600554603211610a5a57600080fd5b604080516001600160a01b03831681526001602082015281517f5611bf3e417d124f97bf2c788843ea8bb502b66079fbee02158ef30b172cb762929181900390910190a16001600160a01b03166000818152600360205260408120805460ff191660019081179091556005805491820181559091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180546001600160a01b0319169091179055565b600a546001600160a01b031681565b6000546001600160a01b03163314610b2a57600080fd5b6001600160a01b038116610b6f5760405162461bcd60e51b81526004018080602001828103825260308152602001806123236030913960400191505060405180910390fd5b600780546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f38622430bb6defd4452b087e8d0b4a6d1c4d35c179c2d7d875d4abb272b9d88b9181900360200190a150565b600b546001600160a01b031681565b3360009081526003602052604081205460ff16610bee57600080fd5b6007805460ff60a01b19169055604080516000815290517f7d7f00509dd73ac4449f698ae75ccc797895eff5fa9d446d3df387598a26e7359181900360200190a150600190565b600754600090600160a01b900460ff16610c96576040805162461bcd60e51b815260206004820152601b60248201527f74726164653a207472616465206973206e6f7420656e61626c65640000000000604482015290519081900360640190fd5b6007546001600160a01b03163314610cf5576040805162461bcd60e51b815260206004820152601c60248201527f74726164653a2073656e646572206973206e6f74206e6574776f726b00000000604482015290519081900360640190fd5b60008611610d345760405162461bcd60e51b81526004018080602001828103825260288152602001806124056028913960400191505060405180910390fd5b6001600160a01b03871673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1480610d7b57506001600160a01b03851673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee145b610dcc576040805162461bcd60e51b815260206004820152601e60248201527f74726164653a20737263206f722064657374206d757374206265204554480000604482015290519081900360640190fd5b600c546001600160a01b0388811691161480610df55750600c546001600160a01b038681169116145b610e46576040805162461bcd60e51b815260206004820152601e60248201527f74726164653a20737263206f722064657374206d75737420626520424e540000604482015290519081900360640190fd5b610e54878787878787611aed565b610e8f5760405162461bcd60e51b81526004018080602001828103825260258152602001806124db6025913960400191505060405180910390fd5b5060019695505050505050565b6000546001600160a01b03163314610eb357600080fd5b6127108110610f09576040805162461bcd60e51b815260206004820152601860248201527f7365744665654270733a20666565427073203e3d204250530000000000000000604482015290519081900360640190fd5b60088190556040805182815290517f4f78c4ceb393a616bbd264a4584a9ad15d722042ce1e135e6a8380217f5cb42b9181900360200190a150565b6000546001600160a01b03163314610f5b57600080fd5b6001600160a01b038116610f6e57600080fd5b600154604080516001600160a01b039092168252517f3b81caf78fa51ecbc8acb482fd7012a277b428d9b80f9d156e8a54107496cc409181900360200190a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b600c546060906001600160a01b0384811691161415611096576040805160038082526080820190925290602082016060803883395050600c5482519293506001600160a01b03169183915060009061102357fe5b6001600160a01b039283166020918202929092010152600b5482519116908290600190811061104e57fe5b6001600160a01b039283166020918202929092010152600a5482519116908290600290811061107957fe5b6001600160a01b039092166020928302919091019091015261113d565b600c546001600160a01b038381169116141561113d576040805160038082526080820190925290602082016060803883395050600a5482519293506001600160a01b0316918391506000906110e757fe5b6001600160a01b039283166020918202929092010152600b5482519116908290600190811061111257fe5b6001600160a01b039283166020918202929092010152600c5482519116908290600290811061107957fe5b92915050565b6001546001600160a01b0316331461115a57600080fd5b600154600054604080516001600160a01b03938416815292909116602083015280517f65da1cfc2c2e81576ad96afb24a581f8e109b7a403b35cbd3243a1c99efdb9ed9281900390910190a160018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6000546001600160a01b031633146111e457600080fd5b6001600160a01b0381166111f757600080fd5b604080516001600160a01b038316815290517f3b81caf78fa51ecbc8acb482fd7012a277b428d9b80f9d156e8a54107496cc409181900360200190a1600054604080516001600160a01b038085168252909216602083015280517f65da1cfc2c2e81576ad96afb24a581f8e109b7a403b35cbd3243a1c99efdb9ed9281900390910190a1600080546001600160a01b0319166001600160a01b0392909216919091179055565b606060058054806020026020016040519081016040528092919081815260200182805480156108fa576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116108dc575050505050905090565b600754600090600160a01b900460ff16611319575060006114b9565b82611326575060006114b9565b6001600160a01b03851673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1480159061137057506001600160a01b03841673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14155b1561137d575060006114b9565b60006001600160a01b03861673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee146113a957856113ab565b845b600c549091506001600160a01b038083169116146113cd5760009150506114b9565b60606113d98787610fcf565b6009546040805163032125b360e21b815260248101899052600481019182528351604482015283519394506000936001600160a01b0390931692630c8496cc9286928b92829160640190602080870191028083838c5b8381101561144757818101518382015260200161142f565b505050509050019350505050604080518083038186803b15801561146a57600080fd5b505afa15801561147e573d6000803e3d6000fd5b505050506040513d604081101561149457600080fd5b5051905060006114a787836012806120f6565b90506114b28161218d565b9450505050505b949350505050565b6000546001600160a01b031633146114d857600080fd5b6001600160a01b03811660009081526002602052604090205460ff16156114fe57600080fd5b60045460321161150d57600080fd5b604080516001600160a01b03831681526001602082015281517f091a7a4b85135fdd7e8dbc18b12fabe5cc191ea867aa3c2e1a24a102af61d58b929181900390910190a16001600160a01b03166000818152600260205260408120805460ff191660019081179091556004805491820181559091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b0319169091179055565b6009546001600160a01b031681565b6000546001600160a01b031633146115dd57600080fd5b6001600160a01b03811660009081526002602052604090205460ff1661160257600080fd5b6001600160a01b0381166000908152600260205260408120805460ff191690555b60045481101561088957816001600160a01b03166004828154811061164457fe5b6000918252602090912001546001600160a01b0316141561171d5760048054600019810190811061167157fe5b600091825260209091200154600480546001600160a01b03909216918390811061169757fe5b600091825260209091200180546001600160a01b0319166001600160a01b03929092169190911790556004805460001901906116d3908261227f565b50604080516001600160a01b03841681526000602082015281517f091a7a4b85135fdd7e8dbc18b12fabe5cc191ea867aa3c2e1a24a102af61d58b929181900390910190a1610889565b600101611623565b6007546001600160a01b031681565b6000546001600160a01b0316331461174b57600080fd5b6040516001600160a01b0382169083156108fc029084906000818181858888f19350505050158015611781573d6000803e3d6000fd5b50604080518381526001600160a01b038316602082015281517fec47e7ed86c86774d1a72c19f35c639911393fe7c1a34031fdbd260890da90de929181900390910190a15050565b60006001600160a01b03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee141561180157506001600160a01b0381163161113d565b826001600160a01b03166370a08231836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561185757600080fd5b505afa15801561186b573d6000803e3d6000fd5b505050506040513d602081101561188157600080fd5b5051905061113d565b600754600160a01b900460ff1681565b6000546001600160a01b031633146118b157600080fd5b6001600160a01b0381166118f65760405162461bcd60e51b81526004018080602001828103825260338152602001806124806033913960400191505060405180910390fd5b6009546001600160a01b0316156119c957600c546009546040805163095ea7b360e01b81526001600160a01b0392831660048201526000602482018190529151929093169263095ea7b39260448083019360209383900390910190829087803b15801561196257600080fd5b505af1158015611976573d6000803e3d6000fd5b505050506040513d602081101561198c57600080fd5b50516119c95760405162461bcd60e51b815260040180806020018281038252602e8152602001806123d7602e913960400191505060405180910390fd5b600980546001600160a01b0319166001600160a01b038381169190911791829055600c546040805163095ea7b360e01b81529383166004850152600160ff1b60248501525191169163095ea7b39160448083019260209291908290030181600087803b158015611a3857600080fd5b505af1158015611a4c573d6000803e3d6000fd5b505050506040513d6020811015611a6257600080fd5b5051611a9f5760405162461bcd60e51b81526004018080602001828103825260288152602001806122fb6028913960400191505060405180910390fd5b604080516001600160a01b038316815290517f7ff3d9964d574f3c305828d1dbf08ead9c5b2889a50b02bc9ea8d93a899e5a279181900360200190a150565b6000546001600160a01b031681565b60008115611ba75760008311611b0257600080fd5b6001600160a01b03871673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415611b6a57853414611b655760405162461bcd60e51b815260040180806020018281038252602f815260200180612384602f913960400191505060405180910390fd5b611ba7565b3415611ba75760405162461bcd60e51b81526004018080602001828103825260318152602001806123536031913960400191505060405180910390fd5b6001600160a01b03871673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14611c8757604080516323b872dd60e01b81523360048201523060248201526044810188905290516001600160a01b038916916323b872dd9160648083019260209291908290030181600087803b158015611c2057600080fd5b505af1158015611c34573d6000803e3d6000fd5b505050506040513d6020811015611c4a57600080fd5b5051611c875760405162461bcd60e51b815260040180806020018281038252602181526020018061242d6021913960400191505060405180910390fd5b6060611c938887610fcf565b90506000815111611ceb576040805162461bcd60e51b815260206004820152601b60248201527f646f54726164653a20636f756c646e27742066696e6420706174680000000000604482015290519081900360640190fd5b6000611cfa88601280886121f4565b905060008111611d3b5760405162461bcd60e51b81526004018080602001828103825260348152602001806122c76034913960400191505060405180910390fd5b60006001600160a01b038a1673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415611e455760095460405163569706eb60e01b8152602481018b9052604481018490526000606482018190526084820181905260a060048301908152865160a484015286516001600160a01b039094169363569706eb938e93899385938a93839291829160c401906020808a019102808383885b83811015611de9578181015183820152602001611dd1565b5050505090500196505050505050506020604051808303818588803b158015611e1157600080fd5b505af1158015611e25573d6000803e3d6000fd5b50505050506040513d6020811015611e3c57600080fd5b50519050611f23565b60095460405163e57738e560e01b8152602481018b9052604481018490526000606482018190526084820181905260a060048301908152865160a484015286516001600160a01b039094169363e57738e59388938f93899391928392829160c401906020808a019102808383885b83811015611ecb578181015183820152602001611eb3565b505050509050019650505050505050602060405180830381600087803b158015611ef457600080fd5b505af1158015611f08573d6000803e3d6000fd5b505050506040513d6020811015611f1e57600080fd5b505190505b81811015611f625760405162461bcd60e51b815260040180806020018281038252603281526020018061244e6032913960400191505060405180910390fd5b6001600160a01b03881673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415611fc3576040516001600160a01b0388169083156108fc029084906000818181858888f19350505050158015611fbd573d6000803e3d6000fd5b5061208a565b876001600160a01b031663a9059cbb88846040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561202357600080fd5b505af1158015612037573d6000803e3d6000fd5b505050506040513d602081101561204d57600080fd5b505161208a5760405162461bcd60e51b81526004018080602001828103825260288152602001806124b36028913960400191505060405180910390fd5b604080516001600160a01b038c81168252602082018c90528a8116828401526060820185905289166080820152905133917fea9415385bae08fe9f6dc457b02577166790cde83bb18cc340aac6cb81b824de919081900360a00190a25060019998505050505050505050565b60006b204fce5e3e2502611000000085111561211157600080fd5b6b204fce5e3e2502611000000084111561212a57600080fd5b828210612163576012838303111561214157600080fd5b84838303600a0a02670de0b6b3a764000085028161215b57fe5b0490506114b9565b6012828403111561217357600080fd5b84828403600a0a670de0b6b3a76400008602028161215b57fe5b60006b204fce5e3e250261100000008211156121da5760405162461bcd60e51b81526004018080602001828103825260248152602001806123b36024913960400191505060405180910390fd5b612710826008546127100302816121ed57fe5b0492915050565b60006b204fce5e3e2502611000000085111561220f57600080fd5b69d3c21bcecceda100000082111561222657600080fd5b838310612255576012848403111561223d57600080fd5b670de0b6b3a7640000858302858503600a0a0261215b565b6012838503111561226557600080fd5b828403600a0a670de0b6b3a7640000028286028161215b57fe5b8154818355818111156122a3576000838152602090206122a39181019083016122a8565b505050565b61072791905b808211156122c257600081556001016122ae565b509056fe646f54726164653a207573657220657870656374656420616d6f756e74206d7573742062652067726561746572207468616e203073657442616e636f72436f6e74726163743a2063616e206e6f7420617070726f766520746f6b656e7365744b796265724e6574776f726b3a206b796265724e6574776f726b2061646472657373206973206d697373696e67646f54726164653a206d73672076616c7565206973206e6f7420636f727265637420666f7220746f6b656e207472616465646f54726164653a206d73672076616c7565206973206e6f7420636f727265637420666f722045544820747261646576616c756541667465725265647563696e674665653a2076616c203e204d41585f51545973657442616e636f72436f6e74726163743a2063616e206e6f7420726573657420617070726f766520746f6b656e74726164653a2073726320616d6f756e74206d7573742062652067726561746572207468616e2030646f54726164653a20636f6c6c6563742073726320746f6b656e206661696c6564646f54726164653a206465737420616d6f756e74206973206c6f776572207468616e20657870656374656420616d6f756e7473657442616e636f72436f6e74726163743a2062616e636f724e6574776f726b2061646472657373206973206d697373696e67646f54726164653a207472616e73666572206261636b206465737420746f6b656e206661696c656474726164653a20646f54726164652066756e6374696f6e2072657475726e732066616c7365a265627a7a72315820b7ffe464c71fc9687d3e87770547ef43d3ec1085e6f6f772a0a502b72bb8e76864736f6c634300050b0032
Deployed Bytecode Sourcemap
165:8147:3:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5067:145;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5067:145:3;;;:::i;:::-;;;;;;;;;;;;;;;;;;2406:456:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2406:456:4;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2406:456:4;-1:-1:-1;;;;;2406:456:4;;:::i;391:18:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;391:18:3;;;:::i;:::-;;;;;;;;;;;;;;;;85:27:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;85:27:4;;;:::i;:::-;;;;-1:-1:-1;;;;;85:27:4;;;;;;;;;;;;;;656:103;;8:9:-1;5:2;;;30:1;27;20:12;5:2;656:103:4;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;656:103:4;;;;;;;;;;;;;;;;;657:25:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;657:25:3;;;:::i;330:192:6:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;330:192:6;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;330:192:6;;;;;;;;;;;;;;;;;:::i;2094:306:4:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2094:306:4;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2094:306:4;-1:-1:-1;;;;;2094:306:4;;:::i;504:23:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;504:23:3;;;:::i;3914:254::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3914:254:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3914:254:3;-1:-1:-1;;;;;3914:254:3;;:::i;579:26::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;579:26:3;;;:::i;5218:150::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5218:150:3;;;:::i;3012:846::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;3012:846:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4847:176::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4847:176:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4847:176:3;;:::i;1074:188:4:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1074:188:4;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1074:188:4;-1:-1:-1;;;;;1074:188:4;;:::i;7518:592:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7518:592:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7518:592:3;;;;;;;;;;:::i;1836:194:4:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1836:194:4;;;:::i;1437:228::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1437:228:4;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1437:228:4;-1:-1:-1;;;;;1437:228:4;;:::i;765:101::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;765:101:4;;;:::i;2005:804:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2005:804:3;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;2005:804:3;;;;;;;;;;;;;;;;;;;;;;:::i;2927:317:4:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2927:317:4;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2927:317:4;-1:-1:-1;;;;;2927:317:4;;:::i;416:35:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;416:35:3;;;:::i;3250:474:4:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3250:474:4;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3250:474:4;-1:-1:-1;;;;;3250:474:4;;:::i;328:27:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;328:27:3;;;:::i;627:163:6:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;627:163:6;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;627:163:6;;;;;;-1:-1:-1;;;;;627:163:6;;:::i;665:209:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;665:209:5;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;665:209:5;;;;;;;;;;:::i;361:24:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;361:24:3;;;:::i;4227:579::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4227:579:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4227:579:3;-1:-1:-1;;;;;4227:579:3;;:::i;59:20:4:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;59:20:4;;;:::i;5067:145:3:-;5115:4;452:5:4;;-1:-1:-1;;;;;452:5:4;438:10;:19;430:28;;;;;;5131:12:3;:19;;-1:-1:-1;;;;5131:19:3;-1:-1:-1;;;5131:19:3;;;5165:18;;;5146:4;5165:18;;;;;;;;;;;;;-1:-1:-1;5201:4:3;468:1:4;5067:145:3;:::o;2406:456:4:-;452:5;;-1:-1:-1;;;;;452:5:4;438:10;:19;430:28;;;;;;-1:-1:-1;;;;;2482:17:4;;;;;;:8;:17;;;;;;;;2474:26;;;;;;-1:-1:-1;;;;;2510:17:4;;2530:5;2510:17;;;:8;:17;;;;;:25;;-1:-1:-1;;2510:25:4;;;2546:310;2567:13;:20;2563:24;;2546:310;;;2632:7;-1:-1:-1;;;;;2612:27:4;:13;2626:1;2612:16;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2612:16:4;:27;2608:238;;;2678:13;2692:20;;-1:-1:-1;;2692:24:4;;;2678:39;;;;;;;;;;;;;;;;2659:13;:16;;-1:-1:-1;;;;;2678:39:4;;;;2673:1;;2659:16;;;;;;;;;;;;;;;:58;;-1:-1:-1;;;;;;2659:58:4;-1:-1:-1;;;;;2659:58:4;;;;;;;;;;2735:13;:22;;;;;-1:-1:-1;;2735:22:4;;;:::i;:::-;-1:-1:-1;2780:28:4;;;-1:-1:-1;;;;;2780:28:4;;;;2802:5;2780:28;;;;;;;;;;;;;;;;;2826:5;;2608:238;2589:3;;2546:310;;;;2406:456;:::o;391:18:3:-;;;;:::o;85:27:4:-;;;-1:-1:-1;;;;;85:27:4;;:::o;656:103::-;703:16;738:14;731:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;731:21:4;;;;;;;;;;;;;;;;;;;;;;;656:103;:::o;657:25:3:-;;;-1:-1:-1;;;;;657:25:3;;:::o;330:192:6:-;452:5:4;;-1:-1:-1;;;;;452:5:4;438:10;:19;430:28;;;;;;433:5:6;-1:-1:-1;;;;;433:14:6;;448:6;456;433:30;;;;;;;;;;;;;-1:-1:-1;;;;;433:30:6;-1:-1:-1;;;;;433:30:6;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;433:30:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;433:30:6;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;433:30:6;425:39;;;;;;479:36;;;-1:-1:-1;;;;;479:36:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;330:192;;;:::o;2094:306:4:-;452:5;;-1:-1:-1;;;;;452:5:4;438:10;:19;430:28;;;;;;-1:-1:-1;;;;;2170:20:4;;;;;;:8;:20;;;;;;;;2169:21;2161:30;;;;;;2232:13;:20;328:2;-1:-1:-1;2224:46:4;;;;;;2286:30;;;-1:-1:-1;;;;;2286:30:4;;;;2311:4;2286:30;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2326:20:4;;;;;:8;:20;;;;;:27;;-1:-1:-1;;2326:27:4;2349:4;2326:27;;;;;;2363:13;27:10:-1;;23:18;;;45:23;;2363:30:4;;;;;;;-1:-1:-1;;;;;;2363:30:4;;;;;;2094:306::o;504:23:3:-;;;-1:-1:-1;;;;;504:23:3;;:::o;3914:254::-;452:5:4;;-1:-1:-1;;;;;452:5:4;438:10;:19;430:28;;;;;;-1:-1:-1;;;;;3997:27:3;;3989:88;;;;-1:-1:-1;;;3989:88:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4088:12;:28;;-1:-1:-1;;;;;4088:28:3;;-1:-1:-1;;;;;;4088:28:3;;;;;;;;4131:30;;;;;;;;;;;;;;;;3914:254;:::o;579:26::-;;;-1:-1:-1;;;;;579:26:3;;:::o;5218:150::-;620:10:4;5269:4:3;611:20:4;;;:8;:20;;;;;;;;603:29;;;;;;5285:12:3;:20;;-1:-1:-1;;;;5285:20:3;;;5320:19;;;5300:5;5320:19;;;;;;;;;;;;;-1:-1:-1;5357:4:3;5218:150;:::o;3012:846::-;3273:12;;3244:4;;-1:-1:-1;;;3273:12:3;;;;3265:52;;;;;-1:-1:-1;;;3265:52:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;3349:12;;-1:-1:-1;;;;;3349:12:3;3335:10;:26;3327:67;;;;;-1:-1:-1;;;3327:67:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;3424:1;3412:9;:13;3404:66;;;;-1:-1:-1;;;3404:66:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3488:29:3;;168:42:5;3488:29:3;;:63;;-1:-1:-1;;;;;;3521:30:3;;168:42:5;3521:30:3;3488:63;3480:106;;;;;-1:-1:-1;;;3480:106:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;3616:11;;-1:-1:-1;;;;;3604:23:3;;;3616:11;;3604:23;;:51;;-1:-1:-1;3644:11:3;;-1:-1:-1;;;;;3631:24:3;;;3644:11;;3631:24;3604:51;3596:94;;;;;-1:-1:-1;;;3596:94:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;3709:78;3717:8;3727:9;3738;3749:11;3762:14;3778:8;3709:7;:78::i;:::-;3701:128;;;;-1:-1:-1;;;3701:128:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3847:4:3;3012:846;;;;;;;;:::o;4847:176::-;452:5:4;;-1:-1:-1;;;;;452:5:4;438:10;:19;430:28;;;;;;267:5:3;4915:7;:13;4907:50;;;;;-1:-1:-1;;;4907:50:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;4968:6;:16;;;4999:17;;;;;;;;;;;;;;;;;4847:176;:::o;1074:188:4:-;452:5;;-1:-1:-1;;;;;452:5:4;438:10;:19;430:28;;;;;;-1:-1:-1;;;;;1150:22:4;;1142:31;;;;;;1209:12;;1188:34;;;-1:-1:-1;;;;;1209:12:4;;;1188:34;;;;;;;;;;;;1232:12;:23;;-1:-1:-1;;;;;;1232:23:4;-1:-1:-1;;;;;1232:23:4;;;;;;;;;;1074:188::o;7518:592:3:-;7634:11;;7590:20;;-1:-1:-1;;;;;7627:18:3;;;7634:11;;7627:18;7623:481;;;7705:15;;;7718:1;7705:15;;;;;;;;;;;;;17::-1;;105:10;7705:15:3;88:34:-1;-1:-1;;7744:11:3;;7734:7;;;;-1:-1:-1;;;;;;7744:11:3;;7734:7;;-1:-1:-1;7744:11:3;;7734:7;;;;-1:-1:-1;;;;;7734:21:3;;;:7;;;;;;;;;:21;7779:12;;7769:7;;7779:12;;;7769:4;;7779:12;;7769:7;;;;;;-1:-1:-1;;;;;7769:22:3;;;:7;;;;;;;;;:22;7815:9;;7805:7;;7815:9;;;7805:4;;7810:1;;7805:7;;;;;;-1:-1:-1;;;;;7805:19:3;;;:7;;;;;;;;;;;:19;7838:11;;7623:481;7878:11;;-1:-1:-1;;;;;7870:19:3;;;7878:11;;7870:19;7866:238;;;7949:15;;;7962:1;7949:15;;;;;;;;;;;;;17::-1;;105:10;7949:15:3;88:34:-1;-1:-1;;7988:9:3;;7978:7;;;;-1:-1:-1;;;;;;7988:9:3;;7978:7;;-1:-1:-1;7988:9:3;;7978:7;;;;-1:-1:-1;;;;;7978:19:3;;;:7;;;;;;;;;:19;8021:12;;8011:7;;8021:12;;;8011:4;;8021:12;;8011:7;;;;;;-1:-1:-1;;;;;8011:22:3;;;:7;;;;;;;;;:22;8057:11;;8047:7;;8057:11;;;8047:4;;8052:1;;8047:7;;;;;7866:238;7518:592;;;;:::o;1836:194:4:-;1883:12;;-1:-1:-1;;;;;1883:12:4;1899:10;1883:26;1875:35;;;;;;1938:12;;;1952:5;1925:33;;;-1:-1:-1;;;;;1938:12:4;;;1925:33;;1952:5;;;;1925:33;;;;;;;;;;;;;;;;1976:12;;;;1968:20;;-1:-1:-1;;;;;;1968:20:4;;;-1:-1:-1;;;;;1976:12:4;;1968:20;;;;1998:25;;;1836:194::o;1437:228::-;452:5;;-1:-1:-1;;;;;452:5:4;438:10;:19;430:28;;;;;;-1:-1:-1;;;;;1520:22:4;;1512:31;;;;;;1558:30;;;-1:-1:-1;;;;;1558:30:4;;;;;;;;;;;;;;;1626:5;;1603:29;;;-1:-1:-1;;;;;1603:29:4;;;;;1626:5;;;1603:29;;;;;;;;;;;;;;;;1642:5;:16;;-1:-1:-1;;;;;;1642:16:4;-1:-1:-1;;;;;1642:16:4;;;;;;;;;;1437:228::o;765:101::-;811:16;846:13;839:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;839:20:4;;;;;;;;;;;;;;;;;;;;;;765:101;:::o;2005:804:3:-;2117:12;;2096:4;;-1:-1:-1;;;2117:12:3;;;;2112:32;;-1:-1:-1;2140:1:3;2133:8;;2112:32;2157:11;2153:30;;-1:-1:-1;2179:1:3;2172:8;;2153:30;-1:-1:-1;;;;;2197:24:3;;168:42:5;2197:24:3;;;;:53;;-1:-1:-1;;;;;;2225:25:3;;168:42:5;2225:25:3;;2197:53;2193:126;;;-1:-1:-1;2273:1:3;2266:8;;2193:126;2328:12;-1:-1:-1;;;;;2343:24:3;;168:42:5;2343:24:3;:37;;2377:3;2343:37;;;2370:4;2343:37;2403:11;;2328:52;;-1:-1:-1;;;;;;2394:20:3;;;2403:11;;2394:20;2390:39;;2425:1;2418:8;;;;;2390:39;2456:20;2479:28;2497:3;2502:4;2479:17;:28::i;:::-;2554:13;;:43;;;-1:-1:-1;;;2554:43:3;;;;;;;;;;;;;;;;;;;;;;2456:51;;-1:-1:-1;2518:12:3;;-1:-1:-1;;;;;2554:13:3;;;;:29;;2456:51;;2590:6;;2554:43;;;;;;;;;;;;;;2518:12;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2554:43:3;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2554:43:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2554:43:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2554:43:3;;-1:-1:-1;2655:9:3;2667:68;2683:6;2554:43;319:2;;2667:15;:68::i;:::-;2655:80;;2753:27;2775:4;2753:21;:27::i;:::-;2746:34;-1:-1:-1;;;;;2005:804:3;;;;;;;:::o;2927:317:4:-;452:5;;-1:-1:-1;;;;;452:5:4;438:10;:19;430:28;;;;;;-1:-1:-1;;;;;3005:22:4;;;;;;:9;:22;;;;;;;;3004:23;2996:32;;;;;;3069:14;:21;328:2;-1:-1:-1;3061:47:4;;;;;;3124:32;;;-1:-1:-1;;;;;3124:32:4;;;;3151:4;3124:32;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3166:22:4;;;;;:9;:22;;;;;:29;;-1:-1:-1;;3166:29:4;3191:4;3166:29;;;;;;3205:14;27:10:-1;;23:18;;;45:23;;3205:32:4;;;;;;;-1:-1:-1;;;;;;3205:32:4;;;;;;2927:317::o;416:35:3:-;;;-1:-1:-1;;;;;416:35:3;;:::o;3250:474:4:-;452:5;;-1:-1:-1;;;;;452:5:4;438:10;:19;430:28;;;;;;-1:-1:-1;;;;;3328:19:4;;;;;;:9;:19;;;;;;;;3320:28;;;;;;-1:-1:-1;;;;;3358:19:4;;3380:5;3358:19;;;:9;:19;;;;;:27;;-1:-1:-1;;3358:27:4;;;3396:322;3417:14;:21;3413:25;;3396:322;;;3484:8;-1:-1:-1;;;;;3463:29:4;:14;3478:1;3463:17;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3463:17:4;:29;3459:249;;;3532:14;3547:21;;-1:-1:-1;;3547:25:4;;;3532:41;;;;;;;;;;;;;;;;3512:14;:17;;-1:-1:-1;;;;;3532:41:4;;;;3527:1;;3512:17;;;;;;;;;;;;;;;:61;;-1:-1:-1;;;;;;3512:61:4;-1:-1:-1;;;;;3512:61:4;;;;;;;;;;3591:14;:26;;-1:-1:-1;;3591:26:4;;;;;;:::i;:::-;-1:-1:-1;3640:30:4;;;-1:-1:-1;;;;;3640:30:4;;;;3664:5;3640:30;;;;;;;;;;;;;;;;;3688:5;;3459:249;3440:3;;3396:322;;328:27:3;;;-1:-1:-1;;;;;328:27:3;;:::o;627:163:6:-;452:5:4;;-1:-1:-1;;;;;452:5:4;438:10;:19;430:28;;;;;;716:23:6;;-1:-1:-1;;;;;716:15:6;;;:23;;;;;732:6;;716:23;;;;732:6;716:15;:23;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;754:29:6;;;;;;-1:-1:-1;;;;;754:29:6;;;;;;;;;;;;;;;;;;;627:163;;:::o;665:209:5:-;733:4;-1:-1:-1;;;;;753:26:5;;168:42;753:26;749:118;;;-1:-1:-1;;;;;;800:12:5;;;793:19;;749:118;846:5;-1:-1:-1;;;;;846:15:5;;862:4;846:21;;;;;;;;;;;;;-1:-1:-1;;;;;846:21:5;-1:-1:-1;;;;;846:21:5;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;846:21:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;846:21:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;846:21:5;;-1:-1:-1;839:28:5;;361:24:3;;;-1:-1:-1;;;361:24:3;;;;;:::o;4227:579::-;452:5:4;;-1:-1:-1;;;;;452:5:4;438:10;:19;430:28;;;;;;-1:-1:-1;;;;;4313:28:3;;4305:92;;;;-1:-1:-1;;;4305:92:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4420:13;;-1:-1:-1;;;;;4420:13:3;4412:36;4408:172;;4472:11;;4500:13;;4472:46;;;-1:-1:-1;;;4472:46:3;;-1:-1:-1;;;;;4500:13:3;;;4472:46;;;;:11;:46;;;;;;;;:11;;;;;:19;;:46;;;;;;;;;;;;;;;;:11;:46;;;5:2:-1;;;;30:1;27;20:12;5:2;4472:46:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4472:46:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4472:46:3;4464:105;;;;-1:-1:-1;;;4464:105:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4589:13;:46;;-1:-1:-1;;;;;;4589:46:3;-1:-1:-1;;;;;4589:46:3;;;;;;;;;;;4653:11;;:53;;;-1:-1:-1;;;4653:53:3;;4681:13;;;4653:53;;;;-1:-1:-1;;;4653:53:3;;;;;:11;;;:19;;:53;;;;;;;;;;;;;;-1:-1:-1;4653:11:3;:53;;;5:2:-1;;;;30:1;27;20:12;5:2;4653:53:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4653:53:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4653:53:3;4645:106;;;;-1:-1:-1;;;4645:106:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4767:32;;;-1:-1:-1;;;;;4767:32:3;;;;;;;;;;;;;;;4227:579;:::o;59:20:4:-;;;-1:-1:-1;;;;;59:20:4;;:::o;5374:2138:3:-;5594:4;5680:8;5676:324;;;5729:1;5712:14;:18;5704:27;;;;;;-1:-1:-1;;;;;5749:29:3;;168:42:5;5749:29:3;5745:244;;;5817:9;5804;:22;5796:82;;;;-1:-1:-1;;;5796:82:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5745:244;;;5921:9;:14;5913:76;;;;-1:-1:-1;;;5913:76:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6014:29:3;;168:42:5;6014:29:3;6010:202;;6104:59;;;-1:-1:-1;;;6104:59:3;;6126:10;6104:59;;;;6146:4;6104:59;;;;;;;;;;;;-1:-1:-1;;;;;6104:21:3;;;;;:59;;;;;;;;;;;;;;-1:-1:-1;6104:21:3;:59;;;5:2:-1;;;;30:1;27;20:12;5:2;6104:59:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6104:59:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6104:59:3;6096:105;;;;-1:-1:-1;;;6096:105:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6222:20;6245:38;6263:8;6273:9;6245:17;:38::i;:::-;6222:61;;6315:1;6301:4;:11;:15;6293:55;;;;;-1:-1:-1;;;6293:55:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;6405:27;6435:73;6446:9;319:2;;6493:14;6435:10;:73::i;:::-;6405:103;;6551:1;6526:22;:26;6518:91;;;;-1:-1:-1;;;6518:91:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6619:15;-1:-1:-1;;;;;6649:29:3;;168:42:5;6649:29:3;6645:298;;;6707:13;;:95;;-1:-1:-1;;;6707:95:3;;;;;;;;;;;;;;:13;:95;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6707:13:3;;;;:22;;6736:9;;6747:4;;6736:9;;6764:22;;6707:13;;:95;;;;;;;;;;;;;;;:13;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;6707:95:3;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6707:95:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6707:95:3;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6707:95:3;;-1:-1:-1;6645:298:3;;;6846:13;;:86;;-1:-1:-1;;;6846:86:3;;;;;;;;;;;;;;:13;:86;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6846:13:3;;;;:30;;6877:4;;6883:9;;6894:22;;6846:13;;;;:86;;;;;;;;;;;;;;:13;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;6846:86:3;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6846:86:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6846:86:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6846:86:3;;-1:-1:-1;6645:298:3;6975:22;6961:10;:36;;6953:99;;;;-1:-1:-1;;;6953:99:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7118:30:3;;168:42:5;7118:30:3;7114:244;;;7164:44;;-1:-1:-1;;;;;7164:20:3;;;:44;;;;;7185:22;;7164:44;;;;7185:22;7164:20;:44;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7164:44:3;7114:244;;;7247:9;-1:-1:-1;;;;;7247:18:3;;7266:11;7279:22;7247:55;;;;;;;;;;;;;-1:-1:-1;;;;;7247:55:3;-1:-1:-1;;;;;7247:55:3;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7247:55:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7247:55:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7247:55:3;7239:108;;;;-1:-1:-1;;;7239:108:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7373:111;;;-1:-1:-1;;;;;7373:111:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7386:10;;7373:111;;;;;;;;;;-1:-1:-1;7501:4:3;;5374:2138;-1:-1:-1;;;;;;;;;5374:2138:3:o;3329:614:5:-;3453:4;304:6;3481:9;:20;;3473:29;;;;;;304:6;3520:10;:21;;3512:30;;;;;;3572:11;3557;:26;3553:384;;458:2;3622:11;3608;:25;3607:43;;3599:52;;;;;;3737:9;3721:11;3707;:25;3700:2;:33;3699:47;254:6;3673:10;:22;:74;;;;;;3665:83;;;;3553:384;458:2;3802:11;3788;:25;3787:43;;3779:52;;;;;;3916:9;3900:11;3886;:25;3879:2;:33;254:6;3853:10;:22;:60;:72;;;;8116:194:3;8179:4;304:6:5;8203:3:3;:14;;8195:63;;;;-1:-1:-1;;;8195:63:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;267:5;8293:3;8283:6;;267:5;8277:12;8276:20;8275:28;;;;;;;8116:194;-1:-1:-1;;8116:194:3:o;1526:558:5:-;1628:4;304:6;1652;:17;;1644:26;;;;;;368:17;1688:16;;;1680:25;;;;;;1735:11;1720;:26;1716:362;;458:2;1785:11;1771;:25;1770:43;;1762:52;;;;;;254:6;1836:13;;;1858:25;;;1853:2;:31;1836:49;1835:63;;1716:362;458:2;1952:11;1938;:25;1937:43;;1929:52;;;;;;2053:11;2039;:25;2034:2;:31;254:6;2021:45;2012:4;2003:6;:13;2002:65;;;;165:8147:3;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;
Swarm Source
bzzr://b7ffe464c71fc9687d3e87770547ef43d3ec1085e6f6f772a0a502b72bb8e768
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.