Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
OperaToken
Compiler Version
v0.8.21+commit.d9974bed
Contract Source Code (Solidity Standard Json-Input format)
pragma solidity ^0.8.17; //SPDX-License-Identifier: MIT import "IERC20.sol"; import "Auth.sol"; import "SafeMath.sol"; import "IDEXRouter.sol"; import "IDEXFactory.sol"; import "OperaRevenue.sol"; //This Token was deployed using the Opera Protocol //The Opera Protocol is a token deployer with the ability to deploy using borrowed initial liquidity //This token can be configured at construction to have NO taxes or to HAVE taxes //If the taxable variable (this cannot be updated after deployment) is true then this token is taxed //If the borrowedLP variable (this cannot be updated after deployment) is true then the max tax is 10% buy / sell, otherwise the max can be 50% buy / sell //Swap Threshold must be between 0.2% and 5% of supply, only if the token is taxable //The Opera Dao will control the LP tokens for tokens that borrow Liquidity contract OperaToken is IERC20, Auth { using SafeMath for uint256; string _name; string _symbol; string _telegram; string _website; uint8 constant _decimals = 9; uint256 public _totalSupply; uint256 public _maxWalletToken; uint256 public _swapThreshold; uint256 public _operaTax; uint256 public _marketingBuyTax; uint256 public _marketingSellTax; uint256 public _devBuyTax; uint256 public _devSellTax; uint256 public _liquidityBuyTax; uint256 public _liquiditySellTax; mapping(address => uint256) _balances; mapping(address => mapping(address => uint256)) _allowances; mapping(address => bool) isFeeExempt; address public pair; address public routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; address public _devAddress; address public _marketingAddress; address public OperaRevenueAddress; address public OperaFactoryAddress; address public WETHAddress = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; IDEXRouter public router; bool inSwap; bool taxable; bool borrowedLP; modifier swapping() { inSwap = true; _; inSwap = false; } event AutoLiquify(uint256 amountETH, uint256 amountCoin); constructor( string[] memory _stringData, address[] memory _addressData, uint256[] memory _intData, address rewardsAddress ) Auth(msg.sender) { require(_stringData.length == 4, "String List needs 4 string inputs"); require( _addressData.length == 2, "Address List needs 2 address inputs" ); require(_intData.length == 11, "Int List needs 11 int inputs"); if (_intData[9] == 1) { taxable = true; } if (_intData[10] == 1 && _intData[9] == 1) { borrowedLP = true; } OperaRevenueAddress = rewardsAddress; OperaFactoryAddress = msg.sender; router = IDEXRouter(routerAddress); pair = IDEXFactory(router.factory()).createPair( router.WETH(), address(this) ); authorizations[routerAddress] = true; _name = _stringData[0]; _symbol = _stringData[1]; _telegram = _stringData[2]; _website = _stringData[3]; require(_intData[0] > 0 && _intData[0] < 999999999999999999); _totalSupply = _intData[0] * 10 ** _decimals; _balances[msg.sender] = _totalSupply; emit Transfer(address(0), msg.sender, _totalSupply); _maxWalletToken = (_totalSupply * _intData[1]) / 1000; if (taxable) { _devAddress = _addressData[0]; _marketingAddress = _addressData[1]; _swapThreshold = (_totalSupply * _intData[2]) / 1000; _marketingBuyTax = _intData[3]; _marketingSellTax = _intData[4]; _devBuyTax = _intData[5]; _devSellTax = _intData[6]; _liquidityBuyTax = _intData[7]; _liquiditySellTax = _intData[8]; if (borrowedLP) { if (getTotalTax() > 192) { _operaTax = 20; } else { _operaTax = 4; } } else { _operaTax = 2; } require( _swapThreshold <= (_totalSupply / 20) && _swapThreshold >= (_totalSupply / 500), "Swap Threshold must be less than 5% of total supply, or greater than 0.2%." ); require(getSellTax() <= 500, "Sell tax can't be greater than 50%."); require(getBuyTax() <= 500, "Buy tax can't be greater than 50%."); require( _devAddress != address(0) && _marketingAddress != address(0), "Reciever wallets can't be Zero address." ); } _allowances[address(this)][address(router)] = _totalSupply; require( _maxWalletToken >= (_totalSupply / 500), "Max Wallet must be greater than 0.2%." ); } receive() external payable {} function totalSupply() external view override returns (uint256) { return _totalSupply; } function decimals() external pure override returns (uint8) { return _decimals; } function symbol() external view override returns (string memory) { return _symbol; } function name() external view override returns (string memory) { return _name; } function getOwner() external view override returns (address) { return owner; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function allowance( address holder, address spender ) external view override returns (uint256) { return _allowances[holder][spender]; } function approve( address spender, uint256 amount ) public override returns (bool) { _allowances[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } function approveMax(address spender) external returns (bool) { return approve(spender, _totalSupply); } function transfer( address recipient, uint256 amount ) external override returns (bool) { if (owner == msg.sender) { return _basicTransfer(msg.sender, recipient, amount); } else { return _transferFrom(msg.sender, recipient, amount); } } function _basicTransfer( address sender, address recipient, uint256 amount ) internal returns (bool) { _balances[sender] = _balances[sender].sub( amount, "Insufficient Balance" ); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) external override returns (bool) { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); if (_allowances[sender][msg.sender] != _totalSupply) { _allowances[sender][msg.sender] = _allowances[sender][msg.sender] .sub(amount, "Insufficient Allowance"); } return _transferFrom(sender, recipient, amount); } function _transferFrom( address sender, address recipient, uint256 amount ) internal returns (bool) { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); if (authorizations[sender] || authorizations[recipient]) { return _basicTransfer(sender, recipient, amount); } if (inSwap) { return _basicTransfer(sender, recipient, amount); } checkLimits(sender, recipient, amount); if (shouldTokenSwap(recipient)) { tokenSwap(); } _balances[sender] = _balances[sender].sub( amount, "Insufficient Balance" ); uint256 amountReceived = (taxable && (recipient == pair || sender == pair)) ? takeFee(sender, recipient, amount) : amount; _balances[recipient] = _balances[recipient].add(amountReceived); emit Transfer(sender, recipient, amountReceived); return true; } function takeFee( address sender, address recipient, uint256 amount ) internal returns (uint256) { if (isFeeExempt[sender] || isFeeExempt[recipient]) { return amount; } if (recipient == OperaFactoryAddress) { return amount; } uint256 _totalFee; _totalFee = (recipient == pair) ? getSellTax() : getBuyTax(); uint256 feeAmount = amount.mul(_totalFee).div(1000); _balances[address(this)] = _balances[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); return amount.sub(feeAmount); } function getBuyTax() public view returns (uint) { return _liquidityBuyTax + _devBuyTax + _marketingBuyTax + _operaTax; } function getSellTax() public view returns (uint) { return _liquiditySellTax + _devSellTax + _marketingSellTax + _operaTax; } function getTotalTax() public view returns (uint) { return getSellTax() + getBuyTax(); } function setTaxes( uint256 _marketingBuyPercent, uint256 _marketingSellPercent, uint256 _devBuyPercent, uint256 _devSellPercent, uint256 _liquidityBuyPercent, uint256 _liquiditySellPercent ) external authorized { require(inSwap == false, "Cannot call when in swap"); require(taxable, "This token has no taxes."); uint256 amount = _balances[address(this)]; if (_operaTax == 20) { if (amount > 0) { tokenSwap(); } _operaTax = 4; } _marketingBuyTax = _marketingBuyPercent; _liquidityBuyTax = _liquidityBuyPercent; _devBuyTax = _devBuyPercent; _marketingSellTax = _marketingSellPercent; _liquiditySellTax = _liquiditySellPercent; _devSellTax = _devSellPercent; require( getBuyTax() <= (borrowedLP ? 100 : 500), "Buy tax can't be greater than 10% if borrowed lp and 50% if not." ); require( getSellTax() <= (borrowedLP ? 100 : 500), "Sell tax can't be greater than 10% if borrowed lp and 50% if not." ); } function tokenSwap() internal swapping { uint256 amount = _balances[address(this)]; uint256 amountToLiquify = (_liquidityBuyTax + _liquiditySellTax > 0) ? amount .mul(_liquidityBuyTax + _liquiditySellTax) .div(getTotalTax()) .div(2) : 0; uint256 amountToSwap = amount.sub(amountToLiquify); address[] memory path = new address[](2); path[0] = address(this); path[1] = WETHAddress; uint256 balanceBefore = address(this).balance; router.swapExactTokensForETHSupportingFeeOnTransferTokens( amountToSwap, 0, path, address(this), block.timestamp ); bool tmpSuccess; uint256 amountETH = address(this).balance.sub(balanceBefore); uint256 totalETHFee = (_liquidityBuyTax + _liquiditySellTax > 0) ? getTotalTax().sub((_liquidityBuyTax + _liquiditySellTax).div(2)) : getTotalTax(); uint256 amountETHLiquidity = amountETH .mul(_liquidityBuyTax + _liquiditySellTax) .div(totalETHFee) .div(2); if (_devBuyTax + _devSellTax > 0) { uint256 amountETHDev = amountETH.mul(_devBuyTax + _devSellTax).div( totalETHFee ); (tmpSuccess, ) = payable(_devAddress).call{ value: amountETHDev, gas: 100000 }(""); tmpSuccess = false; } if (_marketingBuyTax + _marketingSellTax > 0) { uint256 amountETHMarketing = amountETH .mul(_marketingBuyTax + _marketingSellTax) .div(totalETHFee); (tmpSuccess, ) = payable(_marketingAddress).call{ value: amountETHMarketing, gas: 100000 }(""); tmpSuccess = false; } if (amountToLiquify > 0) { address liqAddress = borrowedLP ? OperaFactoryAddress : _marketingAddress; router.addLiquidityETH{value: amountETHLiquidity}( address(this), amountToLiquify, 0, 0, liqAddress, block.timestamp ); emit AutoLiquify(amountETHLiquidity, amountToLiquify); } uint256 operaFee = amountETH.mul(_operaTax.mul(2)).div(totalETHFee); OperaRevenue rewardContract = OperaRevenue( payable(OperaRevenueAddress) ); rewardContract.recieveRewards{value: operaFee}(); } function shouldTokenSwap(address recipient) internal view returns (bool) { return ((recipient == pair) && taxable && !inSwap && _balances[address(this)] >= _swapThreshold); } function checkLimits( address sender, address recipient, uint256 amount ) internal view { if ( !authorizations[sender] && !authorizations[recipient] && recipient != address(this) && sender != address(this) && recipient != 0x000000000000000000000000000000000000dEaD && recipient != pair && recipient != _marketingAddress && recipient != _devAddress && recipient != OperaFactoryAddress ) { uint256 heldTokens = balanceOf(recipient); require( (heldTokens + amount) <= _maxWalletToken, "Total Holding is currently limited, you can not buy that much." ); } } function setMaxWallet(uint256 percent) external authorized { require(inSwap == false, "Cannot call when in swap"); _maxWalletToken = (_totalSupply * percent) / 1000; require( _maxWalletToken >= (_totalSupply / 500), "Max Wallet must be greater than 0.2%." ); } function setTokenSwapSettings(uint256 percent) external authorized { require(inSwap == false, "Cannot call when in swap"); require(taxable, "This token has no taxes."); _swapThreshold = (_totalSupply * percent) / 1000; require( _swapThreshold <= (_totalSupply / 20) && _swapThreshold >= (_totalSupply / 500), "Swap Threshold must be less than 5% of total supply, or greater than 0.2%." ); } // function getAddress() external view returns (address) { // return address(this); // } function aboutMe() external view returns (string memory, string memory) { return (_telegram, _website); } function updateAboutMe( string memory telegram, string memory website ) external onlyOwner { _telegram = telegram; _website = website; } function setAddresses( address marketingAddress, address devAddress ) external onlyOwner { require(inSwap == false, "Cannot call when in swap"); require(taxable, "This token has no taxes."); if (marketingAddress != address(0)) { _marketingAddress = marketingAddress; } if (devAddress != address(0)) { _devAddress = devAddress; } require( _devAddress != address(0) && _marketingAddress != address(0), "Reciever wallets can't be Zero address." ); } function setFeeExemption(address user, bool status) external onlyOwner { isFeeExempt[user] = status; } function clearStuckBalance() external onlyOwner { require(inSwap == false, "Cannot call when in swap"); payable(msg.sender).transfer(address(this).balance); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.17; interface IERC20 { function totalSupply() external view returns (uint256); function decimals() external view returns (uint8); function symbol() external view returns (string memory); function name() external view returns (string memory); function getOwner() external view returns (address); function balanceOf(address account) external view returns (uint256); function transfer( address recipient, uint256 amount ) external returns (bool); function allowance( address _owner, address spender ) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.17; abstract contract Auth { address internal owner; mapping(address => bool) internal authorizations; constructor(address _owner) { owner = _owner; authorizations[_owner] = true; } modifier onlyOwner() { require(isOwner(msg.sender), "!OWNER"); _; } modifier authorized() { require(isAuthorized(msg.sender), "!AUTHORIZED"); _; } function authorize(address adr) public onlyOwner { authorizations[adr] = true; } function unauthorize(address adr) public onlyOwner { authorizations[adr] = false; } function isOwner(address account) public view returns (bool) { return account == owner; } function isAuthorized(address adr) public view returns (bool) { return authorizations[adr]; } function transferOwnership(address payable adr) public onlyOwner { owner = adr; authorizations[adr] = true; emit OwnershipTransferred(adr); } event OwnershipTransferred(address owner); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.17; library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.17; interface IDEXRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.17; interface IDEXFactory { function createPair( address tokenA, address tokenB ) external returns (address pair); }
pragma solidity ^0.8.17; //SPDX-License-Identifier: MIT import "OperaToken.sol"; import "OperaLendingPool.sol"; import "IERC20.sol"; // import "Math.sol"; contract OperaRevenue { address public owner; address public teamAlpha; address public teamBeta = 0xB0241BD37223F8c55096A2e15A13534A57938716; uint256 public revenueShareAmount; uint256 public lendersCut; uint256 public teamsCut; uint256 public revShareCut; mapping(address => uint256) public claimableRewardsForAddress; address public lendingPoolAddress; event rewardsMoved( address account, uint256 amount, uint256 blocktime, bool incoming ); event rewardsAwarded(address user, uint256 amount, uint256 blocktime); constructor(address _lendingPool) { owner = msg.sender; teamAlpha = msg.sender; lendingPoolAddress = _lendingPool; } modifier onlyOwner() { require(owner == msg.sender, "only owner"); _; } function withdraw() external onlyOwner { payable(owner).transfer(address(this).balance); } function requestReward() external { uint256 usersRewardAmount = claimableRewardsForAddress[msg.sender]; require(usersRewardAmount > 0, "You have no rewards."); claimableRewardsForAddress[msg.sender] = 0; payable(msg.sender).transfer(usersRewardAmount); emit rewardsMoved( msg.sender, usersRewardAmount, block.timestamp, false ); } function setLendingPoolAddress(address addy) external onlyOwner { lendingPoolAddress = addy; } function setBetaAddress(address addy) external onlyOwner { teamBeta = addy; } function setAlphaAddress(address addy) external onlyOwner { teamAlpha = addy; } function getAddressBalance(address _address) public view returns (uint256) { return _address.balance; } function removeRevenueShare() external onlyOwner { uint256 amount = revenueShareAmount; revenueShareAmount = 0; payable(owner).transfer(amount); } function awardRevenue(address user) external payable onlyOwner { claimableRewardsForAddress[user] += msg.value; } function changeFees( uint256 lenders, uint256 team, uint256 revShare ) external payable onlyOwner { lendersCut = lenders; teamsCut = team; revShareCut = revShare; require( 100 == lendersCut + teamsCut + teamsCut + revShareCut, "Fees have to equal 100%" ); } receive() external payable {} function recieveRewards() external payable { OperaPool lender = OperaPool(payable(lendingPoolAddress)); uint256 totalEthLent = lender.totalEthLent(); if (totalEthLent == 0) { uint256 getTeamFee = (msg.value * 50) / 100; claimableRewardsForAddress[teamAlpha] += getTeamFee; claimableRewardsForAddress[teamBeta] += getTeamFee; } else { uint256 numberOfLenders = lender.numberOfLenders(); uint256 getLenderFee = (msg.value * 60) / 100; uint256 getTeamFee = (msg.value * 10) / 100; uint256 getRevenueFee = (msg.value * 20) / 100; uint256 rewardsPerShare = getLenderFee / totalEthLent; address tempAddress; uint256 tempLentAmount; claimableRewardsForAddress[teamAlpha] += getTeamFee; claimableRewardsForAddress[teamBeta] += getTeamFee; revenueShareAmount += getRevenueFee; for (uint256 i = 0; i < numberOfLenders; i++) { tempAddress = lender.lenderIdToAddress(i + 1); tempLentAmount = lender.usersCurrentLentAmount(tempAddress); claimableRewardsForAddress[tempAddress] += tempLentAmount * rewardsPerShare; emit rewardsAwarded( tempAddress, tempLentAmount * rewardsPerShare, block.timestamp ); } } emit rewardsMoved(msg.sender, msg.value, block.timestamp, true); } }
pragma solidity ^0.8.17; //SPDX-License-Identifier: MIT import "Auth.sol"; import "IERC20.sol"; contract OperaPool is Auth { uint256 public totalEthLent; uint256 public totalAvailableEth; uint256 public numberOfLenders; uint256 public borrowLimit = 3; uint256 public _tokenDecimals = 1 * 10 ** 18; bool public borrowingEnable = true; mapping(address => uint256) public usersCurrentLentAmount; mapping(uint256 => address) public lenderIdToAddress; mapping(address => uint256) public lenderAddressToId; mapping(address => bool) public authorizedFactoryAddresses; event ethMoved( address account, uint256 amount, uint256 code, uint256 blocktime ); // 1 lent 2 borrowed 3 returned 4 withdrawn event factoryStatusChange(address factoryAddress, bool status); constructor() Auth(msg.sender) {} modifier onlyFactoryAuthorized() { require( authorizedFactoryAddresses[msg.sender], "only factory contracts can borrow eth" ); _; } function updateFactoryAuthorization( address addy, bool status ) external onlyOwner { authorizedFactoryAddresses[addy] = status; emit factoryStatusChange(addy, status); } function updateBorrowLimit(uint256 limit) external onlyOwner { borrowLimit = limit; } function updateBorrowingEnabled(bool status) external onlyOwner { borrowingEnable = status; } function lendForAddress(address addy) external payable returns (bool) { require( msg.value > 0 && msg.value % _tokenDecimals == 0, "Only send full ether." ); if (lenderAddressToId[addy] == 0) { lenderAddressToId[addy] = numberOfLenders + 1; lenderIdToAddress[numberOfLenders + 1] = addy; numberOfLenders += 1; } uint256 amountReceived = msg.value / _tokenDecimals; emit ethMoved(addy, amountReceived, 1, block.timestamp); totalEthLent += amountReceived; usersCurrentLentAmount[addy] += amountReceived; totalAvailableEth += amountReceived; return true; } receive() external payable {} function lendEth() external payable returns (bool) { require( msg.value > 0 && msg.value % _tokenDecimals == 0, "Only send full ether." ); if (lenderAddressToId[msg.sender] == 0) { lenderAddressToId[msg.sender] = numberOfLenders + 1; lenderIdToAddress[numberOfLenders + 1] = msg.sender; numberOfLenders += 1; } uint256 amountReceived = msg.value / _tokenDecimals; emit ethMoved(msg.sender, amountReceived, 1, block.timestamp); totalEthLent += amountReceived; usersCurrentLentAmount[msg.sender] += amountReceived; totalAvailableEth += amountReceived; return true; } function borrowEth(uint256 _amount) external onlyFactoryAuthorized { require(_amount <= totalAvailableEth, "Not Enough eth to borrow"); require(_amount > 0, "Cannot borrow 0"); require(borrowingEnable, "Borrowing is not enabled."); require(_amount <= borrowLimit, "Can't borrow that much."); totalAvailableEth -= _amount; payable(msg.sender).transfer(_amount * _tokenDecimals); emit ethMoved(msg.sender, _amount, 2, block.timestamp); } function returnLentEth(uint256 amountEth) external payable returns (bool) { require( (amountEth * _tokenDecimals) - msg.value == 0, "Did not send enough eth." ); emit ethMoved(msg.sender, amountEth, 3, block.timestamp); totalAvailableEth += amountEth; return true; } function withdrawLentEth(uint256 _amountEther) external payable { require( usersCurrentLentAmount[msg.sender] >= _amountEther, "You Did not lend that much." ); require(_amountEther > 0, "Cant withdraw 0."); require(_amountEther <= totalAvailableEth, "Not enough eth available."); if (usersCurrentLentAmount[msg.sender] == _amountEther) { uint256 tempIdOfUser = lenderAddressToId[msg.sender]; address addressOfLastUser = lenderIdToAddress[numberOfLenders]; if (addressOfLastUser != msg.sender) { delete lenderAddressToId[msg.sender]; lenderAddressToId[addressOfLastUser] = tempIdOfUser; lenderIdToAddress[tempIdOfUser] = addressOfLastUser; delete lenderIdToAddress[numberOfLenders]; numberOfLenders -= 1; } else { delete lenderAddressToId[msg.sender]; delete lenderIdToAddress[tempIdOfUser]; numberOfLenders -= 1; } } usersCurrentLentAmount[msg.sender] -= _amountEther; totalAvailableEth -= _amountEther; totalEthLent -= _amountEther; payable(msg.sender).transfer(_amountEther * _tokenDecimals); emit ethMoved(msg.sender, _amountEther, 4, block.timestamp); } //safe gaurd so no funds get locked function withdraw(uint256 amount) external onlyOwner { payable(owner).transfer(amount); } function rescueToken(address token, uint256 amount) external onlyOwner { IERC20 tokenToRescue = IERC20(token); tokenToRescue.transfer(owner, amount); } function removeExcess() external payable onlyOwner { require( address(this).balance > totalAvailableEth * _tokenDecimals, "There is no excess eth" ); uint256 excessAmount = address(this).balance - (totalAvailableEth * _tokenDecimals); payable(owner).transfer(excessAmount); } }
/// math.sol -- mixin for inline numerical wizardry // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License // along with this program. If not, see <http://www.gnu.org/licenses/>. pragma solidity >0.4.13; contract DSMath { function add(uint x, uint y) internal pure returns (uint z) { require((z = x + y) >= x, "ds-math-add-overflow"); } function sub(uint x, uint y) internal pure returns (uint z) { require((z = x - y) <= x, "ds-math-sub-underflow"); } function mul(uint x, uint y) internal pure returns (uint z) { require(y == 0 || (z = x * y) / y == x, "ds-math-mul-overflow"); } function min(uint x, uint y) internal pure returns (uint z) { return x <= y ? x : y; } function max(uint x, uint y) internal pure returns (uint z) { return x >= y ? x : y; } function imin(int x, int y) internal pure returns (int z) { return x <= y ? x : y; } function imax(int x, int y) internal pure returns (int z) { return x >= y ? x : y; } uint constant WAD = 10 ** 18; uint constant RAY = 10 ** 27; //rounds to zero if x*y < WAD / 2 function wmul(uint x, uint y) internal pure returns (uint z) { z = add(mul(x, y), WAD / 2) / WAD; } //rounds to zero if x*y < WAD / 2 function rmul(uint x, uint y) internal pure returns (uint z) { z = add(mul(x, y), RAY / 2) / RAY; } //rounds to zero if x*y < WAD / 2 function wdiv(uint x, uint y) internal pure returns (uint z) { z = add(mul(x, WAD), y / 2) / y; } //rounds to zero if x*y < RAY / 2 function rdiv(uint x, uint y) internal pure returns (uint z) { z = add(mul(x, RAY), y / 2) / y; } // This famous algorithm is called "exponentiation by squaring" // and calculates x^n with x as fixed-point and n as regular unsigned. // // It's O(log n), instead of O(n) for naive repeated multiplication. // // These facts are why it works: // // If n is even, then x^n = (x^2)^(n/2). // If n is odd, then x^n = x * x^(n-1), // and applying the equation for even x gives // x^n = x * (x^2)^((n-1) / 2). // // Also, EVM division is flooring and // floor[(n-1) / 2] = floor[n / 2]. // function rpow(uint x, uint n) internal pure returns (uint z) { z = n % 2 != 0 ? x : RAY; for (n /= 2; n != 0; n /= 2) { x = rmul(x, x); if (n % 2 != 0) { z = rmul(z, x); } } } }
{ "evmVersion": "istanbul", "optimizer": { "enabled": true, "runs": 200 }, "libraries": { "OperaToken.sol": {} }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string[]","name":"_stringData","type":"string[]"},{"internalType":"address[]","name":"_addressData","type":"address[]"},{"internalType":"uint256[]","name":"_intData","type":"uint256[]"},{"internalType":"address","name":"rewardsAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountCoin","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"OperaFactoryAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"OperaRevenueAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WETHAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_devAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_devBuyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_devSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityBuyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquiditySellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingBuyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_operaTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"aboutMe","outputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getBuyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"routerAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"marketingAddress","type":"address"},{"internalType":"address","name":"devAddress","type":"address"}],"name":"setAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setFeeExemption","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingBuyPercent","type":"uint256"},{"internalType":"uint256","name":"_marketingSellPercent","type":"uint256"},{"internalType":"uint256","name":"_devBuyPercent","type":"uint256"},{"internalType":"uint256","name":"_devSellPercent","type":"uint256"},{"internalType":"uint256","name":"_liquidityBuyPercent","type":"uint256"},{"internalType":"uint256","name":"_liquiditySellPercent","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"setTokenSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"telegram","type":"string"},{"internalType":"string","name":"website","type":"string"}],"name":"updateAboutMe","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052601480546001600160a01b0319908116737a250d5630b4cf539739df2c5dacb4c659f2488d179091556019805490911673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21790553480156200005957600080fd5b50604051620038da380380620038da8339810160408190526200007c9162000c84565b600080546001600160a01b0319163390811782558152600160208190526040909120805460ff1916909117905583516004146200010a5760405162461bcd60e51b815260206004820152602160248201527f537472696e67204c697374206e65656473203420737472696e6720696e7075746044820152607360f81b60648201526084015b60405180910390fd5b8251600214620001695760405162461bcd60e51b815260206004820152602360248201527f41646472657373204c697374206e656564732032206164647265737320696e7060448201526275747360e81b606482015260840162000101565b8151600b14620001bc5760405162461bcd60e51b815260206004820152601c60248201527f496e74204c697374206e6565647320313120696e7420696e7075747300000000604482015260640162000101565b81600981518110620001d257620001d262000e13565b6020026020010151600103620001f657601a805460ff60a81b1916600160a81b1790555b81600a815181106200020c576200020c62000e13565b602002602001015160011480156200024157508160098151811062000235576200023562000e13565b60200260200101516001145b156200025b57601a805460ff60b01b1916600160b01b1790555b601780546001600160a01b038084166001600160a01b03199283161790925560188054821633179055601454601a8054909216921691821790556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015620002d1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f7919062000e29565b6001600160a01b031663c9c65396601a60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000359573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200037f919062000e29565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af1158015620003cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003f2919062000e29565b601380546001600160a01b0319166001600160a01b039283161790556014541660009081526001602081905260408220805460ff19169091179055845185919062000441576200044162000e13565b60200260200101516002908162000459919062000edd565b508360018151811062000470576200047062000e13565b60200260200101516003908162000488919062000edd565b50836002815181106200049f576200049f62000e13565b602002602001015160049081620004b7919062000edd565b5083600381518110620004ce57620004ce62000e13565b602002602001015160059081620004e6919062000edd565b50600082600081518110620004ff57620004ff62000e13565b6020026020010151118015620005395750670de0b6b3a763ffff826000815181106200052f576200052f62000e13565b6020026020010151105b6200054357600080fd5b620005516009600a620010be565b8260008151811062000567576200056762000e13565b60200260200101516200057b9190620010cf565b600681905533600081815260106020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36103e882600181518110620005e157620005e162000e13565b6020026020010151600654620005f89190620010cf565b620006049190620010e9565b600755601a54600160a81b900460ff161562000a0e578260008151811062000630576200063062000e13565b6020026020010151601560006101000a8154816001600160a01b0302191690836001600160a01b031602179055508260018151811062000674576200067462000e13565b6020026020010151601660006101000a8154816001600160a01b0302191690836001600160a01b031602179055506103e882600281518110620006bb57620006bb62000e13565b6020026020010151600654620006d29190620010cf565b620006de9190620010e9565b600855815182906003908110620006f957620006f962000e13565b6020026020010151600a81905550816004815181106200071d576200071d62000e13565b6020026020010151600b819055508160058151811062000741576200074162000e13565b6020026020010151600c819055508160068151811062000765576200076562000e13565b6020026020010151600d819055508160078151811062000789576200078962000e13565b6020026020010151600e8190555081600881518110620007ad57620007ad62000e13565b6020908102919091010151600f55601a54600160b01b900460ff1615620007f75760c0620007da62000ab3565b1115620007ec576014600955620007fd565b6004600955620007fd565b60026009555b60146006546200080e9190620010e9565b600854111580156200083357506101f46006546200082d9190620010e9565b60085410155b620008ba5760405162461bcd60e51b815260206004820152604a60248201527f53776170205468726573686f6c64206d757374206265206c657373207468616e60448201527f203525206f6620746f74616c20737570706c792c206f722067726561746572206064820152693a3430b710181719129760b11b608482015260a40162000101565b6101f4620008c762000ada565b1115620009235760405162461bcd60e51b815260206004820152602360248201527f53656c6c207461782063616e27742062652067726561746572207468616e203560448201526218129760e91b606482015260840162000101565b6101f46200093062000b00565b11156200098b5760405162461bcd60e51b815260206004820152602260248201527f427579207461782063616e27742062652067726561746572207468616e203530604482015261129760f11b606482015260840162000101565b6015546001600160a01b031615801590620009b057506016546001600160a01b031615155b62000a0e5760405162461bcd60e51b815260206004820152602760248201527f52656369657665722077616c6c6574732063616e2774206265205a65726f206160448201526632323932b9b99760c91b606482015260840162000101565b600654306000908152601160209081526040808320601a546001600160a01b03168452909152902081905562000a48906101f490620010e9565b600754101562000aa95760405162461bcd60e51b815260206004820152602560248201527f4d61782057616c6c6574206d7573742062652067726561746572207468616e20604482015264181719129760d91b606482015260840162000101565b5050505062001122565b600062000abf62000b00565b62000ac962000ada565b62000ad591906200110c565b905090565b6000600954600b54600d54600f5462000af491906200110c565b62000ac991906200110c565b6000600954600a54600c54600e5462000af491906200110c565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171562000b5b5762000b5b62000b1a565b604052919050565b60006001600160401b0382111562000b7f5762000b7f62000b1a565b5060051b60200190565b80516001600160a01b038116811462000ba157600080fd5b919050565b600082601f83011262000bb857600080fd5b8151602062000bd162000bcb8362000b63565b62000b30565b82815260059290921b8401810191818101908684111562000bf157600080fd5b8286015b8481101562000c175762000c098162000b89565b835291830191830162000bf5565b509695505050505050565b600082601f83011262000c3457600080fd5b8151602062000c4762000bcb8362000b63565b82815260059290921b8401810191818101908684111562000c6757600080fd5b8286015b8481101562000c17578051835291830191830162000c6b565b6000806000806080858703121562000c9b57600080fd5b84516001600160401b038082111562000cb357600080fd5b818701915087601f83011262000cc857600080fd5b8151602062000cdb62000bcb8362000b63565b82815260059290921b8401810191818101908b84111562000cfb57600080fd5b8286015b8481101562000da85780518681111562000d1857600080fd5b8701603f81018e1362000d2a57600080fd5b848101518781111562000d415762000d4162000b1a565b62000d55601f8201601f1916870162000b30565b8181528f604083850101111562000d6c5760008081fd5b60005b8281101562000d8d5783810160400151828201890152870162000d6f565b50600091810187019190915284525091830191830162000cff565b50918a015191985090935050508082111562000dc357600080fd5b62000dd18883890162000ba6565b9450604087015191508082111562000de857600080fd5b5062000df78782880162000c22565b92505062000e086060860162000b89565b905092959194509250565b634e487b7160e01b600052603260045260246000fd5b60006020828403121562000e3c57600080fd5b62000e478262000b89565b9392505050565b600181811c9082168062000e6357607f821691505b60208210810362000e8457634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000ed857600081815260208120601f850160051c8101602086101562000eb35750805b601f850160051c820191505b8181101562000ed45782815560010162000ebf565b5050505b505050565b81516001600160401b0381111562000ef95762000ef962000b1a565b62000f118162000f0a845462000e4e565b8462000e8a565b602080601f83116001811462000f49576000841562000f305750858301515b600019600386901b1c1916600185901b17855562000ed4565b600085815260208120601f198616915b8281101562000f7a5788860151825594840194600190910190840162000f59565b508582101562000f995787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200100057816000190482111562000fe45762000fe462000fa9565b8085161562000ff257918102915b93841c939080029062000fc4565b509250929050565b6000826200101957506001620010b8565b816200102857506000620010b8565b81600181146200104157600281146200104c576200106c565b6001915050620010b8565b60ff84111562001060576200106062000fa9565b50506001821b620010b8565b5060208310610133831016604e8410600b841016171562001091575081810a620010b8565b6200109d838362000fbf565b8060001904821115620010b457620010b462000fa9565b0290505b92915050565b600062000e4760ff84168362001008565b8082028115828204841417620010b857620010b862000fa9565b6000826200110757634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620010b857620010b862000fa9565b6127a880620011326000396000f3fe6080604052600436106102765760003560e01c80636af659291161014f578063bc7a2898116100c1578063e5f2758f1161007a578063e5f2758f1461074d578063f0b37c041461076d578063f2fde38b1461078d578063f887ea40146107ad578063fb4aa585146107cd578063fe9fbb80146107e357600080fd5b8063bc7a289814610678578063caac79341461069b578063d9d9666c146106bb578063dd03bf86146106db578063dd62ed3e146106f1578063e42029541461073757600080fd5b806390107afe1161011357806390107afe146105ce57806395d89b41146105ee578063a8aa1b3114610603578063a9059cbb14610623578063b0bc85de14610643578063b6a5d7de1461065857600080fd5b80636af659291461052457806370a0823114610544578063751fd1791461057a57806378109e541461059a578063893d20e8146105b057600080fd5b80632d2fe717116101e85780633eaaf86b116101ac5780633eaaf86b1461047857806343e672701461048e578063571ac8b0146104a45780635b64c5a9146104c45780635d0044ca146104e457806360959b561461050457600080fd5b80632d2fe717146103e25780632f54bf6e146103f8578063313ce567146104275780633268cc5614610443578063364333f41461046357600080fd5b80630e5a92311161023a5780630e5a92311461035757806318160ddd1461036d5780631f1b845b1461038257806323b872dd14610398578063252d723a146103b8578063276ef2d5146103cd57600080fd5b8063010cf5591461028257806304d4c990146102ab57806306fdde03146102cd578063095ea7b3146102ef5780630af88b241461031f57600080fd5b3661027d57005b600080fd5b34801561028e57600080fd5b50610298600d5481565b6040519081526020015b60405180910390f35b3480156102b757600080fd5b506102cb6102c63660046120d9565b61081c565b005b3480156102d957600080fd5b506102e2610a40565b6040516102a29190612162565b3480156102fb57600080fd5b5061030f61030a36600461218a565b610ad2565b60405190151581526020016102a2565b34801561032b57600080fd5b5060195461033f906001600160a01b031681565b6040516001600160a01b0390911681526020016102a2565b34801561036357600080fd5b5061029860085481565b34801561037957600080fd5b50600654610298565b34801561038e57600080fd5b50610298600b5481565b3480156103a457600080fd5b5061030f6103b33660046121b6565b610b3f565b3480156103c457600080fd5b50610298610c4f565b3480156103d957600080fd5b50610298610c80565b3480156103ee57600080fd5b5061029860095481565b34801561040457600080fd5b5061030f6104133660046121f7565b6000546001600160a01b0391821691161490565b34801561043357600080fd5b50604051600981526020016102a2565b34801561044f57600080fd5b5060145461033f906001600160a01b031681565b34801561046f57600080fd5b506102cb610c92565b34801561048457600080fd5b5061029860065481565b34801561049a57600080fd5b50610298600f5481565b3480156104b057600080fd5b5061030f6104bf3660046121f7565b610d15565b3480156104d057600080fd5b5060185461033f906001600160a01b031681565b3480156104f057600080fd5b506102cb6104ff366004612214565b610d23565b34801561051057600080fd5b506102cb61051f3660046122d0565b610e09565b34801561053057600080fd5b5060155461033f906001600160a01b031681565b34801561055057600080fd5b5061029861055f3660046121f7565b6001600160a01b031660009081526010602052604090205490565b34801561058657600080fd5b506102cb610595366004612334565b610e51565b3480156105a657600080fd5b5061029860075481565b3480156105bc57600080fd5b506000546001600160a01b031661033f565b3480156105da57600080fd5b506102cb6105e9366004612372565b610ea6565b3480156105fa57600080fd5b506102e2610ffd565b34801561060f57600080fd5b5060135461033f906001600160a01b031681565b34801561062f57600080fd5b5061030f61063e36600461218a565b61100c565b34801561064f57600080fd5b5061029861103e565b34801561066457600080fd5b506102cb6106733660046121f7565b611056565b34801561068457600080fd5b5061068d6110a7565b6040516102a29291906123a0565b3480156106a757600080fd5b5060165461033f906001600160a01b031681565b3480156106c757600080fd5b5060175461033f906001600160a01b031681565b3480156106e757600080fd5b50610298600c5481565b3480156106fd57600080fd5b5061029861070c366004612372565b6001600160a01b03918216600090815260116020908152604080832093909416825291909152205490565b34801561074357600080fd5b50610298600e5481565b34801561075957600080fd5b506102cb610768366004612214565b6111ce565b34801561077957600080fd5b506102cb6107883660046121f7565b611324565b34801561079957600080fd5b506102cb6107a83660046121f7565b61136f565b3480156107b957600080fd5b50601a5461033f906001600160a01b031681565b3480156107d957600080fd5b50610298600a5481565b3480156107ef57600080fd5b5061030f6107fe3660046121f7565b6001600160a01b031660009081526001602052604090205460ff1690565b3360009081526001602052604090205460ff166108545760405162461bcd60e51b815260040161084b906123c5565b60405180910390fd5b601a54600160a01b900460ff161561087e5760405162461bcd60e51b815260040161084b906123ea565b601a54600160a81b900460ff166108a75760405162461bcd60e51b815260040161084b90612421565b306000908152601060205260409020546009546014036108d55780156108cf576108cf611405565b60046009555b600a879055600e839055600c859055600b869055600f829055600d849055601a54600160b01b900460ff1661090c576101f461090f565b60645b61ffff1661091b610c4f565b1115610991576040805162461bcd60e51b81526020600482015260248101919091527f427579207461782063616e27742062652067726561746572207468616e20313060448201527f2520696620626f72726f776564206c7020616e6420353025206966206e6f742e606482015260840161084b565b601a54600160b01b900460ff166109aa576101f46109ad565b60645b61ffff166109b961103e565b1115610a375760405162461bcd60e51b815260206004820152604160248201527f53656c6c207461782063616e27742062652067726561746572207468616e203160448201527f302520696620626f72726f776564206c7020616e6420353025206966206e6f746064820152601760f91b608482015260a40161084b565b50505050505050565b606060028054610a4f90612458565b80601f0160208091040260200160405190810160405280929190818152602001828054610a7b90612458565b8015610ac85780601f10610a9d57610100808354040283529160200191610ac8565b820191906000526020600020905b815481529060010190602001808311610aab57829003601f168201915b5050505050905090565b3360008181526011602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610b2d9086815260200190565b60405180910390a35060015b92915050565b60006001600160a01b038416610b675760405162461bcd60e51b815260040161084b90612492565b6001600160a01b038316610b8d5760405162461bcd60e51b815260040161084b906124d7565b6006546001600160a01b038516600090815260116020908152604080832033845290915290205414610c3a576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152601182528381203382529091529190912054610c159184906118d3565b6001600160a01b03851660009081526011602090815260408083203384529091529020555b610c4584848461190d565b90505b9392505050565b6000600954600a54600c54600e54610c679190612530565b610c719190612530565b610c7b9190612530565b905090565b6000610c8a610c4f565b610c7161103e565b6000546001600160a01b03163314610cbc5760405162461bcd60e51b815260040161084b90612543565b601a54600160a01b900460ff1615610ce65760405162461bcd60e51b815260040161084b906123ea565b60405133904780156108fc02916000818181858888f19350505050158015610d12573d6000803e3d6000fd5b50565b6000610b3982600654610ad2565b3360009081526001602052604090205460ff16610d525760405162461bcd60e51b815260040161084b906123c5565b601a54600160a01b900460ff1615610d7c5760405162461bcd60e51b815260040161084b906123ea565b6103e881600654610d8d9190612563565b610d97919061257a565b600755600654610daa906101f49061257a565b6007541015610d125760405162461bcd60e51b815260206004820152602560248201527f4d61782057616c6c6574206d7573742062652067726561746572207468616e20604482015264181719129760d91b606482015260840161084b565b6000546001600160a01b03163314610e335760405162461bcd60e51b815260040161084b90612543565b6004610e3f83826125ea565b506005610e4c82826125ea565b505050565b6000546001600160a01b03163314610e7b5760405162461bcd60e51b815260040161084b90612543565b6001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610ed05760405162461bcd60e51b815260040161084b90612543565b601a54600160a01b900460ff1615610efa5760405162461bcd60e51b815260040161084b906123ea565b601a54600160a81b900460ff16610f235760405162461bcd60e51b815260040161084b90612421565b6001600160a01b03821615610f4e57601680546001600160a01b0319166001600160a01b0384161790555b6001600160a01b03811615610f7957601580546001600160a01b0319166001600160a01b0383161790555b6015546001600160a01b031615801590610f9d57506016546001600160a01b031615155b610ff95760405162461bcd60e51b815260206004820152602760248201527f52656369657665722077616c6c6574732063616e2774206265205a65726f206160448201526632323932b9b99760c91b606482015260840161084b565b5050565b606060038054610a4f90612458565b60008054336001600160a01b03909116036110335761102c338484611b3c565b9050610b39565b61102c33848461190d565b6000600954600b54600d54600f54610c679190612530565b6000546001600160a01b031633146110805760405162461bcd60e51b815260040161084b90612543565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b606080600460058180546110ba90612458565b80601f01602080910402602001604051908101604052809291908181526020018280546110e690612458565b80156111335780601f1061110857610100808354040283529160200191611133565b820191906000526020600020905b81548152906001019060200180831161111657829003601f168201915b5050505050915080805461114690612458565b80601f016020809104026020016040519081016040528092919081815260200182805461117290612458565b80156111bf5780601f10611194576101008083540402835291602001916111bf565b820191906000526020600020905b8154815290600101906020018083116111a257829003601f168201915b50505050509050915091509091565b3360009081526001602052604090205460ff166111fd5760405162461bcd60e51b815260040161084b906123c5565b601a54600160a01b900460ff16156112275760405162461bcd60e51b815260040161084b906123ea565b601a54600160a81b900460ff166112505760405162461bcd60e51b815260040161084b90612421565b6103e8816006546112619190612563565b61126b919061257a565b60085560065461127d9060149061257a565b6008541115801561129f57506101f4600654611299919061257a565b60085410155b610d125760405162461bcd60e51b815260206004820152604a60248201527f53776170205468726573686f6c64206d757374206265206c657373207468616e60448201527f203525206f6620746f74616c20737570706c792c206f722067726561746572206064820152693a3430b710181719129760b11b608482015260a40161084b565b6000546001600160a01b0316331461134e5760405162461bcd60e51b815260040161084b90612543565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000546001600160a01b031633146113995760405162461bcd60e51b815260040161084b90612543565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b601a805460ff60a01b1916600160a01b17905530600090815260106020526040812054600f54600e54919291829161143c91612530565b11611448576000611478565b6114786002611472611458610c80565b611472600f54600e5461146b9190612530565b8790611c22565b90611ca4565b905060006114868383611ce6565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106114c0576114c06126aa565b6001600160a01b0392831660209182029290920101526019548251911690829060019081106114f1576114f16126aa565b6001600160a01b039283166020918202929092010152601a5460405163791ac94760e01b81524792919091169063791ac9479061153b9086906000908790309042906004016126c0565b600060405180830381600087803b15801561155557600080fd5b505af1158015611569573d6000803e3d6000fd5b505050506000806115838347611ce690919063ffffffff16565b9050600080600f54600e546115989190612530565b116115aa576115a5610c80565b6115d0565b6115d06115c26002600f54600e546114729190612530565b6115ca610c80565b90611ce6565b905060006115f7600261147284611472600f54600e546115f09190612530565b8890611c22565b90506000600d54600c5461160b9190612530565b111561168c57600061162a83611472600d54600c5461146b9190612530565b6015546040519192506001600160a01b031690620186a09083906000818181858888f193505050503d806000811461167e576040519150601f19603f3d011682016040523d82523d6000602084013e611683565b606091505b50600096505050505b6000600b54600a5461169e9190612530565b111561171f5760006116bd83611472600b54600a5461146b9190612530565b6016546040519192506001600160a01b031690620186a09083906000818181858888f193505050503d8060008114611711576040519150601f19603f3d011682016040523d82523d6000602084013e611716565b606091505b50600096505050505b871561182a57601a54600090600160b01b900460ff1661174a576016546001600160a01b0316611757565b6018546001600160a01b03165b601a5460405163f305d71960e01b8152306004820152602481018c905260006044820181905260648201526001600160a01b0380841660848301524260a483015292935091169063f305d71990849060c40160606040518083038185885af11580156117c7573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906117ec9190612731565b505060408051848152602081018c90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a1505b60006118498361147261146b6002600954611c2290919063ffffffff16565b90506000601760009054906101000a90046001600160a01b03169050806001600160a01b031663289fe2d5836040518263ffffffff1660e01b81526004016000604051808303818588803b1580156118a057600080fd5b505af11580156118b4573d6000803e3d6000fd5b5050601a805460ff60a01b191690555050505050505050505050505050565b600081848411156118f75760405162461bcd60e51b815260040161084b9190612162565b506000611904848661275f565b95945050505050565b60006001600160a01b0384166119355760405162461bcd60e51b815260040161084b90612492565b6001600160a01b03831661195b5760405162461bcd60e51b815260040161084b906124d7565b6001600160a01b03841660009081526001602052604090205460ff168061199a57506001600160a01b03831660009081526001602052604090205460ff165b156119b1576119aa848484611b3c565b9050610c48565b601a54600160a01b900460ff16156119ce576119aa848484611b3c565b6119d9848484611d28565b6119e283611eb8565b156119ef576119ef611405565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038716600090815260109091529190912054611a419184906118d3565b6001600160a01b038516600090815260106020526040812091909155601a54600160a81b900460ff168015611a9a57506013546001600160a01b0385811691161480611a9a57506013546001600160a01b038681169116145b611aa45782611aaf565b611aaf858585611f19565b6001600160a01b038516600090815260106020526040902054909150611ad5908261204c565b6001600160a01b0380861660008181526010602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611b299085815260200190565b60405180910390a3506001949350505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152601090915291822054611b8d9184906118d3565b6001600160a01b038086166000908152601060205260408082209390935590851681522054611bbc908361204c565b6001600160a01b0380851660008181526010602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611c109086815260200190565b60405180910390a35060019392505050565b600082600003611c3457506000610b39565b6000611c408385612563565b905082611c4d858361257a565b14610c485760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161084b565b6000610c4883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506120ab565b6000610c4883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506118d3565b6001600160a01b03831660009081526001602052604090205460ff16158015611d6a57506001600160a01b03821660009081526001602052604090205460ff16155b8015611d7f57506001600160a01b0382163014155b8015611d9457506001600160a01b0383163014155b8015611dab575061dead6001600160a01b03831614155b8015611dc557506013546001600160a01b03838116911614155b8015611ddf57506016546001600160a01b03838116911614155b8015611df957506015546001600160a01b03838116911614155b8015611e1357506018546001600160a01b03838116911614155b15610e4c576001600160a01b038216600090815260106020526040902054600754611e3e8383612530565b1115611eb25760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000606482015260840161084b565b50505050565b6013546000906001600160a01b038381169116148015611ee15750601a54600160a81b900460ff165b8015611ef75750601a54600160a01b900460ff16155b8015610b39575060085430600090815260106020526040902054101592915050565b6001600160a01b03831660009081526012602052604081205460ff1680611f5857506001600160a01b03831660009081526012602052604090205460ff165b15611f64575080610c48565b6018546001600160a01b0390811690841603611f81575080610c48565b6013546000906001600160a01b03858116911614611fa657611fa1610c4f565b611fae565b611fae61103e565b90506000611fc26103e86114728685611c22565b30600090815260106020526040902054909150611fdf908261204c565b30600081815260106020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906120309085815260200190565b60405180910390a36120428482611ce6565b9695505050505050565b6000806120598385612530565b905083811015610c485760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161084b565b600081836120cc5760405162461bcd60e51b815260040161084b9190612162565b506000611904848661257a565b60008060008060008060c087890312156120f257600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b6000815180845260005b8181101561214257602081850181015186830182015201612126565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610c48602083018461211c565b6001600160a01b0381168114610d1257600080fd5b6000806040838503121561219d57600080fd5b82356121a881612175565b946020939093013593505050565b6000806000606084860312156121cb57600080fd5b83356121d681612175565b925060208401356121e681612175565b929592945050506040919091013590565b60006020828403121561220957600080fd5b8135610c4881612175565b60006020828403121561222657600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261225457600080fd5b813567ffffffffffffffff8082111561226f5761226f61222d565b604051601f8301601f19908116603f011681019082821181831017156122975761229761222d565b816040528381528660208588010111156122b057600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080604083850312156122e357600080fd5b823567ffffffffffffffff808211156122fb57600080fd5b61230786838701612243565b9350602085013591508082111561231d57600080fd5b5061232a85828601612243565b9150509250929050565b6000806040838503121561234757600080fd5b823561235281612175565b91506020830135801515811461236757600080fd5b809150509250929050565b6000806040838503121561238557600080fd5b823561239081612175565b9150602083013561236781612175565b6040815260006123b3604083018561211c565b8281036020840152611904818561211c565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b60208082526018908201527f43616e6e6f742063616c6c207768656e20696e20737761700000000000000000604082015260600190565b60208082526018908201527f5468697320746f6b656e20686173206e6f2074617865732e0000000000000000604082015260600190565b600181811c9082168061246c57607f821691505b60208210810361248c57634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b80820180821115610b3957610b3961251a565b60208082526006908201526510a7aba722a960d11b604082015260600190565b8082028115828204841417610b3957610b3961251a565b60008261259757634e487b7160e01b600052601260045260246000fd5b500490565b601f821115610e4c57600081815260208120601f850160051c810160208610156125c35750805b601f850160051c820191505b818110156125e2578281556001016125cf565b505050505050565b815167ffffffffffffffff8111156126045761260461222d565b612618816126128454612458565b8461259c565b602080601f83116001811461264d57600084156126355750858301515b600019600386901b1c1916600185901b1785556125e2565b600085815260208120601f198616915b8281101561267c5788860151825594840194600190910190840161265d565b508582101561269a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156127105784516001600160a01b0316835293830193918301916001016126eb565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561274657600080fd5b8351925060208401519150604084015190509250925092565b81810381811115610b3957610b3961251a56fea264697066735822122033e8256aa51018d935f9a476f0bb76644ce1259a9c3827dec8d35c0b4148d36564736f6c634300081500330000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000000000000000002800000000000000000000000001ff1e20052a9e4bc180305a773474eded0c5844e0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000036162630000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000364656600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003676869000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036a6b6c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000d6265ed5fd18904e7d8043d987dfd64f4a7d3851000000000000000000000000d6265ed5fd18904e7d8043d987dfd64f4a7d3851000000000000000000000000000000000000000000000000000000000000000b00000000000000000000000000000000000000000000000000000000000f424000000000000000000000000000000000000000000000000000000000000003e8000000000000000000000000000000000000000000000000000000000000003200000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x6080604052600436106102765760003560e01c80636af659291161014f578063bc7a2898116100c1578063e5f2758f1161007a578063e5f2758f1461074d578063f0b37c041461076d578063f2fde38b1461078d578063f887ea40146107ad578063fb4aa585146107cd578063fe9fbb80146107e357600080fd5b8063bc7a289814610678578063caac79341461069b578063d9d9666c146106bb578063dd03bf86146106db578063dd62ed3e146106f1578063e42029541461073757600080fd5b806390107afe1161011357806390107afe146105ce57806395d89b41146105ee578063a8aa1b3114610603578063a9059cbb14610623578063b0bc85de14610643578063b6a5d7de1461065857600080fd5b80636af659291461052457806370a0823114610544578063751fd1791461057a57806378109e541461059a578063893d20e8146105b057600080fd5b80632d2fe717116101e85780633eaaf86b116101ac5780633eaaf86b1461047857806343e672701461048e578063571ac8b0146104a45780635b64c5a9146104c45780635d0044ca146104e457806360959b561461050457600080fd5b80632d2fe717146103e25780632f54bf6e146103f8578063313ce567146104275780633268cc5614610443578063364333f41461046357600080fd5b80630e5a92311161023a5780630e5a92311461035757806318160ddd1461036d5780631f1b845b1461038257806323b872dd14610398578063252d723a146103b8578063276ef2d5146103cd57600080fd5b8063010cf5591461028257806304d4c990146102ab57806306fdde03146102cd578063095ea7b3146102ef5780630af88b241461031f57600080fd5b3661027d57005b600080fd5b34801561028e57600080fd5b50610298600d5481565b6040519081526020015b60405180910390f35b3480156102b757600080fd5b506102cb6102c63660046120d9565b61081c565b005b3480156102d957600080fd5b506102e2610a40565b6040516102a29190612162565b3480156102fb57600080fd5b5061030f61030a36600461218a565b610ad2565b60405190151581526020016102a2565b34801561032b57600080fd5b5060195461033f906001600160a01b031681565b6040516001600160a01b0390911681526020016102a2565b34801561036357600080fd5b5061029860085481565b34801561037957600080fd5b50600654610298565b34801561038e57600080fd5b50610298600b5481565b3480156103a457600080fd5b5061030f6103b33660046121b6565b610b3f565b3480156103c457600080fd5b50610298610c4f565b3480156103d957600080fd5b50610298610c80565b3480156103ee57600080fd5b5061029860095481565b34801561040457600080fd5b5061030f6104133660046121f7565b6000546001600160a01b0391821691161490565b34801561043357600080fd5b50604051600981526020016102a2565b34801561044f57600080fd5b5060145461033f906001600160a01b031681565b34801561046f57600080fd5b506102cb610c92565b34801561048457600080fd5b5061029860065481565b34801561049a57600080fd5b50610298600f5481565b3480156104b057600080fd5b5061030f6104bf3660046121f7565b610d15565b3480156104d057600080fd5b5060185461033f906001600160a01b031681565b3480156104f057600080fd5b506102cb6104ff366004612214565b610d23565b34801561051057600080fd5b506102cb61051f3660046122d0565b610e09565b34801561053057600080fd5b5060155461033f906001600160a01b031681565b34801561055057600080fd5b5061029861055f3660046121f7565b6001600160a01b031660009081526010602052604090205490565b34801561058657600080fd5b506102cb610595366004612334565b610e51565b3480156105a657600080fd5b5061029860075481565b3480156105bc57600080fd5b506000546001600160a01b031661033f565b3480156105da57600080fd5b506102cb6105e9366004612372565b610ea6565b3480156105fa57600080fd5b506102e2610ffd565b34801561060f57600080fd5b5060135461033f906001600160a01b031681565b34801561062f57600080fd5b5061030f61063e36600461218a565b61100c565b34801561064f57600080fd5b5061029861103e565b34801561066457600080fd5b506102cb6106733660046121f7565b611056565b34801561068457600080fd5b5061068d6110a7565b6040516102a29291906123a0565b3480156106a757600080fd5b5060165461033f906001600160a01b031681565b3480156106c757600080fd5b5060175461033f906001600160a01b031681565b3480156106e757600080fd5b50610298600c5481565b3480156106fd57600080fd5b5061029861070c366004612372565b6001600160a01b03918216600090815260116020908152604080832093909416825291909152205490565b34801561074357600080fd5b50610298600e5481565b34801561075957600080fd5b506102cb610768366004612214565b6111ce565b34801561077957600080fd5b506102cb6107883660046121f7565b611324565b34801561079957600080fd5b506102cb6107a83660046121f7565b61136f565b3480156107b957600080fd5b50601a5461033f906001600160a01b031681565b3480156107d957600080fd5b50610298600a5481565b3480156107ef57600080fd5b5061030f6107fe3660046121f7565b6001600160a01b031660009081526001602052604090205460ff1690565b3360009081526001602052604090205460ff166108545760405162461bcd60e51b815260040161084b906123c5565b60405180910390fd5b601a54600160a01b900460ff161561087e5760405162461bcd60e51b815260040161084b906123ea565b601a54600160a81b900460ff166108a75760405162461bcd60e51b815260040161084b90612421565b306000908152601060205260409020546009546014036108d55780156108cf576108cf611405565b60046009555b600a879055600e839055600c859055600b869055600f829055600d849055601a54600160b01b900460ff1661090c576101f461090f565b60645b61ffff1661091b610c4f565b1115610991576040805162461bcd60e51b81526020600482015260248101919091527f427579207461782063616e27742062652067726561746572207468616e20313060448201527f2520696620626f72726f776564206c7020616e6420353025206966206e6f742e606482015260840161084b565b601a54600160b01b900460ff166109aa576101f46109ad565b60645b61ffff166109b961103e565b1115610a375760405162461bcd60e51b815260206004820152604160248201527f53656c6c207461782063616e27742062652067726561746572207468616e203160448201527f302520696620626f72726f776564206c7020616e6420353025206966206e6f746064820152601760f91b608482015260a40161084b565b50505050505050565b606060028054610a4f90612458565b80601f0160208091040260200160405190810160405280929190818152602001828054610a7b90612458565b8015610ac85780601f10610a9d57610100808354040283529160200191610ac8565b820191906000526020600020905b815481529060010190602001808311610aab57829003601f168201915b5050505050905090565b3360008181526011602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610b2d9086815260200190565b60405180910390a35060015b92915050565b60006001600160a01b038416610b675760405162461bcd60e51b815260040161084b90612492565b6001600160a01b038316610b8d5760405162461bcd60e51b815260040161084b906124d7565b6006546001600160a01b038516600090815260116020908152604080832033845290915290205414610c3a576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152601182528381203382529091529190912054610c159184906118d3565b6001600160a01b03851660009081526011602090815260408083203384529091529020555b610c4584848461190d565b90505b9392505050565b6000600954600a54600c54600e54610c679190612530565b610c719190612530565b610c7b9190612530565b905090565b6000610c8a610c4f565b610c7161103e565b6000546001600160a01b03163314610cbc5760405162461bcd60e51b815260040161084b90612543565b601a54600160a01b900460ff1615610ce65760405162461bcd60e51b815260040161084b906123ea565b60405133904780156108fc02916000818181858888f19350505050158015610d12573d6000803e3d6000fd5b50565b6000610b3982600654610ad2565b3360009081526001602052604090205460ff16610d525760405162461bcd60e51b815260040161084b906123c5565b601a54600160a01b900460ff1615610d7c5760405162461bcd60e51b815260040161084b906123ea565b6103e881600654610d8d9190612563565b610d97919061257a565b600755600654610daa906101f49061257a565b6007541015610d125760405162461bcd60e51b815260206004820152602560248201527f4d61782057616c6c6574206d7573742062652067726561746572207468616e20604482015264181719129760d91b606482015260840161084b565b6000546001600160a01b03163314610e335760405162461bcd60e51b815260040161084b90612543565b6004610e3f83826125ea565b506005610e4c82826125ea565b505050565b6000546001600160a01b03163314610e7b5760405162461bcd60e51b815260040161084b90612543565b6001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610ed05760405162461bcd60e51b815260040161084b90612543565b601a54600160a01b900460ff1615610efa5760405162461bcd60e51b815260040161084b906123ea565b601a54600160a81b900460ff16610f235760405162461bcd60e51b815260040161084b90612421565b6001600160a01b03821615610f4e57601680546001600160a01b0319166001600160a01b0384161790555b6001600160a01b03811615610f7957601580546001600160a01b0319166001600160a01b0383161790555b6015546001600160a01b031615801590610f9d57506016546001600160a01b031615155b610ff95760405162461bcd60e51b815260206004820152602760248201527f52656369657665722077616c6c6574732063616e2774206265205a65726f206160448201526632323932b9b99760c91b606482015260840161084b565b5050565b606060038054610a4f90612458565b60008054336001600160a01b03909116036110335761102c338484611b3c565b9050610b39565b61102c33848461190d565b6000600954600b54600d54600f54610c679190612530565b6000546001600160a01b031633146110805760405162461bcd60e51b815260040161084b90612543565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b606080600460058180546110ba90612458565b80601f01602080910402602001604051908101604052809291908181526020018280546110e690612458565b80156111335780601f1061110857610100808354040283529160200191611133565b820191906000526020600020905b81548152906001019060200180831161111657829003601f168201915b5050505050915080805461114690612458565b80601f016020809104026020016040519081016040528092919081815260200182805461117290612458565b80156111bf5780601f10611194576101008083540402835291602001916111bf565b820191906000526020600020905b8154815290600101906020018083116111a257829003601f168201915b50505050509050915091509091565b3360009081526001602052604090205460ff166111fd5760405162461bcd60e51b815260040161084b906123c5565b601a54600160a01b900460ff16156112275760405162461bcd60e51b815260040161084b906123ea565b601a54600160a81b900460ff166112505760405162461bcd60e51b815260040161084b90612421565b6103e8816006546112619190612563565b61126b919061257a565b60085560065461127d9060149061257a565b6008541115801561129f57506101f4600654611299919061257a565b60085410155b610d125760405162461bcd60e51b815260206004820152604a60248201527f53776170205468726573686f6c64206d757374206265206c657373207468616e60448201527f203525206f6620746f74616c20737570706c792c206f722067726561746572206064820152693a3430b710181719129760b11b608482015260a40161084b565b6000546001600160a01b0316331461134e5760405162461bcd60e51b815260040161084b90612543565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000546001600160a01b031633146113995760405162461bcd60e51b815260040161084b90612543565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b601a805460ff60a01b1916600160a01b17905530600090815260106020526040812054600f54600e54919291829161143c91612530565b11611448576000611478565b6114786002611472611458610c80565b611472600f54600e5461146b9190612530565b8790611c22565b90611ca4565b905060006114868383611ce6565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106114c0576114c06126aa565b6001600160a01b0392831660209182029290920101526019548251911690829060019081106114f1576114f16126aa565b6001600160a01b039283166020918202929092010152601a5460405163791ac94760e01b81524792919091169063791ac9479061153b9086906000908790309042906004016126c0565b600060405180830381600087803b15801561155557600080fd5b505af1158015611569573d6000803e3d6000fd5b505050506000806115838347611ce690919063ffffffff16565b9050600080600f54600e546115989190612530565b116115aa576115a5610c80565b6115d0565b6115d06115c26002600f54600e546114729190612530565b6115ca610c80565b90611ce6565b905060006115f7600261147284611472600f54600e546115f09190612530565b8890611c22565b90506000600d54600c5461160b9190612530565b111561168c57600061162a83611472600d54600c5461146b9190612530565b6015546040519192506001600160a01b031690620186a09083906000818181858888f193505050503d806000811461167e576040519150601f19603f3d011682016040523d82523d6000602084013e611683565b606091505b50600096505050505b6000600b54600a5461169e9190612530565b111561171f5760006116bd83611472600b54600a5461146b9190612530565b6016546040519192506001600160a01b031690620186a09083906000818181858888f193505050503d8060008114611711576040519150601f19603f3d011682016040523d82523d6000602084013e611716565b606091505b50600096505050505b871561182a57601a54600090600160b01b900460ff1661174a576016546001600160a01b0316611757565b6018546001600160a01b03165b601a5460405163f305d71960e01b8152306004820152602481018c905260006044820181905260648201526001600160a01b0380841660848301524260a483015292935091169063f305d71990849060c40160606040518083038185885af11580156117c7573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906117ec9190612731565b505060408051848152602081018c90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a1505b60006118498361147261146b6002600954611c2290919063ffffffff16565b90506000601760009054906101000a90046001600160a01b03169050806001600160a01b031663289fe2d5836040518263ffffffff1660e01b81526004016000604051808303818588803b1580156118a057600080fd5b505af11580156118b4573d6000803e3d6000fd5b5050601a805460ff60a01b191690555050505050505050505050505050565b600081848411156118f75760405162461bcd60e51b815260040161084b9190612162565b506000611904848661275f565b95945050505050565b60006001600160a01b0384166119355760405162461bcd60e51b815260040161084b90612492565b6001600160a01b03831661195b5760405162461bcd60e51b815260040161084b906124d7565b6001600160a01b03841660009081526001602052604090205460ff168061199a57506001600160a01b03831660009081526001602052604090205460ff165b156119b1576119aa848484611b3c565b9050610c48565b601a54600160a01b900460ff16156119ce576119aa848484611b3c565b6119d9848484611d28565b6119e283611eb8565b156119ef576119ef611405565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038716600090815260109091529190912054611a419184906118d3565b6001600160a01b038516600090815260106020526040812091909155601a54600160a81b900460ff168015611a9a57506013546001600160a01b0385811691161480611a9a57506013546001600160a01b038681169116145b611aa45782611aaf565b611aaf858585611f19565b6001600160a01b038516600090815260106020526040902054909150611ad5908261204c565b6001600160a01b0380861660008181526010602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611b299085815260200190565b60405180910390a3506001949350505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152601090915291822054611b8d9184906118d3565b6001600160a01b038086166000908152601060205260408082209390935590851681522054611bbc908361204c565b6001600160a01b0380851660008181526010602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611c109086815260200190565b60405180910390a35060019392505050565b600082600003611c3457506000610b39565b6000611c408385612563565b905082611c4d858361257a565b14610c485760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161084b565b6000610c4883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506120ab565b6000610c4883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506118d3565b6001600160a01b03831660009081526001602052604090205460ff16158015611d6a57506001600160a01b03821660009081526001602052604090205460ff16155b8015611d7f57506001600160a01b0382163014155b8015611d9457506001600160a01b0383163014155b8015611dab575061dead6001600160a01b03831614155b8015611dc557506013546001600160a01b03838116911614155b8015611ddf57506016546001600160a01b03838116911614155b8015611df957506015546001600160a01b03838116911614155b8015611e1357506018546001600160a01b03838116911614155b15610e4c576001600160a01b038216600090815260106020526040902054600754611e3e8383612530565b1115611eb25760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000606482015260840161084b565b50505050565b6013546000906001600160a01b038381169116148015611ee15750601a54600160a81b900460ff165b8015611ef75750601a54600160a01b900460ff16155b8015610b39575060085430600090815260106020526040902054101592915050565b6001600160a01b03831660009081526012602052604081205460ff1680611f5857506001600160a01b03831660009081526012602052604090205460ff165b15611f64575080610c48565b6018546001600160a01b0390811690841603611f81575080610c48565b6013546000906001600160a01b03858116911614611fa657611fa1610c4f565b611fae565b611fae61103e565b90506000611fc26103e86114728685611c22565b30600090815260106020526040902054909150611fdf908261204c565b30600081815260106020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906120309085815260200190565b60405180910390a36120428482611ce6565b9695505050505050565b6000806120598385612530565b905083811015610c485760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161084b565b600081836120cc5760405162461bcd60e51b815260040161084b9190612162565b506000611904848661257a565b60008060008060008060c087890312156120f257600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b6000815180845260005b8181101561214257602081850181015186830182015201612126565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610c48602083018461211c565b6001600160a01b0381168114610d1257600080fd5b6000806040838503121561219d57600080fd5b82356121a881612175565b946020939093013593505050565b6000806000606084860312156121cb57600080fd5b83356121d681612175565b925060208401356121e681612175565b929592945050506040919091013590565b60006020828403121561220957600080fd5b8135610c4881612175565b60006020828403121561222657600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261225457600080fd5b813567ffffffffffffffff8082111561226f5761226f61222d565b604051601f8301601f19908116603f011681019082821181831017156122975761229761222d565b816040528381528660208588010111156122b057600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080604083850312156122e357600080fd5b823567ffffffffffffffff808211156122fb57600080fd5b61230786838701612243565b9350602085013591508082111561231d57600080fd5b5061232a85828601612243565b9150509250929050565b6000806040838503121561234757600080fd5b823561235281612175565b91506020830135801515811461236757600080fd5b809150509250929050565b6000806040838503121561238557600080fd5b823561239081612175565b9150602083013561236781612175565b6040815260006123b3604083018561211c565b8281036020840152611904818561211c565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b60208082526018908201527f43616e6e6f742063616c6c207768656e20696e20737761700000000000000000604082015260600190565b60208082526018908201527f5468697320746f6b656e20686173206e6f2074617865732e0000000000000000604082015260600190565b600181811c9082168061246c57607f821691505b60208210810361248c57634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b80820180821115610b3957610b3961251a565b60208082526006908201526510a7aba722a960d11b604082015260600190565b8082028115828204841417610b3957610b3961251a565b60008261259757634e487b7160e01b600052601260045260246000fd5b500490565b601f821115610e4c57600081815260208120601f850160051c810160208610156125c35750805b601f850160051c820191505b818110156125e2578281556001016125cf565b505050505050565b815167ffffffffffffffff8111156126045761260461222d565b612618816126128454612458565b8461259c565b602080601f83116001811461264d57600084156126355750858301515b600019600386901b1c1916600185901b1785556125e2565b600085815260208120601f198616915b8281101561267c5788860151825594840194600190910190840161265d565b508582101561269a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156127105784516001600160a01b0316835293830193918301916001016126eb565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561274657600080fd5b8351925060208401519150604084015190509250925092565b81810381811115610b3957610b3961251a56fea264697066735822122033e8256aa51018d935f9a476f0bb76644ce1259a9c3827dec8d35c0b4148d36564736f6c63430008150033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000000000000000002800000000000000000000000001ff1e20052a9e4bc180305a773474eded0c5844e0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000036162630000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000364656600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003676869000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036a6b6c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000d6265ed5fd18904e7d8043d987dfd64f4a7d3851000000000000000000000000d6265ed5fd18904e7d8043d987dfd64f4a7d3851000000000000000000000000000000000000000000000000000000000000000b00000000000000000000000000000000000000000000000000000000000f424000000000000000000000000000000000000000000000000000000000000003e8000000000000000000000000000000000000000000000000000000000000003200000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _stringData (string[]): abc,def,ghi,jkl
Arg [1] : _addressData (address[]): 0xd6265Ed5FD18904e7d8043D987dfd64f4A7d3851,0xd6265Ed5FD18904e7d8043D987dfd64f4A7d3851
Arg [2] : _intData (uint256[]): 1000000,1000,50,80,80,0,0,0,0,0,0
Arg [3] : rewardsAddress (address): 0x1fF1e20052A9e4bC180305a773474eDed0c5844e
-----Encoded View---------------
32 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000220
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000280
Arg [3] : 0000000000000000000000001ff1e20052a9e4bc180305a773474eded0c5844e
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [6] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000140
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [10] : 6162630000000000000000000000000000000000000000000000000000000000
Arg [11] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [12] : 6465660000000000000000000000000000000000000000000000000000000000
Arg [13] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [14] : 6768690000000000000000000000000000000000000000000000000000000000
Arg [15] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [16] : 6a6b6c0000000000000000000000000000000000000000000000000000000000
Arg [17] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [18] : 000000000000000000000000d6265ed5fd18904e7d8043d987dfd64f4a7d3851
Arg [19] : 000000000000000000000000d6265ed5fd18904e7d8043d987dfd64f4a7d3851
Arg [20] : 000000000000000000000000000000000000000000000000000000000000000b
Arg [21] : 00000000000000000000000000000000000000000000000000000000000f4240
Arg [22] : 00000000000000000000000000000000000000000000000000000000000003e8
Arg [23] : 0000000000000000000000000000000000000000000000000000000000000032
Arg [24] : 0000000000000000000000000000000000000000000000000000000000000050
Arg [25] : 0000000000000000000000000000000000000000000000000000000000000050
Arg [26] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [27] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [28] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [29] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [30] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [31] : 0000000000000000000000000000000000000000000000000000000000000000
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
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.