More Info
Private Name Tags
ContractCreator
Latest 21 from a total of 21 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw Token | 7199560 | 2067 days ago | IN | 0 ETH | 0.0002265 | ||||
Withdraw Token | 7199556 | 2067 days ago | IN | 0 ETH | 0.00022496 | ||||
Withdraw Ether | 7199553 | 2067 days ago | IN | 0 ETH | 0.00026863 | ||||
Set Internal Inv... | 7123506 | 2082 days ago | IN | 0 ETH | 0.00035463 | ||||
Set Internal Pri... | 7025635 | 2100 days ago | IN | 0 ETH | 0.00031608 | ||||
Set Internal Inv... | 7024807 | 2100 days ago | IN | 0 ETH | 0.00031801 | ||||
Set Internal Pri... | 7024801 | 2100 days ago | IN | 0 ETH | 0.00058608 | ||||
Set Kyber Networ... | 7019019 | 2101 days ago | IN | 0 ETH | 0.00084462 | ||||
Set Internal Pri... | 7004823 | 2104 days ago | IN | 0 ETH | 0.00028096 | ||||
Set Internal Pri... | 6976446 | 2109 days ago | IN | 0 ETH | 0.00035121 | ||||
Add Alerter | 6967026 | 2110 days ago | IN | 0 ETH | 0.00086948 | ||||
Add Operator | 6967022 | 2110 days ago | IN | 0 ETH | 0.000723 | ||||
Set Kyber Networ... | 6966975 | 2110 days ago | IN | 0 ETH | 0.00030165 | ||||
Set Internal Pri... | 6964643 | 2111 days ago | IN | 0 ETH | 0.00050121 | ||||
Set Internal Pri... | 6964610 | 2111 days ago | IN | 0 ETH | 0.00020057 | ||||
Set Internal Inv... | 6964501 | 2111 days ago | IN | 0 ETH | 0.00035463 | ||||
Set Internal Pri... | 6964491 | 2111 days ago | IN | 0 ETH | 0.00065121 | ||||
List Token | 6964484 | 2111 days ago | IN | 0 ETH | 0.00127258 | ||||
List Token | 6964466 | 2111 days ago | IN | 0 ETH | 0.00127514 | ||||
Add Operator | 6964457 | 2111 days ago | IN | 0 ETH | 0.000873 | ||||
0x60606040 | 6964430 | 2111 days ago | IN | 0 ETH | 0.0283739 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
7199553 | 2067 days ago | 11.24594239 ETH | ||||
7198848 | 2067 days ago | 11.11818662 ETH | ||||
7198372 | 2067 days ago | 5.98856921 ETH | ||||
7198289 | 2067 days ago | 2.0664966 ETH | ||||
7198186 | 2067 days ago | 3.80798509 ETH | ||||
7198052 | 2067 days ago | 7.4469274 ETH | ||||
7198052 | 2067 days ago | 7.46559138 ETH | ||||
7198041 | 2067 days ago | 7.18024127 ETH | ||||
7198041 | 2067 days ago | 7.19823686 ETH | ||||
7198024 | 2067 days ago | 0.25 ETH | ||||
7197983 | 2067 days ago | 1 ETH | ||||
7197935 | 2067 days ago | 18.00262348 ETH | ||||
7197935 | 2067 days ago | 18.04774284 ETH | ||||
7197929 | 2067 days ago | 6.56952333 ETH | ||||
7197929 | 2067 days ago | 6.5859883 ETH | ||||
7197906 | 2067 days ago | 3.28476166 ETH | ||||
7197852 | 2067 days ago | 16.63716519 ETH | ||||
7197833 | 2067 days ago | 12.47787389 ETH | ||||
7197822 | 2067 days ago | 16.63716519 ETH | ||||
7197813 | 2067 days ago | 16.92831559 ETH | ||||
7197790 | 2067 days ago | 16.58231937 ETH | ||||
7197782 | 2067 days ago | 5.97111871 ETH | ||||
7197763 | 2067 days ago | 16.58644087 ETH | ||||
7197734 | 2067 days ago | 16.58644087 ETH | ||||
7197729 | 2067 days ago | 20.73305109 ETH |
Loading...
Loading
Contract Name:
KyberOasisReserve
Compiler Version
v0.4.18+commit.9cf6e910
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-12-27 */ pragma solidity 0.4.18; // File: contracts/ERC20Interface.sol // https://github.com/ethereum/EIPs/issues/20 interface ERC20 { function totalSupply() public view returns (uint supply); function balanceOf(address _owner) public view returns (uint balance); function transfer(address _to, uint _value) public returns (bool success); function transferFrom(address _from, address _to, uint _value) public returns (bool success); function approve(address _spender, uint _value) public returns (bool success); function allowance(address _owner, address _spender) public view returns (uint remaining); function decimals() public view returns(uint digits); event Approval(address indexed _owner, address indexed _spender, uint _value); } // File: contracts/KyberReserveInterface.sol /// @title Kyber Reserve contract interface KyberReserveInterface { function trade( ERC20 srcToken, uint srcAmount, ERC20 destToken, address destAddress, uint conversionRate, bool validate ) public payable returns(bool); function getConversionRate(ERC20 src, ERC20 dest, uint srcQty, uint blockNumber) public view returns(uint); } // File: contracts/Utils.sol /// @title Kyber constants contract contract Utils { ERC20 constant internal ETH_TOKEN_ADDRESS = ERC20(0x00eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee); 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; function setDecimals(ERC20 token) internal { if (token == ETH_TOKEN_ADDRESS) decimals[token] = ETH_DECIMALS; else decimals[token] = token.decimals(); } function getDecimals(ERC20 token) internal view returns(uint) { if (token == ETH_TOKEN_ADDRESS) return ETH_DECIMALS; // save storage access uint tokenDecimals = decimals[token]; // technically, there might be token with decimals 0 // 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 } } // File: contracts/Utils2.sol contract Utils2 is Utils { /// @dev get the balance of a user. /// @param token The token type /// @return The balance function getBalance(ERC20 token, address user) public view returns(uint) { if (token == ETH_TOKEN_ADDRESS) return user.balance; else return token.balanceOf(user); } function getDecimalsSafe(ERC20 token) internal returns(uint) { if (decimals[token] == 0) { setDecimals(token); } return decimals[token]; } function calcDestAmount(ERC20 src, ERC20 dest, uint srcAmount, uint rate) internal view returns(uint) { return calcDstQty(srcAmount, getDecimals(src), getDecimals(dest), rate); } function calcSrcAmount(ERC20 src, ERC20 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); } } } // File: contracts/PermissionGroups.sol 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; function PermissionGroups() 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[]) { return operatorsGroup; } function getAlerters () external view returns(address[]) { 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)); 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)); TransferAdminPending(newAdmin); 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); 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); 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--; 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); 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; OperatorAdded(operator, false); break; } } } } // File: contracts/Withdrawable.sol /** * @title Contracts that should be able to recover tokens or ethers * @author Ilan Doron * @dev This allows to recover any tokens or Ethers received in a contract. * This will prevent any accidental loss of tokens. */ contract Withdrawable is PermissionGroups { event TokenWithdraw(ERC20 token, uint amount, address sendTo); /** * @dev Withdraw all ERC20 compatible tokens * @param token ERC20 The address of the token contract */ function withdrawToken(ERC20 token, uint amount, address sendTo) external onlyAdmin { require(token.transfer(sendTo, amount)); TokenWithdraw(token, amount, sendTo); } event EtherWithdraw(uint amount, address sendTo); /** * @dev Withdraw Ethers */ function withdrawEther(uint amount, address sendTo) external onlyAdmin { sendTo.transfer(amount); EtherWithdraw(amount, sendTo); } } // File: contracts/oasisContracts/KyberOasisReserve.sol contract OtcInterface { function getOffer(uint id) public constant returns (uint, ERC20, uint, ERC20); function getBestOffer(ERC20 sellGem, ERC20 buyGem) public constant returns(uint); function getWorseOffer(uint id) public constant returns(uint); function take(bytes32 id, uint128 maxTakeAmount) public; } contract WethInterface is ERC20 { function deposit() public payable; function withdraw(uint) public; } contract KyberOasisReserve is KyberReserveInterface, Withdrawable, Utils2 { uint constant internal COMMON_DECIMALS = 18; address public sanityRatesContract = 0; address public kyberNetwork; OtcInterface public otc; WethInterface public wethToken; mapping(address=>bool) public isTokenListed; mapping(address=>uint) public tokenMinSrcAmount; mapping(address=>uint) public minTokenBalance; mapping(address=>uint) public maxTokenBalance; mapping(address=>uint) public internalPricePremiumBps; mapping(address=>uint) public minOasisSpreadForinternalPricingBps; bool public tradeEnabled; uint public feeBps; function KyberOasisReserve( address _kyberNetwork, OtcInterface _otc, WethInterface _wethToken, address _admin, uint _feeBps ) public { require(_admin != address(0)); require(_kyberNetwork != address(0)); require(_otc != address(0)); require(_wethToken != address(0)); require(_feeBps < 10000); require(getDecimals(_wethToken) == COMMON_DECIMALS); kyberNetwork = _kyberNetwork; otc = _otc; wethToken = _wethToken; admin = _admin; feeBps = _feeBps; tradeEnabled = true; require(wethToken.approve(otc, 2**255)); } function() public payable { // anyone can deposit ether } function listToken(ERC20 token, uint minSrcAmount) public onlyAdmin { require(token != address(0)); require(!isTokenListed[token]); require(getDecimals(token) == COMMON_DECIMALS); require(token.approve(otc, 2**255)); isTokenListed[token] = true; tokenMinSrcAmount[token] = minSrcAmount; minTokenBalance[token] = 2 ** 255; // disable by default maxTokenBalance[token] = 0; // disable by default; internalPricePremiumBps[token] = 0; // NA by default minOasisSpreadForinternalPricingBps[token] = 0; // NA by default } function delistToken(ERC20 token) public onlyAdmin { require(isTokenListed[token]); require(token.approve(otc, 0)); delete isTokenListed[token]; delete tokenMinSrcAmount[token]; delete minTokenBalance[token]; delete maxTokenBalance[token]; delete internalPricePremiumBps[token]; delete minOasisSpreadForinternalPricingBps[token]; } function setInternalPriceAdminParams(ERC20 token, uint minSpreadBps, uint premiumBps) public onlyAdmin { require(isTokenListed[token]); require(premiumBps <= 500); // premium <= 5% require(minSpreadBps <= 1000); // min spread <= 10% internalPricePremiumBps[token] = premiumBps; minOasisSpreadForinternalPricingBps[token] = minSpreadBps; } function setInternalInventoryMinMax(ERC20 token, uint minBalance, uint maxBalance) public onlyOperator { require(isTokenListed[token]); // don't require anything on min and max balance as it might be used for disable minTokenBalance[token] = minBalance; maxTokenBalance[token] = maxBalance; } event TradeExecute( address indexed sender, address src, uint srcAmount, address destToken, uint destAmount, address destAddress ); function trade( ERC20 srcToken, uint srcAmount, ERC20 destToken, address destAddress, uint conversionRate, bool validate ) public payable returns(bool) { require(tradeEnabled); require(msg.sender == kyberNetwork); require(doTrade(srcToken, srcAmount, destToken, destAddress, conversionRate, validate)); return true; } event TradeEnabled(bool enable); function enableTrade() public onlyAdmin returns(bool) { tradeEnabled = true; TradeEnabled(true); return true; } function disableTrade() public onlyAlerter returns(bool) { tradeEnabled = false; TradeEnabled(false); return true; } event KyberNetworkSet(address kyberNetwork); function setKyberNetwork(address _kyberNetwork) public onlyAdmin { require(_kyberNetwork != address(0)); kyberNetwork = _kyberNetwork; KyberNetworkSet(kyberNetwork); } event FeeBpsSet(uint feeBps); function setFeeBps(uint _feeBps) public onlyAdmin { require(_feeBps < 10000); feeBps = _feeBps; FeeBpsSet(feeBps); } function valueAfterReducingFee(uint val) public view returns(uint) { require(val <= MAX_QTY); return ((10000 - feeBps) * val) / 10000; } function valueBeforeFeesWereReduced(uint val) public view returns(uint) { require(val <= MAX_QTY); return val * 10000 / (10000 - feeBps); } function valueAfterAddingPremium(ERC20 token, uint val) public view returns(uint) { require(val <= MAX_QTY); uint premium = internalPricePremiumBps[token]; return val * (10000 + premium) / 10000; } function shouldUseInternalInventory(ERC20 token, uint tokenVal, uint ethVal, bool ethToToken) public view returns(bool) { require(tokenVal <= MAX_QTY); uint tokenBalance = token.balanceOf(this); if (ethToToken) { if (tokenBalance < tokenVal) return false; if (tokenBalance - tokenVal < minTokenBalance[token]) return false; } else { if (this.balance < ethVal) return false; if (tokenBalance + tokenVal > maxTokenBalance[token]) return false; } // check that spread in first level makes sense uint x1; uint y1; uint x2; uint y2; (,x1,y1) = getMatchingOffer(token, wethToken, 0); (,y2,x2) = getMatchingOffer(wethToken, token, 0); require(x1 <= MAX_QTY && x2 <= MAX_QTY && y1 <= MAX_QTY && y2 <= MAX_QTY); // check if there is an arbitrage if (x1*y2 > x2*y1) return false; // spread is (x1/y1 - x2/y2) / (x1/y1) if (10000 * (x2*y1 - x1*y2) < x1*y2*minOasisSpreadForinternalPricingBps[token]) return false; return true; } function getConversionRate(ERC20 src, ERC20 dest, uint srcQty, uint blockNumber) public view returns(uint) { uint rate; uint actualSrcQty; ERC20 actualSrc; ERC20 actualDest; uint offerPayAmt; uint offerBuyAmt; blockNumber; if (!tradeEnabled) return 0; if (!validTokens(src, dest)) return 0; if (src == ETH_TOKEN_ADDRESS) { actualSrc = wethToken; actualDest = dest; actualSrcQty = srcQty; } else if (dest == ETH_TOKEN_ADDRESS) { actualSrc = src; actualDest = wethToken; if (srcQty < tokenMinSrcAmount[src]) { /* remove rounding errors and present rate for 0 src amount. */ actualSrcQty = tokenMinSrcAmount[src]; } else { actualSrcQty = srcQty; } } else { return 0; } // otc's terminology is of offer maker, so their sellGem is the taker's dest token. (, offerPayAmt, offerBuyAmt) = getMatchingOffer(actualDest, actualSrc, actualSrcQty); // make sure to take only one level of order book to avoid gas inflation. if (actualSrcQty > offerBuyAmt) return 0; bool tradeFromInventory = false; uint valueWithPremium = valueAfterAddingPremium(token, offerPayAmt); ERC20 token; if (src == ETH_TOKEN_ADDRESS) { token = dest; tradeFromInventory = shouldUseInternalInventory(token, valueWithPremium, offerBuyAmt, true); } else { token = src; tradeFromInventory = shouldUseInternalInventory(token, offerBuyAmt, valueWithPremium, false); } rate = calcRateFromQty(offerBuyAmt, offerPayAmt, COMMON_DECIMALS, COMMON_DECIMALS); if (tradeFromInventory) return valueAfterAddingPremium(token,rate); else return valueAfterReducingFee(rate); } function doTrade( ERC20 srcToken, uint srcAmount, ERC20 destToken, address destAddress, uint conversionRate, bool validate ) internal returns(bool) { uint actualDestAmount; require(validTokens(srcToken, destToken)); // can skip validation if done at kyber network level if (validate) { require(conversionRate > 0); if (srcToken == ETH_TOKEN_ADDRESS) require(msg.value == srcAmount); else require(msg.value == 0); } uint userExpectedDestAmount = calcDstQty(srcAmount, COMMON_DECIMALS, COMMON_DECIMALS, conversionRate); require(userExpectedDestAmount > 0); // sanity check uint destAmountIncludingFees = valueBeforeFeesWereReduced(userExpectedDestAmount); if (srcToken == ETH_TOKEN_ADDRESS) { if(!shouldUseInternalInventory(destToken, userExpectedDestAmount, srcAmount, true)) { wethToken.deposit.value(msg.value)(); actualDestAmount = takeMatchingOffer(wethToken, destToken, srcAmount); require(actualDestAmount >= destAmountIncludingFees); } // transfer back only requested dest amount. require(destToken.transfer(destAddress, userExpectedDestAmount)); } else { require(srcToken.transferFrom(msg.sender, this, srcAmount)); if(!shouldUseInternalInventory(srcToken, srcAmount, userExpectedDestAmount, false)) { actualDestAmount = takeMatchingOffer(srcToken, wethToken, srcAmount); require(actualDestAmount >= destAmountIncludingFees); wethToken.withdraw(actualDestAmount); } // transfer back only requested dest amount. destAddress.transfer(userExpectedDestAmount); } TradeExecute(msg.sender, srcToken, srcAmount, destToken, userExpectedDestAmount, destAddress); return true; } function takeMatchingOffer( ERC20 srcToken, ERC20 destToken, uint srcAmount ) internal returns(uint actualDestAmount) { uint offerId; uint offerPayAmt; uint offerBuyAmt; // otc's terminology is of offer maker, so their sellGem is our (the taker's) dest token. (offerId, offerPayAmt, offerBuyAmt) = getMatchingOffer(destToken, srcToken, srcAmount); require(srcAmount <= MAX_QTY); require(offerPayAmt <= MAX_QTY); actualDestAmount = srcAmount * offerPayAmt / offerBuyAmt; require(uint128(actualDestAmount) == actualDestAmount); otc.take(bytes32(offerId), uint128(actualDestAmount)); // Take the portion of the offer that we need return; } function getMatchingOffer( ERC20 offerSellGem, ERC20 offerBuyGem, uint payAmount ) internal view returns( uint offerId, uint offerPayAmount, uint offerBuyAmount ) { offerId = otc.getBestOffer(offerSellGem, offerBuyGem); (offerPayAmount, , offerBuyAmount, ) = otc.getOffer(offerId); uint depth = 1; while (payAmount > offerBuyAmount) { offerId = otc.getWorseOffer(offerId); // We look for the next best offer if (offerId == 0 || ++depth > 7) { offerId = 0; offerPayAmount = 0; offerBuyAmount = 0; break; } (offerPayAmount, , offerBuyAmount, ) = otc.getOffer(offerId); } return; } function validTokens(ERC20 src, ERC20 dest) internal view returns (bool valid) { return ((isTokenListed[src] && ETH_TOKEN_ADDRESS == dest) || (isTokenListed[dest] && ETH_TOKEN_ADDRESS == src)); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":false,"inputs":[],"name":"enableTrade","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"alerter","type":"address"}],"name":"removeAlerter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"minSrcAmount","type":"uint256"}],"name":"listToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"internalPricePremiumBps","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"feeBps","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pendingAdmin","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"token","type":"address"},{"name":"val","type":"uint256"}],"name":"valueAfterAddingPremium","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getOperators","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"otc","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"amount","type":"uint256"},{"name":"sendTo","type":"address"}],"name":"withdrawToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newAlerter","type":"address"}],"name":"addAlerter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"sanityRatesContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"wethToken","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_kyberNetwork","type":"address"}],"name":"setKyberNetwork","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"val","type":"uint256"}],"name":"valueBeforeFeesWereReduced","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"tokenMinSrcAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"disableTrade","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"srcToken","type":"address"},{"name":"srcAmount","type":"uint256"},{"name":"destToken","type":"address"},{"name":"destAddress","type":"address"},{"name":"conversionRate","type":"uint256"},{"name":"validate","type":"bool"}],"name":"trade","outputs":[{"name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"val","type":"uint256"}],"name":"valueAfterReducingFee","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_feeBps","type":"uint256"}],"name":"setFeeBps","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newAdmin","type":"address"}],"name":"transferAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"claimAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newAdmin","type":"address"}],"name":"transferAdminQuickly","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getAlerters","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"src","type":"address"},{"name":"dest","type":"address"},{"name":"srcQty","type":"uint256"},{"name":"blockNumber","type":"uint256"}],"name":"getConversionRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"maxTokenBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOperator","type":"address"}],"name":"addOperator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"}],"name":"delistToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"operator","type":"address"}],"name":"removeOperator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"kyberNetwork","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"},{"name":"sendTo","type":"address"}],"name":"withdrawEther","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"minTokenBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"token","type":"address"},{"name":"user","type":"address"}],"name":"getBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tradeEnabled","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"minOasisSpreadForinternalPricingBps","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"minBalance","type":"uint256"},{"name":"maxBalance","type":"uint256"}],"name":"setInternalInventoryMinMax","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"isTokenListed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"minSpreadBps","type":"uint256"},{"name":"premiumBps","type":"uint256"}],"name":"setInternalPriceAdminParams","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"admin","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"token","type":"address"},{"name":"tokenVal","type":"uint256"},{"name":"ethVal","type":"uint256"},{"name":"ethToToken","type":"bool"}],"name":"shouldUseInternalInventory","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_kyberNetwork","type":"address"},{"name":"_otc","type":"address"},{"name":"_wethToken","type":"address"},{"name":"_admin","type":"address"},{"name":"_feeBps","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"sender","type":"address"},{"indexed":false,"name":"src","type":"address"},{"indexed":false,"name":"srcAmount","type":"uint256"},{"indexed":false,"name":"destToken","type":"address"},{"indexed":false,"name":"destAmount","type":"uint256"},{"indexed":false,"name":"destAddress","type":"address"}],"name":"TradeExecute","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"enable","type":"bool"}],"name":"TradeEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"kyberNetwork","type":"address"}],"name":"KyberNetworkSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"feeBps","type":"uint256"}],"name":"FeeBpsSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"sendTo","type":"address"}],"name":"TokenWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"sendTo","type":"address"}],"name":"EtherWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"pendingAdmin","type":"address"}],"name":"TransferAdminPending","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newAdmin","type":"address"},{"indexed":false,"name":"previousAdmin","type":"address"}],"name":"AdminClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newAlerter","type":"address"},{"indexed":false,"name":"isAdd","type":"bool"}],"name":"AlerterAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newOperator","type":"address"},{"indexed":false,"name":"isAdd","type":"bool"}],"name":"OperatorAdded","type":"event"}]
Contract Creation Code
606060405260078054600160a060020a031916905534156200002057600080fd5b60405160a080620028f2833981016040528080519190602001805191906020018051919060200180519190602001805160008054600160a060020a03191633600160a060020a03908116919091179091559092508316151590506200008457600080fd5b600160a060020a03851615156200009a57600080fd5b600160a060020a0384161515620000b057600080fd5b600160a060020a0383161515620000c657600080fd5b6127108110620000d557600080fd5b6012620000f08464010000000062001bf96200021d82021704565b14620000fb57600080fd5b60088054600160a060020a0319908116600160a060020a03888116919091179092556009805482168784161790819055600a8054831687851617908190556000805490931686851617835560128590556011805460ff1916600117905583169263095ea7b3929116907f800000000000000000000000000000000000000000000000000000000000000090604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515620001ea57600080fd5b6102c65a03f11515620001fc57600080fd5b5050506040518051905015156200021257600080fd5b505050505062000300565b600080600160a060020a03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415620002505760129150620002fa565b50600160a060020a038216600090815260066020526040902054801515620002f65782600160a060020a031663313ce5676000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515620002d257600080fd5b6102c65a03f11515620002e457600080fd5b505050604051805190509150620002fa565b8091505b50919050565b6125e280620003106000396000f3006060604052600436106101d35763ffffffff60e060020a60003504166299d38681146101d557806301a12fd3146101fc5780630717d7c31461021b5780631db950781461023d57806324a9d8531461026e5780632678224714610281578063274544ce146102b057806327a099d8146102d257806336b61e3c146103385780633ccdbb281461034b578063408ee7fe1461037457806347e6924f146103935780634b57b0be146103a657806354a325a6146103b95780635b714690146103d85780635cf4a0da146103ee5780636940030f1461040d5780636cf69811146104205780636f3d80431461044c57806372c27b621461046257806375829def1461047857806377f50f97146104975780637acc8678146104aa5780637c423f54146104c95780637cd44272146104dc57806390b7e28f146105075780639870d7fe14610526578063abffc9ac14610545578063ac8a584a14610564578063b78b842d14610583578063ce56c45414610596578063d1a75930146105b8578063d4fac45d146105d7578063d621e813146105fc578063d6b45f791461060f578063e2c44ac51461062e578063e69ec65314610653578063f845584214610672578063f851a44014610697578063fda51fe0146106aa575b005b34156101e057600080fd5b6101e86106d4565b604051901515815260200160405180910390f35b341561020757600080fd5b6101d3600160a060020a036004351661073c565b341561022657600080fd5b6101d3600160a060020a03600435166024356108ac565b341561024857600080fd5b61025c600160a060020a0360043516610a3a565b60405190815260200160405180910390f35b341561027957600080fd5b61025c610a4c565b341561028c57600080fd5b610294610a52565b604051600160a060020a03909116815260200160405180910390f35b34156102bb57600080fd5b61025c600160a060020a0360043516602435610a61565b34156102dd57600080fd5b6102e5610aa8565b60405160208082528190810183818151815260200191508051906020019060200280838360005b8381101561032457808201518382015260200161030c565b505050509050019250505060405180910390f35b341561034357600080fd5b610294610b10565b341561035657600080fd5b6101d3600160a060020a036004358116906024359060443516610b1f565b341561037f57600080fd5b6101d3600160a060020a0360043516610c16565b341561039e57600080fd5b610294610d12565b34156103b157600080fd5b610294610d21565b34156103c457600080fd5b6101d3600160a060020a0360043516610d30565b34156103e357600080fd5b61025c600435610dc2565b34156103f957600080fd5b61025c600160a060020a0360043516610df9565b341561041857600080fd5b6101e8610e0b565b6101e8600160a060020a03600435811690602435906044358116906064351660843560a4351515610e78565b341561045757600080fd5b61025c600435610ecd565b341561046d57600080fd5b6101d3600435610ef8565b341561048357600080fd5b6101d3600160a060020a0360043516610f5c565b34156104a257600080fd5b6101d3610ff7565b34156104b557600080fd5b6101d3600160a060020a0360043516611091565b34156104d457600080fd5b6102e5611173565b34156104e757600080fd5b61025c600160a060020a03600435811690602435166044356064356111d9565b341561051257600080fd5b61025c600160a060020a03600435166113bc565b341561053157600080fd5b6101d3600160a060020a03600435166113ce565b341561055057600080fd5b6101d3600160a060020a036004351661149e565b341561056f57600080fd5b6101d3600160a060020a03600435166115bd565b341561058e57600080fd5b610294611729565b34156105a157600080fd5b6101d3600435600160a060020a0360243516611738565b34156105c357600080fd5b61025c600160a060020a03600435166117cb565b34156105e257600080fd5b61025c600160a060020a03600435811690602435166117dd565b341561060757600080fd5b6101e861188f565b341561061a57600080fd5b61025c600160a060020a0360043516611898565b341561063957600080fd5b6101d3600160a060020a03600435166024356044356118aa565b341561065e57600080fd5b6101e8600160a060020a0360043516611920565b341561067d57600080fd5b6101d3600160a060020a0360043516602435604435611935565b34156106a257600080fd5b6102946119c0565b34156106b557600080fd5b6101e8600160a060020a036004351660243560443560643515156119cf565b6000805433600160a060020a039081169116146106f057600080fd5b6011805460ff191660019081179091557f7d7f00509dd73ac4449f698ae75ccc797895eff5fa9d446d3df387598a26e73590604051901515815260200160405180910390a15060015b90565b6000805433600160a060020a0390811691161461075857600080fd5b600160a060020a03821660009081526003602052604090205460ff16151561077f57600080fd5b50600160a060020a0381166000908152600360205260408120805460ff191690555b6005548110156108a85781600160a060020a03166005828154811015156107c457fe5b600091825260209091200154600160a060020a031614156108a0576005805460001981019081106107f157fe5b60009182526020909120015460058054600160a060020a03909216918390811061081757fe5b60009182526020909120018054600160a060020a031916600160a060020a0392909216919091179055600580549061085390600019830161255d565b507f5611bf3e417d124f97bf2c788843ea8bb502b66079fbee02158ef30b172cb762826000604051600160a060020a039092168252151560208201526040908101905180910390a16108a8565b6001016107a1565b5050565b60005433600160a060020a039081169116146108c757600080fd5b600160a060020a03821615156108dc57600080fd5b600160a060020a0382166000908152600b602052604090205460ff161561090257600080fd5b601261090d83611bf9565b1461091757600080fd5b600954600160a060020a038084169163095ea7b391167f800000000000000000000000000000000000000000000000000000000000000060006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561099a57600080fd5b6102c65a03f115156109ab57600080fd5b5050506040518051905015156109c057600080fd5b600160a060020a039091166000908152600b60209081526040808320805460ff19166001179055600c825280832093909355600d81528282207f80000000000000000000000000000000000000000000000000000000000000009055600e8152828220829055600f81528282208290556010905290812055565b600f6020526000908152604090205481565b60125481565b600154600160a060020a031681565b6000806b204fce5e3e25026110000000831115610a7d57600080fd5b50600160a060020a0383166000908152600f6020526040902054612710808201840204949350505050565b610ab0612586565b6004805480602002602001604051908101604052809291908181526020018280548015610b0657602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610ae8575b5050505050905090565b600954600160a060020a031681565b60005433600160a060020a03908116911614610b3a57600080fd5b82600160a060020a031663a9059cbb828460006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610b9757600080fd5b6102c65a03f11515610ba857600080fd5b505050604051805190501515610bbd57600080fd5b7f72cb8a894ddb372ceec3d2a7648d86f17d5a15caae0e986c53109b8a9a9385e6838383604051600160a060020a03938416815260208101929092529091166040808301919091526060909101905180910390a1505050565b60005433600160a060020a03908116911614610c3157600080fd5b600160a060020a03811660009081526003602052604090205460ff1615610c5757600080fd5b60055460329010610c6757600080fd5b7f5611bf3e417d124f97bf2c788843ea8bb502b66079fbee02158ef30b172cb762816001604051600160a060020a039092168252151560208201526040908101905180910390a1600160a060020a0381166000908152600360205260409020805460ff191660019081179091556005805490918101610ce6838261255d565b5060009182526020909120018054600160a060020a031916600160a060020a0392909216919091179055565b600754600160a060020a031681565b600a54600160a060020a031681565b60005433600160a060020a03908116911614610d4b57600080fd5b600160a060020a0381161515610d6057600080fd5b60088054600160a060020a031916600160a060020a0383811691909117918290557f38622430bb6defd4452b087e8d0b4a6d1c4d35c179c2d7d875d4abb272b9d88b9116604051600160a060020a03909116815260200160405180910390a150565b60006b204fce5e3e25026110000000821115610ddd57600080fd5b601254612710038261271002811515610df257fe5b0492915050565b600c6020526000908152604090205481565b600160a060020a03331660009081526003602052604081205460ff161515610e3257600080fd5b6011805460ff191690557f7d7f00509dd73ac4449f698ae75ccc797895eff5fa9d446d3df387598a26e7356000604051901515815260200160405180910390a150600190565b60115460009060ff161515610e8c57600080fd5b60085433600160a060020a03908116911614610ea757600080fd5b610eb5878787878787611cbd565b1515610ec057600080fd5b5060019695505050505050565b60006b204fce5e3e25026110000000821115610ee857600080fd5b6012546127109081038302610df2565b60005433600160a060020a03908116911614610f1357600080fd5b6127108110610f2157600080fd5b60128190557f4f78c4ceb393a616bbd264a4584a9ad15d722042ce1e135e6a8380217f5cb42b8160405190815260200160405180910390a150565b60005433600160a060020a03908116911614610f7757600080fd5b600160a060020a0381161515610f8c57600080fd5b6001547f3b81caf78fa51ecbc8acb482fd7012a277b428d9b80f9d156e8a54107496cc4090600160a060020a0316604051600160a060020a03909116815260200160405180910390a160018054600160a060020a031916600160a060020a0392909216919091179055565b60015433600160a060020a0390811691161461101257600080fd5b6001546000547f65da1cfc2c2e81576ad96afb24a581f8e109b7a403b35cbd3243a1c99efdb9ed91600160a060020a039081169116604051600160a060020a039283168152911660208201526040908101905180910390a16001805460008054600160a060020a0319908116600160a060020a03841617909155169055565b60005433600160a060020a039081169116146110ac57600080fd5b600160a060020a03811615156110c157600080fd5b7f3b81caf78fa51ecbc8acb482fd7012a277b428d9b80f9d156e8a54107496cc4081604051600160a060020a03909116815260200160405180910390a16000547f65da1cfc2c2e81576ad96afb24a581f8e109b7a403b35cbd3243a1c99efdb9ed908290600160a060020a0316604051600160a060020a039283168152911660208201526040908101905180910390a160008054600160a060020a031916600160a060020a0392909216919091179055565b61117b612586565b6005805480602002602001604051908101604052809291908181526020018280548015610b0657602002820191906000526020600020908154600160a060020a03168152600190910190602001808311610ae8575050505050905090565b600080600080600080600080600080601160009054906101000a900460ff16151561120757600099506113ab565b6112118e8e612063565b151561122057600099506113ab565b600160a060020a038e1673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee141561125e57600a548c9850600160a060020a031696508c95506112fd565b600160a060020a038d1673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156112f4578d9650600a60009054906101000a9004600160a060020a03169550600c60008f600160a060020a0316600160a060020a03168152602001908152602001600020548c10156112eb57600160a060020a038e166000908152600c602052604090205497506112ef565b8b97505b6112fd565b600099506113ab565b61130886888a6120f8565b9096509450508388111561131f57600099506113ab565b6000925061132d8186610a61565b9150600160a060020a038e1673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee141561136a57508b61136381838660016119cf565b925061137c565b508c61137981858460006119cf565b92505b6113898486601280612337565b985082156113a25761139b818a610a61565b99506113ab565b61139b89610ecd565b505050505050505050949350505050565b600e6020526000908152604090205481565b60005433600160a060020a039081169116146113e957600080fd5b600160a060020a03811660009081526002602052604090205460ff161561140f57600080fd5b6004546032901061141f57600080fd5b7f091a7a4b85135fdd7e8dbc18b12fabe5cc191ea867aa3c2e1a24a102af61d58b816001604051600160a060020a039092168252151560208201526040908101905180910390a1600160a060020a0381166000908152600260205260409020805460ff191660019081179091556004805490918101610ce6838261255d565b60005433600160a060020a039081169116146114b957600080fd5b600160a060020a0381166000908152600b602052604090205460ff1615156114e057600080fd5b600954600160a060020a038083169163095ea7b391166000806040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561154357600080fd5b6102c65a03f1151561155457600080fd5b50505060405180519050151561156957600080fd5b600160a060020a03166000908152600b60209081526040808320805460ff19169055600c8252808320839055600d8252808320839055600e8252808320839055600f82528083208390556010909152812055565b6000805433600160a060020a039081169116146115d957600080fd5b600160a060020a03821660009081526002602052604090205460ff16151561160057600080fd5b50600160a060020a0381166000908152600260205260408120805460ff191690555b6004548110156108a85781600160a060020a031660048281548110151561164557fe5b600091825260209091200154600160a060020a031614156117215760048054600019810190811061167257fe5b60009182526020909120015460048054600160a060020a03909216918390811061169857fe5b60009182526020909120018054600160a060020a031916600160a060020a03929092169190911790556004805460001901906116d4908261255d565b507f091a7a4b85135fdd7e8dbc18b12fabe5cc191ea867aa3c2e1a24a102af61d58b826000604051600160a060020a039092168252151560208201526040908101905180910390a16108a8565b600101611622565b600854600160a060020a031681565b60005433600160a060020a0390811691161461175357600080fd5b600160a060020a03811682156108fc0283604051600060405180830381858888f19350505050151561178457600080fd5b7fec47e7ed86c86774d1a72c19f35c639911393fe7c1a34031fdbd260890da90de8282604051918252600160a060020a031660208201526040908101905180910390a15050565b600d6020526000908152604090205481565b6000600160a060020a03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156118155750600160a060020a03811631611889565b82600160a060020a03166370a082318360006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561186c57600080fd5b6102c65a03f1151561187d57600080fd5b50505060405180519150505b92915050565b60115460ff1681565b60106020526000908152604090205481565b600160a060020a03331660009081526002602052604090205460ff1615156118d157600080fd5b600160a060020a0383166000908152600b602052604090205460ff1615156118f857600080fd5b600160a060020a039092166000908152600d6020908152604080832093909355600e90522055565b600b6020526000908152604090205460ff1681565b60005433600160a060020a0390811691161461195057600080fd5b600160a060020a0383166000908152600b602052604090205460ff16151561197757600080fd5b6101f481111561198657600080fd5b6103e882111561199557600080fd5b600160a060020a039092166000908152600f6020908152604080832094909455601090529190912055565b600054600160a060020a031681565b600080808080806b204fce5e3e250261100000008911156119ef57600080fd5b89600160a060020a03166370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515611a4657600080fd5b6102c65a03f11515611a5757600080fd5b50505060405180519550508615611aa95788851015611a795760009550611bec565b600160a060020a038a166000908152600d60205260409020548986031015611aa45760009550611bec565b611aef565b8730600160a060020a0316311015611ac45760009550611bec565b600160a060020a038a166000908152600e6020526040902054858a011115611aef5760009550611bec565b600a54611b08908b90600160a060020a031660006120f8565b600a549196509450611b269150600160a060020a03168b60006120f8565b93509150506b204fce5e3e250261100000008411801590611b5357506b204fce5e3e250261100000008211155b8015611b6b57506b204fce5e3e250261100000008311155b8015611b8357506b204fce5e3e250261100000008111155b1515611b8e57600080fd5b8282028185021115611ba35760009550611bec565b601060008b600160a060020a0316600160a060020a03168152602001908152602001600020548185020281850284840203612710021015611be75760009550611bec565b600195505b5050505050949350505050565b600080600160a060020a03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415611c2a5760129150611cb7565b50600160a060020a038216600090815260066020526040902054801515611cb35782600160a060020a031663313ce5676000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611c9157600080fd5b6102c65a03f11515611ca257600080fd5b505050604051805190509150611cb7565b8091505b50919050565b600080600080611ccd8a89612063565b1515611cd857600080fd5b8415611d2c5760008611611ceb57600080fd5b600160a060020a038a1673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415611d2157348914611d1c57600080fd5b611d2c565b3415611d2c57600080fd5b611d3989601280896123da565b915060008211611d4857600080fd5b611d5182610dc2565b9050600160a060020a038a1673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415611e8e57611d8588838b60016119cf565b1515611e0657600a54600160a060020a031663d0e30db0346040518263ffffffff1660e060020a0281526004016000604051808303818588803b1515611dca57600080fd5b6125ee5a03f11515611ddb57600080fd5b5050600a54611df79250600160a060020a03169050898b612467565b925080831015611e0657600080fd5b87600160a060020a031663a9059cbb888460006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515611e6357600080fd5b6102c65a03f11515611e7457600080fd5b505050604051805190501515611e8957600080fd5b611fe6565b89600160a060020a03166323b872dd33308c60006040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b1515611ef857600080fd5b6102c65a03f11515611f0957600080fd5b505050604051805190501515611f1e57600080fd5b611f2b8a8a8460006119cf565b1515611fb557600a54611f49908b90600160a060020a03168b612467565b925080831015611f5857600080fd5b600a54600160a060020a0316632e1a7d4d8460405160e060020a63ffffffff84160281526004810191909152602401600060405180830381600087803b1515611fa057600080fd5b6102c65a03f11515611fb157600080fd5b5050505b600160a060020a03871682156108fc0283604051600060405180830381858888f193505050501515611fe657600080fd5b33600160a060020a03167fea9415385bae08fe9f6dc457b02577166790cde83bb18cc340aac6cb81b824de8b8b8b868c604051600160a060020a039586168152602081019490945291841660408085019190915260608401919091529216608082015260a001905180910390a25060019998505050505050505050565b600160a060020a0382166000908152600b602052604081205460ff1680156120a7575073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee600160a060020a038316145b806120f15750600160a060020a0382166000908152600b602052604090205460ff1680156120f1575073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee600160a060020a038416145b9392505050565b600954600090819081908190600160a060020a0316630374fc6f8888846040516020015260405160e060020a63ffffffff8516028152600160a060020a03928316600482015291166024820152604401602060405180830381600087803b151561216157600080fd5b6102c65a03f1151561217257600080fd5b5050506040518051600954909550600160a060020a03169050634579268a8560006040516080015260405160e060020a63ffffffff84160281526004810191909152602401608060405180830381600087803b15156121d057600080fd5b6102c65a03f115156121e157600080fd5b50505060405180519060200180519060200180519060200180515092955093506001925050505b8185111561232d57600954600160a060020a031663943911bc8560006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561226157600080fd5b6102c65a03f1151561227257600080fd5b505050604051805194505083158061228d5750600101600781115b156122a35760009350600092506000915061232d565b600954600160a060020a0316634579268a8560006040516080015260405160e060020a63ffffffff84160281526004810191909152602401608060405180830381600087803b15156122f457600080fd5b6102c65a03f1151561230557600080fd5b5050506040518051906020018051906020018051906020018051509295509350612208915050565b5093509350939050565b60006b204fce5e3e2502611000000085111561235257600080fd5b6b204fce5e3e2502611000000084111561236b57600080fd5b8282106123a6576012838303111561238257600080fd5b84838303600a0a02670de0b6b3a7640000850281151561239e57fe5b0490506123d2565b601282840311156123b657600080fd5b84828403600a0a670de0b6b3a764000086020281151561239e57fe5b949350505050565b60006b204fce5e3e250261100000008511156123f557600080fd5b69d3c21bcecceda100000082111561240c57600080fd5b83831061243b576012848403111561242357600080fd5b670de0b6b3a7640000858302858503600a0a0261239e565b6012838503111561244b57600080fd5b828403600a0a670de0b6b3a76400000282860281151561239e57fe5b6000806000806124788688876120f8565b919450925090506b204fce5e3e2502611000000085111561249857600080fd5b6b204fce5e3e250261100000008211156124b157600080fd5b808286028115156124be57fe5b0493506fffffffffffffffffffffffffffffffff841684146124df57600080fd5b600954600160a060020a03166349606455848660405160e060020a63ffffffff851602815260048101929092526fffffffffffffffffffffffffffffffff166024820152604401600060405180830381600087803b151561253f57600080fd5b6102c65a03f1151561255057600080fd5b5050505050509392505050565b81548183558181151161258157600083815260209020612581918101908301612598565b505050565b60206040519081016040526000815290565b61073991905b808211156125b2576000815560010161259e565b50905600a165627a7a72305820c65ed24fe6b5aa8f577c83a0591036ea9abc9e7eed5d215aea7a1a74eb0f9a7f0029000000000000000000000000706abce058db29eb36578c463cf295f180a1fe9c000000000000000000000000b7ac09c2c0217b07d7c103029b4918a2c401eecb000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000d0643bc0d0c879f175556509dbcee9373379d5c30000000000000000000000000000000000000000000000000000000000000019
Deployed Bytecode
0x6060604052600436106101d35763ffffffff60e060020a60003504166299d38681146101d557806301a12fd3146101fc5780630717d7c31461021b5780631db950781461023d57806324a9d8531461026e5780632678224714610281578063274544ce146102b057806327a099d8146102d257806336b61e3c146103385780633ccdbb281461034b578063408ee7fe1461037457806347e6924f146103935780634b57b0be146103a657806354a325a6146103b95780635b714690146103d85780635cf4a0da146103ee5780636940030f1461040d5780636cf69811146104205780636f3d80431461044c57806372c27b621461046257806375829def1461047857806377f50f97146104975780637acc8678146104aa5780637c423f54146104c95780637cd44272146104dc57806390b7e28f146105075780639870d7fe14610526578063abffc9ac14610545578063ac8a584a14610564578063b78b842d14610583578063ce56c45414610596578063d1a75930146105b8578063d4fac45d146105d7578063d621e813146105fc578063d6b45f791461060f578063e2c44ac51461062e578063e69ec65314610653578063f845584214610672578063f851a44014610697578063fda51fe0146106aa575b005b34156101e057600080fd5b6101e86106d4565b604051901515815260200160405180910390f35b341561020757600080fd5b6101d3600160a060020a036004351661073c565b341561022657600080fd5b6101d3600160a060020a03600435166024356108ac565b341561024857600080fd5b61025c600160a060020a0360043516610a3a565b60405190815260200160405180910390f35b341561027957600080fd5b61025c610a4c565b341561028c57600080fd5b610294610a52565b604051600160a060020a03909116815260200160405180910390f35b34156102bb57600080fd5b61025c600160a060020a0360043516602435610a61565b34156102dd57600080fd5b6102e5610aa8565b60405160208082528190810183818151815260200191508051906020019060200280838360005b8381101561032457808201518382015260200161030c565b505050509050019250505060405180910390f35b341561034357600080fd5b610294610b10565b341561035657600080fd5b6101d3600160a060020a036004358116906024359060443516610b1f565b341561037f57600080fd5b6101d3600160a060020a0360043516610c16565b341561039e57600080fd5b610294610d12565b34156103b157600080fd5b610294610d21565b34156103c457600080fd5b6101d3600160a060020a0360043516610d30565b34156103e357600080fd5b61025c600435610dc2565b34156103f957600080fd5b61025c600160a060020a0360043516610df9565b341561041857600080fd5b6101e8610e0b565b6101e8600160a060020a03600435811690602435906044358116906064351660843560a4351515610e78565b341561045757600080fd5b61025c600435610ecd565b341561046d57600080fd5b6101d3600435610ef8565b341561048357600080fd5b6101d3600160a060020a0360043516610f5c565b34156104a257600080fd5b6101d3610ff7565b34156104b557600080fd5b6101d3600160a060020a0360043516611091565b34156104d457600080fd5b6102e5611173565b34156104e757600080fd5b61025c600160a060020a03600435811690602435166044356064356111d9565b341561051257600080fd5b61025c600160a060020a03600435166113bc565b341561053157600080fd5b6101d3600160a060020a03600435166113ce565b341561055057600080fd5b6101d3600160a060020a036004351661149e565b341561056f57600080fd5b6101d3600160a060020a03600435166115bd565b341561058e57600080fd5b610294611729565b34156105a157600080fd5b6101d3600435600160a060020a0360243516611738565b34156105c357600080fd5b61025c600160a060020a03600435166117cb565b34156105e257600080fd5b61025c600160a060020a03600435811690602435166117dd565b341561060757600080fd5b6101e861188f565b341561061a57600080fd5b61025c600160a060020a0360043516611898565b341561063957600080fd5b6101d3600160a060020a03600435166024356044356118aa565b341561065e57600080fd5b6101e8600160a060020a0360043516611920565b341561067d57600080fd5b6101d3600160a060020a0360043516602435604435611935565b34156106a257600080fd5b6102946119c0565b34156106b557600080fd5b6101e8600160a060020a036004351660243560443560643515156119cf565b6000805433600160a060020a039081169116146106f057600080fd5b6011805460ff191660019081179091557f7d7f00509dd73ac4449f698ae75ccc797895eff5fa9d446d3df387598a26e73590604051901515815260200160405180910390a15060015b90565b6000805433600160a060020a0390811691161461075857600080fd5b600160a060020a03821660009081526003602052604090205460ff16151561077f57600080fd5b50600160a060020a0381166000908152600360205260408120805460ff191690555b6005548110156108a85781600160a060020a03166005828154811015156107c457fe5b600091825260209091200154600160a060020a031614156108a0576005805460001981019081106107f157fe5b60009182526020909120015460058054600160a060020a03909216918390811061081757fe5b60009182526020909120018054600160a060020a031916600160a060020a0392909216919091179055600580549061085390600019830161255d565b507f5611bf3e417d124f97bf2c788843ea8bb502b66079fbee02158ef30b172cb762826000604051600160a060020a039092168252151560208201526040908101905180910390a16108a8565b6001016107a1565b5050565b60005433600160a060020a039081169116146108c757600080fd5b600160a060020a03821615156108dc57600080fd5b600160a060020a0382166000908152600b602052604090205460ff161561090257600080fd5b601261090d83611bf9565b1461091757600080fd5b600954600160a060020a038084169163095ea7b391167f800000000000000000000000000000000000000000000000000000000000000060006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561099a57600080fd5b6102c65a03f115156109ab57600080fd5b5050506040518051905015156109c057600080fd5b600160a060020a039091166000908152600b60209081526040808320805460ff19166001179055600c825280832093909355600d81528282207f80000000000000000000000000000000000000000000000000000000000000009055600e8152828220829055600f81528282208290556010905290812055565b600f6020526000908152604090205481565b60125481565b600154600160a060020a031681565b6000806b204fce5e3e25026110000000831115610a7d57600080fd5b50600160a060020a0383166000908152600f6020526040902054612710808201840204949350505050565b610ab0612586565b6004805480602002602001604051908101604052809291908181526020018280548015610b0657602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610ae8575b5050505050905090565b600954600160a060020a031681565b60005433600160a060020a03908116911614610b3a57600080fd5b82600160a060020a031663a9059cbb828460006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610b9757600080fd5b6102c65a03f11515610ba857600080fd5b505050604051805190501515610bbd57600080fd5b7f72cb8a894ddb372ceec3d2a7648d86f17d5a15caae0e986c53109b8a9a9385e6838383604051600160a060020a03938416815260208101929092529091166040808301919091526060909101905180910390a1505050565b60005433600160a060020a03908116911614610c3157600080fd5b600160a060020a03811660009081526003602052604090205460ff1615610c5757600080fd5b60055460329010610c6757600080fd5b7f5611bf3e417d124f97bf2c788843ea8bb502b66079fbee02158ef30b172cb762816001604051600160a060020a039092168252151560208201526040908101905180910390a1600160a060020a0381166000908152600360205260409020805460ff191660019081179091556005805490918101610ce6838261255d565b5060009182526020909120018054600160a060020a031916600160a060020a0392909216919091179055565b600754600160a060020a031681565b600a54600160a060020a031681565b60005433600160a060020a03908116911614610d4b57600080fd5b600160a060020a0381161515610d6057600080fd5b60088054600160a060020a031916600160a060020a0383811691909117918290557f38622430bb6defd4452b087e8d0b4a6d1c4d35c179c2d7d875d4abb272b9d88b9116604051600160a060020a03909116815260200160405180910390a150565b60006b204fce5e3e25026110000000821115610ddd57600080fd5b601254612710038261271002811515610df257fe5b0492915050565b600c6020526000908152604090205481565b600160a060020a03331660009081526003602052604081205460ff161515610e3257600080fd5b6011805460ff191690557f7d7f00509dd73ac4449f698ae75ccc797895eff5fa9d446d3df387598a26e7356000604051901515815260200160405180910390a150600190565b60115460009060ff161515610e8c57600080fd5b60085433600160a060020a03908116911614610ea757600080fd5b610eb5878787878787611cbd565b1515610ec057600080fd5b5060019695505050505050565b60006b204fce5e3e25026110000000821115610ee857600080fd5b6012546127109081038302610df2565b60005433600160a060020a03908116911614610f1357600080fd5b6127108110610f2157600080fd5b60128190557f4f78c4ceb393a616bbd264a4584a9ad15d722042ce1e135e6a8380217f5cb42b8160405190815260200160405180910390a150565b60005433600160a060020a03908116911614610f7757600080fd5b600160a060020a0381161515610f8c57600080fd5b6001547f3b81caf78fa51ecbc8acb482fd7012a277b428d9b80f9d156e8a54107496cc4090600160a060020a0316604051600160a060020a03909116815260200160405180910390a160018054600160a060020a031916600160a060020a0392909216919091179055565b60015433600160a060020a0390811691161461101257600080fd5b6001546000547f65da1cfc2c2e81576ad96afb24a581f8e109b7a403b35cbd3243a1c99efdb9ed91600160a060020a039081169116604051600160a060020a039283168152911660208201526040908101905180910390a16001805460008054600160a060020a0319908116600160a060020a03841617909155169055565b60005433600160a060020a039081169116146110ac57600080fd5b600160a060020a03811615156110c157600080fd5b7f3b81caf78fa51ecbc8acb482fd7012a277b428d9b80f9d156e8a54107496cc4081604051600160a060020a03909116815260200160405180910390a16000547f65da1cfc2c2e81576ad96afb24a581f8e109b7a403b35cbd3243a1c99efdb9ed908290600160a060020a0316604051600160a060020a039283168152911660208201526040908101905180910390a160008054600160a060020a031916600160a060020a0392909216919091179055565b61117b612586565b6005805480602002602001604051908101604052809291908181526020018280548015610b0657602002820191906000526020600020908154600160a060020a03168152600190910190602001808311610ae8575050505050905090565b600080600080600080600080600080601160009054906101000a900460ff16151561120757600099506113ab565b6112118e8e612063565b151561122057600099506113ab565b600160a060020a038e1673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee141561125e57600a548c9850600160a060020a031696508c95506112fd565b600160a060020a038d1673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156112f4578d9650600a60009054906101000a9004600160a060020a03169550600c60008f600160a060020a0316600160a060020a03168152602001908152602001600020548c10156112eb57600160a060020a038e166000908152600c602052604090205497506112ef565b8b97505b6112fd565b600099506113ab565b61130886888a6120f8565b9096509450508388111561131f57600099506113ab565b6000925061132d8186610a61565b9150600160a060020a038e1673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee141561136a57508b61136381838660016119cf565b925061137c565b508c61137981858460006119cf565b92505b6113898486601280612337565b985082156113a25761139b818a610a61565b99506113ab565b61139b89610ecd565b505050505050505050949350505050565b600e6020526000908152604090205481565b60005433600160a060020a039081169116146113e957600080fd5b600160a060020a03811660009081526002602052604090205460ff161561140f57600080fd5b6004546032901061141f57600080fd5b7f091a7a4b85135fdd7e8dbc18b12fabe5cc191ea867aa3c2e1a24a102af61d58b816001604051600160a060020a039092168252151560208201526040908101905180910390a1600160a060020a0381166000908152600260205260409020805460ff191660019081179091556004805490918101610ce6838261255d565b60005433600160a060020a039081169116146114b957600080fd5b600160a060020a0381166000908152600b602052604090205460ff1615156114e057600080fd5b600954600160a060020a038083169163095ea7b391166000806040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561154357600080fd5b6102c65a03f1151561155457600080fd5b50505060405180519050151561156957600080fd5b600160a060020a03166000908152600b60209081526040808320805460ff19169055600c8252808320839055600d8252808320839055600e8252808320839055600f82528083208390556010909152812055565b6000805433600160a060020a039081169116146115d957600080fd5b600160a060020a03821660009081526002602052604090205460ff16151561160057600080fd5b50600160a060020a0381166000908152600260205260408120805460ff191690555b6004548110156108a85781600160a060020a031660048281548110151561164557fe5b600091825260209091200154600160a060020a031614156117215760048054600019810190811061167257fe5b60009182526020909120015460048054600160a060020a03909216918390811061169857fe5b60009182526020909120018054600160a060020a031916600160a060020a03929092169190911790556004805460001901906116d4908261255d565b507f091a7a4b85135fdd7e8dbc18b12fabe5cc191ea867aa3c2e1a24a102af61d58b826000604051600160a060020a039092168252151560208201526040908101905180910390a16108a8565b600101611622565b600854600160a060020a031681565b60005433600160a060020a0390811691161461175357600080fd5b600160a060020a03811682156108fc0283604051600060405180830381858888f19350505050151561178457600080fd5b7fec47e7ed86c86774d1a72c19f35c639911393fe7c1a34031fdbd260890da90de8282604051918252600160a060020a031660208201526040908101905180910390a15050565b600d6020526000908152604090205481565b6000600160a060020a03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156118155750600160a060020a03811631611889565b82600160a060020a03166370a082318360006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561186c57600080fd5b6102c65a03f1151561187d57600080fd5b50505060405180519150505b92915050565b60115460ff1681565b60106020526000908152604090205481565b600160a060020a03331660009081526002602052604090205460ff1615156118d157600080fd5b600160a060020a0383166000908152600b602052604090205460ff1615156118f857600080fd5b600160a060020a039092166000908152600d6020908152604080832093909355600e90522055565b600b6020526000908152604090205460ff1681565b60005433600160a060020a0390811691161461195057600080fd5b600160a060020a0383166000908152600b602052604090205460ff16151561197757600080fd5b6101f481111561198657600080fd5b6103e882111561199557600080fd5b600160a060020a039092166000908152600f6020908152604080832094909455601090529190912055565b600054600160a060020a031681565b600080808080806b204fce5e3e250261100000008911156119ef57600080fd5b89600160a060020a03166370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515611a4657600080fd5b6102c65a03f11515611a5757600080fd5b50505060405180519550508615611aa95788851015611a795760009550611bec565b600160a060020a038a166000908152600d60205260409020548986031015611aa45760009550611bec565b611aef565b8730600160a060020a0316311015611ac45760009550611bec565b600160a060020a038a166000908152600e6020526040902054858a011115611aef5760009550611bec565b600a54611b08908b90600160a060020a031660006120f8565b600a549196509450611b269150600160a060020a03168b60006120f8565b93509150506b204fce5e3e250261100000008411801590611b5357506b204fce5e3e250261100000008211155b8015611b6b57506b204fce5e3e250261100000008311155b8015611b8357506b204fce5e3e250261100000008111155b1515611b8e57600080fd5b8282028185021115611ba35760009550611bec565b601060008b600160a060020a0316600160a060020a03168152602001908152602001600020548185020281850284840203612710021015611be75760009550611bec565b600195505b5050505050949350505050565b600080600160a060020a03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415611c2a5760129150611cb7565b50600160a060020a038216600090815260066020526040902054801515611cb35782600160a060020a031663313ce5676000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611c9157600080fd5b6102c65a03f11515611ca257600080fd5b505050604051805190509150611cb7565b8091505b50919050565b600080600080611ccd8a89612063565b1515611cd857600080fd5b8415611d2c5760008611611ceb57600080fd5b600160a060020a038a1673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415611d2157348914611d1c57600080fd5b611d2c565b3415611d2c57600080fd5b611d3989601280896123da565b915060008211611d4857600080fd5b611d5182610dc2565b9050600160a060020a038a1673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415611e8e57611d8588838b60016119cf565b1515611e0657600a54600160a060020a031663d0e30db0346040518263ffffffff1660e060020a0281526004016000604051808303818588803b1515611dca57600080fd5b6125ee5a03f11515611ddb57600080fd5b5050600a54611df79250600160a060020a03169050898b612467565b925080831015611e0657600080fd5b87600160a060020a031663a9059cbb888460006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515611e6357600080fd5b6102c65a03f11515611e7457600080fd5b505050604051805190501515611e8957600080fd5b611fe6565b89600160a060020a03166323b872dd33308c60006040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b1515611ef857600080fd5b6102c65a03f11515611f0957600080fd5b505050604051805190501515611f1e57600080fd5b611f2b8a8a8460006119cf565b1515611fb557600a54611f49908b90600160a060020a03168b612467565b925080831015611f5857600080fd5b600a54600160a060020a0316632e1a7d4d8460405160e060020a63ffffffff84160281526004810191909152602401600060405180830381600087803b1515611fa057600080fd5b6102c65a03f11515611fb157600080fd5b5050505b600160a060020a03871682156108fc0283604051600060405180830381858888f193505050501515611fe657600080fd5b33600160a060020a03167fea9415385bae08fe9f6dc457b02577166790cde83bb18cc340aac6cb81b824de8b8b8b868c604051600160a060020a039586168152602081019490945291841660408085019190915260608401919091529216608082015260a001905180910390a25060019998505050505050505050565b600160a060020a0382166000908152600b602052604081205460ff1680156120a7575073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee600160a060020a038316145b806120f15750600160a060020a0382166000908152600b602052604090205460ff1680156120f1575073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee600160a060020a038416145b9392505050565b600954600090819081908190600160a060020a0316630374fc6f8888846040516020015260405160e060020a63ffffffff8516028152600160a060020a03928316600482015291166024820152604401602060405180830381600087803b151561216157600080fd5b6102c65a03f1151561217257600080fd5b5050506040518051600954909550600160a060020a03169050634579268a8560006040516080015260405160e060020a63ffffffff84160281526004810191909152602401608060405180830381600087803b15156121d057600080fd5b6102c65a03f115156121e157600080fd5b50505060405180519060200180519060200180519060200180515092955093506001925050505b8185111561232d57600954600160a060020a031663943911bc8560006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561226157600080fd5b6102c65a03f1151561227257600080fd5b505050604051805194505083158061228d5750600101600781115b156122a35760009350600092506000915061232d565b600954600160a060020a0316634579268a8560006040516080015260405160e060020a63ffffffff84160281526004810191909152602401608060405180830381600087803b15156122f457600080fd5b6102c65a03f1151561230557600080fd5b5050506040518051906020018051906020018051906020018051509295509350612208915050565b5093509350939050565b60006b204fce5e3e2502611000000085111561235257600080fd5b6b204fce5e3e2502611000000084111561236b57600080fd5b8282106123a6576012838303111561238257600080fd5b84838303600a0a02670de0b6b3a7640000850281151561239e57fe5b0490506123d2565b601282840311156123b657600080fd5b84828403600a0a670de0b6b3a764000086020281151561239e57fe5b949350505050565b60006b204fce5e3e250261100000008511156123f557600080fd5b69d3c21bcecceda100000082111561240c57600080fd5b83831061243b576012848403111561242357600080fd5b670de0b6b3a7640000858302858503600a0a0261239e565b6012838503111561244b57600080fd5b828403600a0a670de0b6b3a76400000282860281151561239e57fe5b6000806000806124788688876120f8565b919450925090506b204fce5e3e2502611000000085111561249857600080fd5b6b204fce5e3e250261100000008211156124b157600080fd5b808286028115156124be57fe5b0493506fffffffffffffffffffffffffffffffff841684146124df57600080fd5b600954600160a060020a03166349606455848660405160e060020a63ffffffff851602815260048101929092526fffffffffffffffffffffffffffffffff166024820152604401600060405180830381600087803b151561253f57600080fd5b6102c65a03f1151561255057600080fd5b5050505050509392505050565b81548183558181151161258157600083815260209020612581918101908301612598565b505050565b60206040519081016040526000815290565b61073991905b808211156125b2576000815560010161259e565b50905600a165627a7a72305820c65ed24fe6b5aa8f577c83a0591036ea9abc9e7eed5d215aea7a1a74eb0f9a7f0029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000706abce058db29eb36578c463cf295f180a1fe9c000000000000000000000000b7ac09c2c0217b07d7c103029b4918a2c401eecb000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000d0643bc0d0c879f175556509dbcee9373379d5c30000000000000000000000000000000000000000000000000000000000000019
-----Decoded View---------------
Arg [0] : _kyberNetwork (address): 0x706aBcE058DB29eB36578c463cf295F180a1Fe9C
Arg [1] : _otc (address): 0xB7ac09C2c0217B07d7c103029B4918a2C401eeCB
Arg [2] : _wethToken (address): 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
Arg [3] : _admin (address): 0xd0643BC0D0C879F175556509dbcEe9373379D5C3
Arg [4] : _feeBps (uint256): 25
-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 000000000000000000000000706abce058db29eb36578c463cf295f180a1fe9c
Arg [1] : 000000000000000000000000b7ac09c2c0217b07d7c103029b4918a2c401eecb
Arg [2] : 000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
Arg [3] : 000000000000000000000000d0643bc0d0c879f175556509dbcee9373379d5c3
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000019
Swarm Source
bzzr://c65ed24fe6b5aa8f577c83a0591036ea9abc9e7eed5d215aea7a1a74eb0f9a7f
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 27 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.