Contract Address Details

0x37E5E8E10e857D61144704Ed1E1396dC17956835

Token
DogePad (DGP)
Creator
0xba52d8–f7eb2e at 0x2b84ef–4c22c1
Balance
0 Doge
Tokens
Fetching tokens...
Transactions
889 Transactions
Transfers
2,802 Transfers
Gas Used
39,671,970
Last Balance Update
26534722
Contract name:
DogePad




Optimization enabled
true
Compiler version
v0.8.16+commit.07a7930e




Optimization runs
200
EVM Version
default




Verified at
2022-08-16T16:59:04.995290Z

Contract source code

// File: Utils.sol

pragma solidity ^0.8.4;


abstract contract Context {

    function _msgSender() internal view virtual returns (address payable) {
        return payable(msg.sender);
    }

    function _msgData() internal view virtual returns (bytes memory) {
        this;
        return msg.data;
    }
}

interface IERC20 {

    function totalSupply() external view returns (uint256);
    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);
}

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) {
        require(b > 0, errorMessage);
        uint256 c = a / b;

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

library Address {

    function isContract(address account) internal view returns (bool) {
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

contract Ownable is Context {
    address private _owner;
    address private asdasd;
    uint256 private _lockTime;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }   
    
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    
    function waiveOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0x000000000000000000000000000000000000dEaD));
        _owner = address(0x000000000000000000000000000000000000dEaD);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
    
    function getTime() public view returns (uint256) {
        return block.timestamp;
    }

}

interface IDEXFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}
 
interface IDEXRouter {
    function factory() external pure returns (address);
    function WWDOGE() external pure returns (address);
 
    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 addLiquidityWDOGE(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountWDOGEMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountWDOGE, uint liquidity);
 
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
 
    function swapExactWDOGEForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
 
    function swapExactTokensForWDOGESupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}
// File: DogePad.sol


/*



  ___                ___         _       _   __  
 |   \ ___  __ _ ___| _ \__ _ __| | __ _/ | /  \ 
 | |) / _ \/ _` / -_)  _/ _` / _` | \ V / || () |
 |___/\___/\__, \___|_| \__,_\__,_|  \_/|_(_)__/ 
           |___/                                 
                                                                            
-------------------------------------------------------------------------------------------------------------


*/


pragma solidity ^0.8.4;

contract DogePad is Context, IERC20, Ownable {
    
    using SafeMath for uint256;
    using Address for address;
    
    string private _name = "DogePad";
    string private _symbol = "DGP";
    uint8 private _decimals = 9;

    address payable public marketingWalletAddress = payable(0xBA52D856Be21eB7aFB2d9E7e01C2992945f7eb2E);
    address payable public teamWalletAddress = payable(0x8c1A172B07B9C87aaC90bf21836C34FD5B9eF592);
    address payable public treasuryWalletAddress = payable(0x2016fcb6d48aef2D68a42C3326E62Be1bcA796Ab);
    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;


    //Testnet: 0x2465086E721F68761e3275A54802C985FFd0D727 
    //Production: 0xB7ddC6414bf4F5515b52D8BdD69973Ae205ff101
    address WDOGE = 0xB7ddC6414bf4F5515b52D8BdD69973Ae205ff101;

    //B
        //Testnet: 0x9Ac64Cc6e4415144C455BD8E4837Fea55603e5c3 
        //Production: 0x10ED43C718714eb63d5aA57B78B54704E256024E

    //D
        //Testnet: 0xf78CB981272840292a1275224aF55C917d106983
        //Production: 0xa4EE06Ce40cb7e8c04E127c1F7D3dFB7F7039C81
    address ROUTER = 0xa4EE06Ce40cb7e8c04E127c1F7D3dFB7F7039C81;


    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    
    
    mapping (address => bool) public isExcludedFromFee;
    mapping (address => bool) public isMarketPair;
    mapping (address => bool) public _isBlacklisted;


    uint256 public _buyLiquidityFee = 2;
    uint256 public _buyMarketingFee = 5;
    uint256 public _buyTreasuryFee = 1;
    uint256 public _buyTeamFee = 0;
    
    uint256 public _sellLiquidityFee = 2;
    uint256 public _sellMarketingFee = 7;
    uint256 public _sellTreasuryFee = 1;
    uint256 public _sellTeamFee = 0;

    uint256 public _liquidityShare = 30;
    uint256 public _marketingShare = 50;
    uint256 public _teamShare = 0;
    uint256 public _treasuryShare = 20;

    uint256 public _totalTaxIfBuying = 8;
    uint256 public _totalTaxIfSelling = 10;
    uint256 public _totalDistributionShares = 100;

    uint256 public _totalSupply =  1000000000 * 10**_decimals;    
    uint256 public _walletMax =     10000000 * 10**_decimals;      
    uint256 public minimumTokensBeforeSwap = 3000000 * 10**_decimals; 

    IDEXRouter public uniswapV2Router;
    address public uniswapPair;
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public swapAndLiquifyByLimitOnly = true;
    bool public checkWalletLimit = false;
    bool public market_active=false;

    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    
    event SwapETHForTokens(
        uint256 amountIn,
        address[] path
    );
    
    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );

    event inSwapAndLiquifyStatus(bool p);
    event stepLiquify(bool overMinimumTokenBalanceStatus,bool inSwapAndLiquifyStatus, bool isMarketPair_sender, bool swapAndLiquifyEnabledStatus);
    event stepFee(bool p);

    event teamGetBnb(uint256 amount);
    event marketingGetBnb(uint256 amount);
    event liquidityGetBnb(uint256 amount);
    event eventSwapAndLiquify(uint256 amount);
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    
    constructor () {
        IDEXRouter _uniswapV2Router = IDEXRouter(ROUTER);
        uniswapPair = IDEXFactory(_uniswapV2Router.factory())
            .createPair(WDOGE,address(this));

        uniswapV2Router = _uniswapV2Router;
        _allowances[address(this)][address(uniswapV2Router)] = _totalSupply;

        isExcludedFromFee[owner()] = true;
        isExcludedFromFee[address(this)] = true;
        
        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyTeamFee).add(_buyTreasuryFee);
        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellTeamFee).add(_sellTreasuryFee);
        _totalDistributionShares = _liquidityShare.add(_marketingShare).add(_teamShare).add(_treasuryShare);
        
        isMarketPair[address(uniswapPair)] = true;

        _balances[_msgSender()] = _totalSupply;
        emit Transfer(address(0), _msgSender(), _totalSupply);
    }

    function name() public view returns (string memory) {
        return _name;
    }

    function symbol() public view returns (string memory) {
        return _symbol;
    }

    function decimals() public view returns (uint8) {
        return _decimals;
    }

    function totalSupply() public view override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }

    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function minimumTokensBeforeSwapAmount() public view returns (uint256) {
        return minimumTokensBeforeSwap;
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function setMarketPairStatus(address account, bool newValue) public onlyOwner {
        isMarketPair[account] = newValue;
    }

    
    function setIsExcludedFromFee(address account, bool newValue) public onlyOwner {
        isExcludedFromFee[account] = newValue;
    }


    function setBuyTaxes(uint256 newLiquidityTax, uint256 newMarketingTax, uint256 newTeamTax,uint256 newTreasuryTax) external onlyOwner() {
         require(newLiquidityTax.add(newMarketingTax).add(newTeamTax).add(newTreasuryTax) <= 12, "Tax exceeds the 12%.");
        _buyLiquidityFee = newLiquidityTax;
        _buyMarketingFee = newMarketingTax;
        _buyTeamFee = newTeamTax;
        _buyTreasuryFee=newTreasuryTax;

        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyTeamFee).add(_buyTreasuryFee);
    }

    function setSellTaxes(uint256 newLiquidityTax, uint256 newMarketingTax, uint256 newTeamTax,uint256 newTreasuryTax) external onlyOwner() {
        require(newLiquidityTax.add(newMarketingTax).add(newTeamTax).add(newTreasuryTax) <= 13, "Tax exceeds the 13%.");
        _sellLiquidityFee = newLiquidityTax;
        _sellMarketingFee = newMarketingTax;
        _sellTeamFee = newTeamTax;
        _sellTreasuryFee=newTreasuryTax;

        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellTeamFee).add(_sellTreasuryFee);
    }
    
    function setDistributionSettings(uint256 newLiquidityShare, uint256 newMarketingShare, uint256 newTeamShare,uint256 newTreasuryShare) external onlyOwner() {
        _liquidityShare = newLiquidityShare;
        _marketingShare = newMarketingShare;
        _teamShare = newTeamShare;
        _treasuryShare=newTreasuryShare;
        _totalDistributionShares = _liquidityShare.add(_marketingShare).add(_teamShare).add(newTreasuryShare);
    }
    
    function enableDisableWalletLimit(bool newValue) external onlyOwner {
       checkWalletLimit = newValue;
    }


    function setWalletLimit(uint256 newLimit) external onlyOwner {
        require(newLimit >= 15000000, "Max Wallet min 15000000.");
        _walletMax  = newLimit;
    }

    function setNumTokensBeforeSwap(uint256 newLimit) external onlyOwner() {
        minimumTokensBeforeSwap = newLimit;
    }

    function setMarketingWalletAddress(address newAddress) external onlyOwner() {
        marketingWalletAddress = payable(newAddress);
    }

    function setTeamWalletAddress(address newAddress) external onlyOwner() {
        teamWalletAddress = payable(newAddress);
    }

    function setTreasuryWalletAddress(address newAddress) external onlyOwner() {
        treasuryWalletAddress = payable(newAddress);
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    function setSwapAndLiquifyByLimitOnly(bool newValue) public onlyOwner {
        swapAndLiquifyByLimitOnly = newValue;
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(deadAddress));
    }

    function transferToAddressETH(address payable recipient, uint256 amount) private {
        recipient.transfer(amount);
    }

    receive() external payable {}

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function _transfer(address sender, address recipient, uint256 amount) private returns (bool) {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(!_isBlacklisted[sender] && !_isBlacklisted[recipient], 'Blacklisted address');
        
        if(!market_active && sender != owner() && recipient != owner())
            require(market_active,"cannot trade before the market opening");

        if(inSwapAndLiquify)
        { 
            return _basicTransfer(sender, recipient, amount); 
        }
        else
        {           

            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= minimumTokensBeforeSwap;
            emit stepLiquify(overMinimumTokenBalance,!inSwapAndLiquify,!isMarketPair[sender],swapAndLiquifyEnabled);
            if (overMinimumTokenBalance && !inSwapAndLiquify && !isMarketPair[sender] && swapAndLiquifyEnabled) 
            {
                if(swapAndLiquifyByLimitOnly)
                    contractTokenBalance = minimumTokensBeforeSwap;
                swapAndLiquify(contractTokenBalance);    
            }

            _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

            uint256 finalAmount = (isExcludedFromFee[sender] || isExcludedFromFee[recipient]) ? 
                                         amount : takeFee(sender, recipient, amount);

            if(checkWalletLimit && !isMarketPair[recipient] && recipient != owner())
                require(balanceOf(recipient).add(finalAmount) <= _walletMax);

            _balances[recipient] = _balances[recipient].add(finalAmount);
            emit Transfer(sender, recipient, finalAmount);
            return true;
        }
    }

    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 swapAndLiquify(uint256 tAmount) private lockTheSwap {
        
        uint256 tokensForLP = tAmount.mul(_liquidityShare).div(_totalDistributionShares).div(2);
        uint256 tokensForSwap = tAmount.sub(tokensForLP);

        swapTokensForEth(tokensForSwap);
        uint256 amountReceived = address(this).balance;

        emit eventSwapAndLiquify(amountReceived);

        uint256 totalBNBFee = _totalDistributionShares.sub(_liquidityShare.div(2));
        
        uint256 amountBNBLiquidity = amountReceived.mul(_liquidityShare).div(totalBNBFee).div(2);
        uint256 amountBNBTeam = amountReceived.mul(_teamShare).div(totalBNBFee);
        uint256 amountTreasury = amountReceived.mul(_treasuryShare).div(totalBNBFee);
        uint256 amountBNBMarketing = amountReceived.sub(amountBNBLiquidity).sub(amountBNBTeam).sub(amountTreasury);

        emit teamGetBnb(amountBNBTeam);
        emit marketingGetBnb(amountBNBMarketing);
        emit liquidityGetBnb(amountBNBLiquidity);

        if(amountBNBMarketing > 0)
            transferToAddressETH(marketingWalletAddress, amountBNBMarketing);

        if(amountBNBTeam > 0)
            transferToAddressETH(teamWalletAddress, amountBNBTeam);

        if(amountBNBLiquidity > 0 && tokensForLP > 0)
            addLiquidity(tokensForLP, amountBNBLiquidity);

        if(amountTreasury > 0)
            transferToAddressETH(treasuryWalletAddress, amountTreasury);
    }
    
    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WDOGE;
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForWDOGESupportingFeeOnTransferTokens(
            tokenAmount,
            0, 
            path,
            address(this), 
            block.timestamp
        );
        
        emit SwapTokensForETH(tokenAmount, path);
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.addLiquidityWDOGE{value: ethAmount}(
            address(this),
            tokenAmount,
            0, 
            0, 
            owner(),
            block.timestamp
        );
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint256 feeAmount = 0;
        
        if(isMarketPair[sender]) {
            feeAmount = amount.mul(_totalTaxIfBuying).div(100); 
        }
        else if(isMarketPair[recipient]) {
            feeAmount = amount.mul(_totalTaxIfSelling).div(100);
        }
        
        if(feeAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
        }

        return amount.sub(feeAmount);
    }

        function edit_blacklistAddress(address account, bool value) external onlyOwner{
        _isBlacklisted[account] = value;
    }
        function activate_market(bool active) external onlyOwner {
        market_active = active;
    }


  }
        

Contract ABI

[{"type":"constructor","stateMutability":"nonpayable","inputs":[]},{"type":"event","name":"Approval","inputs":[{"type":"address","name":"owner","internalType":"address","indexed":true},{"type":"address","name":"spender","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"type":"address","name":"previousOwner","internalType":"address","indexed":true},{"type":"address","name":"newOwner","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"SwapAndLiquify","inputs":[{"type":"uint256","name":"tokensSwapped","internalType":"uint256","indexed":false},{"type":"uint256","name":"ethReceived","internalType":"uint256","indexed":false},{"type":"uint256","name":"tokensIntoLiqudity","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"SwapAndLiquifyEnabledUpdated","inputs":[{"type":"bool","name":"enabled","internalType":"bool","indexed":false}],"anonymous":false},{"type":"event","name":"SwapETHForTokens","inputs":[{"type":"uint256","name":"amountIn","internalType":"uint256","indexed":false},{"type":"address[]","name":"path","internalType":"address[]","indexed":false}],"anonymous":false},{"type":"event","name":"SwapTokensForETH","inputs":[{"type":"uint256","name":"amountIn","internalType":"uint256","indexed":false},{"type":"address[]","name":"path","internalType":"address[]","indexed":false}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"type":"address","name":"from","internalType":"address","indexed":true},{"type":"address","name":"to","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"eventSwapAndLiquify","inputs":[{"type":"uint256","name":"amount","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"inSwapAndLiquifyStatus","inputs":[{"type":"bool","name":"p","internalType":"bool","indexed":false}],"anonymous":false},{"type":"event","name":"liquidityGetBnb","inputs":[{"type":"uint256","name":"amount","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"marketingGetBnb","inputs":[{"type":"uint256","name":"amount","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"stepFee","inputs":[{"type":"bool","name":"p","internalType":"bool","indexed":false}],"anonymous":false},{"type":"event","name":"stepLiquify","inputs":[{"type":"bool","name":"overMinimumTokenBalanceStatus","internalType":"bool","indexed":false},{"type":"bool","name":"inSwapAndLiquifyStatus","internalType":"bool","indexed":false},{"type":"bool","name":"isMarketPair_sender","internalType":"bool","indexed":false},{"type":"bool","name":"swapAndLiquifyEnabledStatus","internalType":"bool","indexed":false}],"anonymous":false},{"type":"event","name":"teamGetBnb","inputs":[{"type":"uint256","name":"amount","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"_buyLiquidityFee","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"_buyMarketingFee","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"_buyTeamFee","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"_buyTreasuryFee","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"_isBlacklisted","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"_liquidityShare","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"_marketingShare","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"_sellLiquidityFee","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"_sellMarketingFee","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"_sellTeamFee","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"_sellTreasuryFee","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"_teamShare","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"_totalDistributionShares","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"_totalSupply","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"_totalTaxIfBuying","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"_totalTaxIfSelling","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"_treasuryShare","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"_walletMax","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"activate_market","inputs":[{"type":"bool","name":"active","internalType":"bool"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"allowance","inputs":[{"type":"address","name":"owner","internalType":"address"},{"type":"address","name":"spender","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"approve","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"balanceOf","inputs":[{"type":"address","name":"account","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"checkWalletLimit","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"deadAddress","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint8","name":"","internalType":"uint8"}],"name":"decimals","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"decreaseAllowance","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"subtractedValue","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"edit_blacklistAddress","inputs":[{"type":"address","name":"account","internalType":"address"},{"type":"bool","name":"value","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"enableDisableWalletLimit","inputs":[{"type":"bool","name":"newValue","internalType":"bool"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getCirculatingSupply","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getTime","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"increaseAllowance","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"addedValue","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"isExcludedFromFee","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"isMarketPair","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"market_active","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address payable"}],"name":"marketingWalletAddress","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"minimumTokensBeforeSwap","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"minimumTokensBeforeSwapAmount","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"name","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"owner","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setBuyTaxes","inputs":[{"type":"uint256","name":"newLiquidityTax","internalType":"uint256"},{"type":"uint256","name":"newMarketingTax","internalType":"uint256"},{"type":"uint256","name":"newTeamTax","internalType":"uint256"},{"type":"uint256","name":"newTreasuryTax","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setDistributionSettings","inputs":[{"type":"uint256","name":"newLiquidityShare","internalType":"uint256"},{"type":"uint256","name":"newMarketingShare","internalType":"uint256"},{"type":"uint256","name":"newTeamShare","internalType":"uint256"},{"type":"uint256","name":"newTreasuryShare","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setIsExcludedFromFee","inputs":[{"type":"address","name":"account","internalType":"address"},{"type":"bool","name":"newValue","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setMarketPairStatus","inputs":[{"type":"address","name":"account","internalType":"address"},{"type":"bool","name":"newValue","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setMarketingWalletAddress","inputs":[{"type":"address","name":"newAddress","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setNumTokensBeforeSwap","inputs":[{"type":"uint256","name":"newLimit","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setSellTaxes","inputs":[{"type":"uint256","name":"newLiquidityTax","internalType":"uint256"},{"type":"uint256","name":"newMarketingTax","internalType":"uint256"},{"type":"uint256","name":"newTeamTax","internalType":"uint256"},{"type":"uint256","name":"newTreasuryTax","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setSwapAndLiquifyByLimitOnly","inputs":[{"type":"bool","name":"newValue","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setSwapAndLiquifyEnabled","inputs":[{"type":"bool","name":"_enabled","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setTeamWalletAddress","inputs":[{"type":"address","name":"newAddress","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setTreasuryWalletAddress","inputs":[{"type":"address","name":"newAddress","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setWalletLimit","inputs":[{"type":"uint256","name":"newLimit","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"swapAndLiquifyByLimitOnly","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"swapAndLiquifyEnabled","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"symbol","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address payable"}],"name":"teamWalletAddress","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalSupply","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transfer","inputs":[{"type":"address","name":"recipient","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transferFrom","inputs":[{"type":"address","name":"sender","internalType":"address"},{"type":"address","name":"recipient","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"transferOwnership","inputs":[{"type":"address","name":"newOwner","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address payable"}],"name":"treasuryWalletAddress","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"uniswapPair","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract IDEXRouter"}],"name":"uniswapV2Router","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"waiveOwnership","inputs":[]},{"type":"receive","stateMutability":"payable"}]
            

Contract Creation Code

0x60e0604052600760a090815266111bd9d954185960ca1b60c05260039062000028908262000615565b5060408051808201909152600381526204447560ec1b602082015260049062000052908262000615565b506005805474ba52d856be21eb7afb2d9e7e01c2992945f7eb2e096001600160a81b0319909116178155600680546001600160a01b0319908116738c1a172b07b9c87aac90bf21836c34fd5b9ef59217909155600780548216732016fcb6d48aef2d68a42c3326e62be1bca796ab17815561dead60805260088054831673b7ddc6414bf4f5515b52d8bdd69973ae205ff1011781556009805490931673a4ee06ce40cb7e8c04e127c1f7d3dfb7f7039c811783556002600f819055601094909455600160118190556000601281905560139590955560149283556015556016849055601e6017556032601855601993909355601a55601b91909155600a601c8190556064601d55620001659190620007f4565b6200017590633b9aca006200080c565b601e556005546200018b9060ff16600a620007f4565b6200019a90629896806200080c565b601f55600554620001b09060ff16600a620007f4565b620001bf90622dc6c06200080c565b6020556022805463ffffffff60a81b191661010160a81b179055348015620001e657600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506009546040805163c45a015560e01b815290516001600160a01b0390921691829163c45a01559160048083019260209291908290030181865afa15801562000274573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029a91906200082e565b6008546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af1158015620002ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200031291906200082e565b602280546001600160a01b039283166001600160a01b031991821617909155602180549284169290911682179055601e54306000908152600b6020908152604080832094835293905291822055600190600c90620003786000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff19958616179055308152600c8352208054909216600117909155601154601254601054600f54620003f494620003e093928492916200149162000501821b17901c565b6200050160201b620014911790919060201c565b601b8190555062000426601554620003e0601654620003e06014546013546200050160201b620014911790919060201c565b601c8190555062000458601a54620003e0601954620003e06018546017546200050160201b620014911790919060201c565b601d556022546001600160a01b03166000908152600d60205260408120805460ff19166001179055601e5490600a906200048f3390565b6001600160a01b03168152602081019190915260400160002055336001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601e54604051620004f291815260200190565b60405180910390a3506200086f565b60008062000510838562000859565b905083811015620005675760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640160405180910390fd5b90505b92915050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200059b57607f821691505b602082108103620005bc57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200061057600081815260208120601f850160051c81016020861015620005eb5750805b601f850160051c820191505b818110156200060c57828155600101620005f7565b5050505b505050565b81516001600160401b0381111562000631576200063162000570565b620006498162000642845462000586565b84620005c2565b602080601f831160018114620006815760008415620006685750858301515b600019600386901b1c1916600185901b1785556200060c565b600085815260208120601f198616915b82811015620006b25788860151825594840194600190910190840162000691565b5085821015620006d15787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620007385781600019048211156200071c576200071c620006e1565b808516156200072a57918102915b93841c9390800290620006fc565b509250929050565b60008262000751575060016200056a565b8162000760575060006200056a565b81600181146200077957600281146200078457620007a4565b60019150506200056a565b60ff841115620007985762000798620006e1565b50506001821b6200056a565b5060208310610133831016604e8410600b8410161715620007c9575081810a6200056a565b620007d58383620006f7565b8060001904821115620007ec57620007ec620006e1565b029392505050565b60006200080560ff84168362000740565b9392505050565b6000816000190483118215151615620008295762000829620006e1565b500290565b6000602082840312156200084157600080fd5b81516001600160a01b03811681146200056757600080fd5b808201808211156200056a576200056a620006e1565b60805161270262000892600039600081816105540152610d2701526127026000f3fe6080604052600436106103bc5760003560e01c806388790a68116101f2578063c816841b1161010d578063dd62ed3e116100a0578063f1d5f5171161006f578063f1d5f51714610af7578063f2fde38b14610b17578063f480fec214610b37578063f872858a14610b5757600080fd5b8063dd62ed3e14610a5b578063e4bf1bed14610aa1578063ef422a1814610ac1578063f0cd1dac14610ae157600080fd5b8063d2d7ad83116100dc578063d2d7ad83146109f8578063d628df9c14610a0e578063da00097d14610a24578063dc44b6a014610a4557600080fd5b8063c816841b14610987578063c8607952146109a7578063cab03471146109bd578063d158272d146109d357600080fd5b8063a5d69d1f11610185578063b1c0b91211610154578063b1c0b9121461091b578063c469b6dd1461093b578063c49b9a8014610951578063c5d241891461097157600080fd5b8063a5d69d1f146108a5578063a83f53a7146108c5578063a9059cbb146108db578063b16f2bb4146108fb57600080fd5b806395d89b41116101c157806395d89b4114610845578063a073d37f1461085a578063a08e671f1461086f578063a457c2d71461088557600080fd5b806388790a68146107db5780638da5cb5b146107f1578063914eb66a1461080f5780639216effe1461082457600080fd5b80633b97084a116102e257806357a5802f1161027557806370a082311161024457806370a0823114610759578063807c2d9c1461078f57806382eefb43146107a5578063844d591c146107bb57600080fd5b806357a5802f146106f75780635efd930b1461070d57806361a23c691461072d5780636d0676961461074357600080fd5b80634a74bb02116102b15780634a74bb02146106735780634cb80fd5146106945780635342acb4146106b4578063557ed1ba146106e457600080fd5b80633b97084a146105ed5780633eaaf86b1461060d5780633ecad271146106235780633ef88edd1461065357600080fd5b806323b872dd1161035a5780632b112e49116103295780632b112e49146105765780632c4b23341461058b578063313ce567146105ab57806339509351146105cd57600080fd5b806323b872dd146104ec57806324fcf8cf1461050c5780632563ae831461052257806327c8f8351461054257600080fd5b80631694505e116103965780631694505e1461045b57806318160ddd1461047b5780631cdd3be31461049a5780631e08d440146104ca57600080fd5b806306fdde03146103c8578063095ea7b3146103f35780631245e3471461042357600080fd5b366103c357005b600080fd5b3480156103d457600080fd5b506103dd610b78565b6040516103ea91906122f0565b60405180910390f35b3480156103ff57600080fd5b5061041361040e36600461235a565b610c0a565b60405190151581526020016103ea565b34801561042f57600080fd5b50600654610443906001600160a01b031681565b6040516001600160a01b0390911681526020016103ea565b34801561046757600080fd5b50602154610443906001600160a01b031681565b34801561048757600080fd5b50601e545b6040519081526020016103ea565b3480156104a657600080fd5b506104136104b5366004612384565b600e6020526000908152604090205460ff1681565b3480156104d657600080fd5b506104ea6104e53660046123af565b610c21565b005b3480156104f857600080fd5b506104136105073660046123ca565b610c72565b34801561051857600080fd5b5061048c60155481565b34801561052e57600080fd5b506104ea61053d3660046123af565b610cdd565b34801561054e57600080fd5b506104437f000000000000000000000000000000000000000000000000000000000000000081565b34801561058257600080fd5b5061048c610d25565b34801561059757600080fd5b506104ea6105a6366004612384565b610d6f565b3480156105b757600080fd5b5060055460405160ff90911681526020016103ea565b3480156105d957600080fd5b506104136105e836600461235a565b610dbb565b3480156105f957600080fd5b506104ea610608366004612406565b610df1565b34801561061957600080fd5b5061048c601e5481565b34801561062f57600080fd5b5061041361063e366004612384565b600d6020526000908152604090205460ff1681565b34801561065f57600080fd5b506104ea61066e36600461241f565b610e20565b34801561067f57600080fd5b5060225461041390600160a81b900460ff1681565b3480156106a057600080fd5b506104ea6106af366004612384565b610e7d565b3480156106c057600080fd5b506104136106cf366004612384565b600c6020526000908152604090205460ff1681565b3480156106f057600080fd5b504261048c565b34801561070357600080fd5b5061048c60175481565b34801561071957600080fd5b506104ea610728366004612384565b610ecf565b34801561073957600080fd5b5061048c60185481565b34801561074f57600080fd5b5061048c601a5481565b34801561076557600080fd5b5061048c610774366004612384565b6001600160a01b03166000908152600a602052604090205490565b34801561079b57600080fd5b5061048c601f5481565b3480156107b157600080fd5b5061048c601c5481565b3480156107c757600080fd5b506104ea6107d6366004612451565b610f1b565b3480156107e757600080fd5b5061048c60135481565b3480156107fd57600080fd5b506000546001600160a01b0316610443565b34801561081b57600080fd5b506104ea610f70565b34801561083057600080fd5b5060225461041390600160c01b900460ff1681565b34801561085157600080fd5b506103dd610fea565b34801561086657600080fd5b5060205461048c565b34801561087b57600080fd5b5061048c601d5481565b34801561089157600080fd5b506104136108a036600461235a565b610ff9565b3480156108b157600080fd5b506104ea6108c03660046123af565b611048565b3480156108d157600080fd5b5061048c60195481565b3480156108e757600080fd5b506104136108f636600461235a565b611090565b34801561090757600080fd5b506104ea610916366004612451565b61109d565b34801561092757600080fd5b50600754610443906001600160a01b031681565b34801561094757600080fd5b5061048c60125481565b34801561095d57600080fd5b506104ea61096c3660046123af565b6110f2565b34801561097d57600080fd5b5061048c60105481565b34801561099357600080fd5b50602254610443906001600160a01b031681565b3480156109b357600080fd5b5061048c60145481565b3480156109c957600080fd5b5061048c60165481565b3480156109df57600080fd5b506005546104439061010090046001600160a01b031681565b348015610a0457600080fd5b5061048c60205481565b348015610a1a57600080fd5b5061048c60115481565b348015610a3057600080fd5b5060225461041390600160b01b900460ff1681565b348015610a5157600080fd5b5061048c600f5481565b348015610a6757600080fd5b5061048c610a76366004612484565b6001600160a01b039182166000908152600b6020908152604080832093909416825291909152205490565b348015610aad57600080fd5b506104ea610abc36600461241f565b611174565b348015610acd57600080fd5b506104ea610adc366004612451565b611222565b348015610aed57600080fd5b5061048c601b5481565b348015610b0357600080fd5b506104ea610b12366004612406565b611277565b348015610b2357600080fd5b506104ea610b32366004612384565b6112f9565b348015610b4357600080fd5b506104ea610b5236600461241f565b6113e3565b348015610b6357600080fd5b5060225461041390600160b81b900460ff1681565b606060038054610b87906124ae565b80601f0160208091040260200160405190810160405280929190818152602001828054610bb3906124ae565b8015610c005780601f10610bd557610100808354040283529160200191610c00565b820191906000526020600020905b815481529060010190602001808311610be357829003601f168201915b5050505050905090565b6000610c173384846114f0565b5060015b92915050565b6000546001600160a01b03163314610c545760405162461bcd60e51b8152600401610c4b906124e8565b60405180910390fd5b60228054911515600160c01b0260ff60c01b19909216919091179055565b6000610c7f848484611614565b50610cd28433610ccd85604051806060016040528060288152602001612680602891396001600160a01b038a166000908152600b602090815260408083203384529091529020549190611b03565b6114f0565b5060015b9392505050565b6000546001600160a01b03163314610d075760405162461bcd60e51b8152600401610c4b906124e8565b60228054911515600160b81b0260ff60b81b19909216919091179055565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166000908152600a6020526040812054601e54610d6a91611b3d565b905090565b6000546001600160a01b03163314610d995760405162461bcd60e51b8152600401610c4b906124e8565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b336000818152600b602090815260408083206001600160a01b03871684529091528120549091610c17918590610ccd9086611491565b6000546001600160a01b03163314610e1b5760405162461bcd60e51b8152600401610c4b906124e8565b602055565b6000546001600160a01b03163314610e4a5760405162461bcd60e51b8152600401610c4b906124e8565b601784905560188390556019829055601a819055610e7481610e6e84818888611491565b90611491565b601d5550505050565b6000546001600160a01b03163314610ea75760405162461bcd60e51b8152600401610c4b906124e8565b600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6000546001600160a01b03163314610ef95760405162461bcd60e51b8152600401610c4b906124e8565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610f455760405162461bcd60e51b8152600401610c4b906124e8565b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610f9a5760405162461bcd60e51b8152600401610c4b906124e8565b6000805460405161dead926001600160a01b03909216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b03191661dead179055565b606060048054610b87906124ae565b6000610c173384610ccd856040518060600160405280602581526020016126a860259139336000908152600b602090815260408083206001600160a01b038d1684529091529020549190611b03565b6000546001600160a01b031633146110725760405162461bcd60e51b8152600401610c4b906124e8565b60228054911515600160b01b0260ff60b01b19909216919091179055565b6000610cd2338484611614565b6000546001600160a01b031633146110c75760405162461bcd60e51b8152600401610c4b906124e8565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461111c5760405162461bcd60e51b8152600401610c4b906124e8565b60228054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061116990831515815260200190565b60405180910390a150565b6000546001600160a01b0316331461119e5760405162461bcd60e51b8152600401610c4b906124e8565b600c6111b082610e6e85818989611491565b11156111f55760405162461bcd60e51b81526020600482015260146024820152732a30bc1032bc31b2b2b239903a3432901899129760611b6044820152606401610c4b565b600f84905560108390556012829055601181905561121981610e6e84818888611491565b601b5550505050565b6000546001600160a01b0316331461124c5760405162461bcd60e51b8152600401610c4b906124e8565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146112a15760405162461bcd60e51b8152600401610c4b906124e8565b62e4e1c08110156112f45760405162461bcd60e51b815260206004820152601860248201527f4d61782057616c6c6574206d696e2031353030303030302e00000000000000006044820152606401610c4b565b601f55565b6000546001600160a01b031633146113235760405162461bcd60e51b8152600401610c4b906124e8565b6001600160a01b0381166113885760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c4b565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461140d5760405162461bcd60e51b8152600401610c4b906124e8565b600d61141f82610e6e85818989611491565b11156114645760405162461bcd60e51b81526020600482015260146024820152732a30bc1032bc31b2b2b239903a3432901899929760611b6044820152606401610c4b565b601384905560148390556016829055601581905561148881610e6e84818888611491565b601c5550505050565b60008061149e8385612533565b905083811015610cd65760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610c4b565b6001600160a01b0383166115525760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c4b565b6001600160a01b0382166115b35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c4b565b6001600160a01b038381166000818152600b602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b03841661167a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610c4b565b6001600160a01b0383166116dc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610c4b565b6001600160a01b0384166000908152600e602052604090205460ff1615801561171e57506001600160a01b0383166000908152600e602052604090205460ff16155b6117605760405162461bcd60e51b8152602060048201526013602482015272426c61636b6c6973746564206164647265737360681b6044820152606401610c4b565b602254600160c01b900460ff1615801561178857506000546001600160a01b03858116911614155b80156117a257506000546001600160a01b03848116911614155b1561180f57602254600160c01b900460ff1661180f5760405162461bcd60e51b815260206004820152602660248201527f63616e6e6f74207472616465206265666f726520746865206d61726b6574206f60448201526570656e696e6760d01b6064820152608401610c4b565b602254600160a01b900460ff16156118335761182c848484611b7f565b9050610cd6565b306000908152600a602090815260408083205482546022546001600160a01b038a168652600d85529483902054835191831015808352600160a01b870460ff90811615968401969096529085161582850152600160a81b9095049093161515606084015290519092917f1fad8c17d8ced3651b0034c888f06409479ba9ae982b5d5919fa7d45976755dd919081900360800190a18080156118de5750602254600160a01b900460ff16155b801561190357506001600160a01b0386166000908152600d602052604090205460ff16155b80156119185750602254600160a81b900460ff165b1561193e57602254600160b01b900460ff16156119355760205491505b61193e82611c65565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389166000908152600a9091529190912054611990918690611b03565b6001600160a01b0387166000908152600a6020908152604080832093909355600c90529081205460ff16806119dd57506001600160a01b0386166000908152600c602052604090205460ff165b6119f1576119ec878787611eb4565b6119f3565b845b602254909150600160b81b900460ff168015611a2857506001600160a01b0386166000908152600d602052604090205460ff16155b8015611a4257506000546001600160a01b03878116911614155b15611a7857601f54611a6d82610e6e896001600160a01b03166000908152600a602052604090205490565b1115611a7857600080fd5b6001600160a01b0386166000908152600a6020526040902054611a9b9082611491565b6001600160a01b038088166000818152600a602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611aef9085815260200190565b60405180910390a360019350505050610cd6565b60008184841115611b275760405162461bcd60e51b8152600401610c4b91906122f0565b506000611b348486612546565b95945050505050565b6000610cd683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b03565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600a90915291822054611bd0918490611b03565b6001600160a01b038086166000908152600a60205260408082209390935590851681522054611bff9083611491565b6001600160a01b038085166000818152600a602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611c539086815260200190565b60405180910390a35060019392505050565b6022805460ff60a01b1916600160a01b179055601d54601754600091611c9b91600291611c959182908790611fba565b9061203c565b90506000611ca98383611b3d565b9050611cb48161207e565b60405147808252907f4392400490f2e1381256cdefd182251d97bf9d33c3cb3f98f4631e63dc5e43d69060200160405180910390a16000611d0d611d04600260175461203c90919063ffffffff16565b601d5490611b3d565b90506000611d2f6002611c9584611c9560175488611fba90919063ffffffff16565b90506000611d4c83611c9560195487611fba90919063ffffffff16565b90506000611d6984611c95601a5488611fba90919063ffffffff16565b90506000611d8382611d7d85818a89611b3d565b90611b3d565b90507fdd5d17f8bac550a1fcd2d7da79e044db216d923fc4344988dc10903a577b830e83604051611db691815260200190565b60405180910390a16040518181527fbf35ce9e6c1288192cf24447a81f0dc45c9da1d0ea729d7ee3c3df4ac87a60f39060200160405180910390a16040518481527fe5eae915a30d9dae96d461f62d00d9061799266f874e9716685c86ccbf93ac709060200160405180910390a18015611e4557600554611e459061010090046001600160a01b0316826121b2565b8215611e6157600654611e61906001600160a01b0316846121b2565b600084118015611e715750600088115b15611e8057611e8088856121ed565b8115611e9c57600754611e9c906001600160a01b0316836121b2565b50506022805460ff60a01b1916905550505050505050565b6001600160a01b0383166000908152600d6020526040812054819060ff1615611ef857611ef16064611c95601b5486611fba90919063ffffffff16565b9050611f36565b6001600160a01b0384166000908152600d602052604090205460ff1615611f3657611f336064611c95601c5486611fba90919063ffffffff16565b90505b8015611fb057306000908152600a6020526040902054611f569082611491565b306000818152600a6020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611fa79085815260200190565b60405180910390a35b611b348382611b3d565b600082600003611fcc57506000610c1b565b6000611fd88385612559565b905082611fe58583612578565b14610cd65760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610c4b565b6000610cd683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506122c2565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106120b3576120b361259a565b6001600160a01b0392831660209182029290920101526008548251911690829060019081106120e4576120e461259a565b6001600160a01b03928316602091820292909201015260215461210a91309116846114f0565b60215460405163b43d9bbb60e01b81526001600160a01b039091169063b43d9bbb906121439085906000908690309042906004016125f4565b600060405180830381600087803b15801561215d57600080fd5b505af1158015612171573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516121a6929190612630565b60405180910390a15050565b6040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156121e8573d6000803e3d6000fd5b505050565b6021546122059030906001600160a01b0316846114f0565b6021546001600160a01b031663e6529ab482308560008061222e6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015612296573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906122bb9190612651565b5050505050565b600081836122e35760405162461bcd60e51b8152600401610c4b91906122f0565b506000611b348486612578565b600060208083528351808285015260005b8181101561231d57858101830151858201604001528201612301565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461235557600080fd5b919050565b6000806040838503121561236d57600080fd5b6123768361233e565b946020939093013593505050565b60006020828403121561239657600080fd5b610cd68261233e565b8035801515811461235557600080fd5b6000602082840312156123c157600080fd5b610cd68261239f565b6000806000606084860312156123df57600080fd5b6123e88461233e565b92506123f66020850161233e565b9150604084013590509250925092565b60006020828403121561241857600080fd5b5035919050565b6000806000806080858703121561243557600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121561246457600080fd5b61246d8361233e565b915061247b6020840161239f565b90509250929050565b6000806040838503121561249757600080fd5b6124a08361233e565b915061247b6020840161233e565b600181811c908216806124c257607f821691505b6020821081036124e257634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820180821115610c1b57610c1b61251d565b81810381811115610c1b57610c1b61251d565b60008160001904831182151516156125735761257361251d565b500290565b60008261259557634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b838110156125e95781516001600160a01b0316875295820195908201906001016125c4565b509495945050505050565b85815284602082015260a06040820152600061261360a08301866125b0565b6001600160a01b0394909416606083015250608001529392505050565b82815260406020820152600061264960408301846125b0565b949350505050565b60008060006060848603121561266657600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212208ad24cbe86ddcbc2166063e1136144fd1c17f593e5cab6bd959c52aa2a3d439964736f6c63430008100033

Deployed ByteCode

0x6080604052600436106103bc5760003560e01c806388790a68116101f2578063c816841b1161010d578063dd62ed3e116100a0578063f1d5f5171161006f578063f1d5f51714610af7578063f2fde38b14610b17578063f480fec214610b37578063f872858a14610b5757600080fd5b8063dd62ed3e14610a5b578063e4bf1bed14610aa1578063ef422a1814610ac1578063f0cd1dac14610ae157600080fd5b8063d2d7ad83116100dc578063d2d7ad83146109f8578063d628df9c14610a0e578063da00097d14610a24578063dc44b6a014610a4557600080fd5b8063c816841b14610987578063c8607952146109a7578063cab03471146109bd578063d158272d146109d357600080fd5b8063a5d69d1f11610185578063b1c0b91211610154578063b1c0b9121461091b578063c469b6dd1461093b578063c49b9a8014610951578063c5d241891461097157600080fd5b8063a5d69d1f146108a5578063a83f53a7146108c5578063a9059cbb146108db578063b16f2bb4146108fb57600080fd5b806395d89b41116101c157806395d89b4114610845578063a073d37f1461085a578063a08e671f1461086f578063a457c2d71461088557600080fd5b806388790a68146107db5780638da5cb5b146107f1578063914eb66a1461080f5780639216effe1461082457600080fd5b80633b97084a116102e257806357a5802f1161027557806370a082311161024457806370a0823114610759578063807c2d9c1461078f57806382eefb43146107a5578063844d591c146107bb57600080fd5b806357a5802f146106f75780635efd930b1461070d57806361a23c691461072d5780636d0676961461074357600080fd5b80634a74bb02116102b15780634a74bb02146106735780634cb80fd5146106945780635342acb4146106b4578063557ed1ba146106e457600080fd5b80633b97084a146105ed5780633eaaf86b1461060d5780633ecad271146106235780633ef88edd1461065357600080fd5b806323b872dd1161035a5780632b112e49116103295780632b112e49146105765780632c4b23341461058b578063313ce567146105ab57806339509351146105cd57600080fd5b806323b872dd146104ec57806324fcf8cf1461050c5780632563ae831461052257806327c8f8351461054257600080fd5b80631694505e116103965780631694505e1461045b57806318160ddd1461047b5780631cdd3be31461049a5780631e08d440146104ca57600080fd5b806306fdde03146103c8578063095ea7b3146103f35780631245e3471461042357600080fd5b366103c357005b600080fd5b3480156103d457600080fd5b506103dd610b78565b6040516103ea91906122f0565b60405180910390f35b3480156103ff57600080fd5b5061041361040e36600461235a565b610c0a565b60405190151581526020016103ea565b34801561042f57600080fd5b50600654610443906001600160a01b031681565b6040516001600160a01b0390911681526020016103ea565b34801561046757600080fd5b50602154610443906001600160a01b031681565b34801561048757600080fd5b50601e545b6040519081526020016103ea565b3480156104a657600080fd5b506104136104b5366004612384565b600e6020526000908152604090205460ff1681565b3480156104d657600080fd5b506104ea6104e53660046123af565b610c21565b005b3480156104f857600080fd5b506104136105073660046123ca565b610c72565b34801561051857600080fd5b5061048c60155481565b34801561052e57600080fd5b506104ea61053d3660046123af565b610cdd565b34801561054e57600080fd5b506104437f000000000000000000000000000000000000000000000000000000000000dead81565b34801561058257600080fd5b5061048c610d25565b34801561059757600080fd5b506104ea6105a6366004612384565b610d6f565b3480156105b757600080fd5b5060055460405160ff90911681526020016103ea565b3480156105d957600080fd5b506104136105e836600461235a565b610dbb565b3480156105f957600080fd5b506104ea610608366004612406565b610df1565b34801561061957600080fd5b5061048c601e5481565b34801561062f57600080fd5b5061041361063e366004612384565b600d6020526000908152604090205460ff1681565b34801561065f57600080fd5b506104ea61066e36600461241f565b610e20565b34801561067f57600080fd5b5060225461041390600160a81b900460ff1681565b3480156106a057600080fd5b506104ea6106af366004612384565b610e7d565b3480156106c057600080fd5b506104136106cf366004612384565b600c6020526000908152604090205460ff1681565b3480156106f057600080fd5b504261048c565b34801561070357600080fd5b5061048c60175481565b34801561071957600080fd5b506104ea610728366004612384565b610ecf565b34801561073957600080fd5b5061048c60185481565b34801561074f57600080fd5b5061048c601a5481565b34801561076557600080fd5b5061048c610774366004612384565b6001600160a01b03166000908152600a602052604090205490565b34801561079b57600080fd5b5061048c601f5481565b3480156107b157600080fd5b5061048c601c5481565b3480156107c757600080fd5b506104ea6107d6366004612451565b610f1b565b3480156107e757600080fd5b5061048c60135481565b3480156107fd57600080fd5b506000546001600160a01b0316610443565b34801561081b57600080fd5b506104ea610f70565b34801561083057600080fd5b5060225461041390600160c01b900460ff1681565b34801561085157600080fd5b506103dd610fea565b34801561086657600080fd5b5060205461048c565b34801561087b57600080fd5b5061048c601d5481565b34801561089157600080fd5b506104136108a036600461235a565b610ff9565b3480156108b157600080fd5b506104ea6108c03660046123af565b611048565b3480156108d157600080fd5b5061048c60195481565b3480156108e757600080fd5b506104136108f636600461235a565b611090565b34801561090757600080fd5b506104ea610916366004612451565b61109d565b34801561092757600080fd5b50600754610443906001600160a01b031681565b34801561094757600080fd5b5061048c60125481565b34801561095d57600080fd5b506104ea61096c3660046123af565b6110f2565b34801561097d57600080fd5b5061048c60105481565b34801561099357600080fd5b50602254610443906001600160a01b031681565b3480156109b357600080fd5b5061048c60145481565b3480156109c957600080fd5b5061048c60165481565b3480156109df57600080fd5b506005546104439061010090046001600160a01b031681565b348015610a0457600080fd5b5061048c60205481565b348015610a1a57600080fd5b5061048c60115481565b348015610a3057600080fd5b5060225461041390600160b01b900460ff1681565b348015610a5157600080fd5b5061048c600f5481565b348015610a6757600080fd5b5061048c610a76366004612484565b6001600160a01b039182166000908152600b6020908152604080832093909416825291909152205490565b348015610aad57600080fd5b506104ea610abc36600461241f565b611174565b348015610acd57600080fd5b506104ea610adc366004612451565b611222565b348015610aed57600080fd5b5061048c601b5481565b348015610b0357600080fd5b506104ea610b12366004612406565b611277565b348015610b2357600080fd5b506104ea610b32366004612384565b6112f9565b348015610b4357600080fd5b506104ea610b5236600461241f565b6113e3565b348015610b6357600080fd5b5060225461041390600160b81b900460ff1681565b606060038054610b87906124ae565b80601f0160208091040260200160405190810160405280929190818152602001828054610bb3906124ae565b8015610c005780601f10610bd557610100808354040283529160200191610c00565b820191906000526020600020905b815481529060010190602001808311610be357829003601f168201915b5050505050905090565b6000610c173384846114f0565b5060015b92915050565b6000546001600160a01b03163314610c545760405162461bcd60e51b8152600401610c4b906124e8565b60405180910390fd5b60228054911515600160c01b0260ff60c01b19909216919091179055565b6000610c7f848484611614565b50610cd28433610ccd85604051806060016040528060288152602001612680602891396001600160a01b038a166000908152600b602090815260408083203384529091529020549190611b03565b6114f0565b5060015b9392505050565b6000546001600160a01b03163314610d075760405162461bcd60e51b8152600401610c4b906124e8565b60228054911515600160b81b0260ff60b81b19909216919091179055565b7f000000000000000000000000000000000000000000000000000000000000dead6001600160a01b03166000908152600a6020526040812054601e54610d6a91611b3d565b905090565b6000546001600160a01b03163314610d995760405162461bcd60e51b8152600401610c4b906124e8565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b336000818152600b602090815260408083206001600160a01b03871684529091528120549091610c17918590610ccd9086611491565b6000546001600160a01b03163314610e1b5760405162461bcd60e51b8152600401610c4b906124e8565b602055565b6000546001600160a01b03163314610e4a5760405162461bcd60e51b8152600401610c4b906124e8565b601784905560188390556019829055601a819055610e7481610e6e84818888611491565b90611491565b601d5550505050565b6000546001600160a01b03163314610ea75760405162461bcd60e51b8152600401610c4b906124e8565b600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6000546001600160a01b03163314610ef95760405162461bcd60e51b8152600401610c4b906124e8565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610f455760405162461bcd60e51b8152600401610c4b906124e8565b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610f9a5760405162461bcd60e51b8152600401610c4b906124e8565b6000805460405161dead926001600160a01b03909216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b03191661dead179055565b606060048054610b87906124ae565b6000610c173384610ccd856040518060600160405280602581526020016126a860259139336000908152600b602090815260408083206001600160a01b038d1684529091529020549190611b03565b6000546001600160a01b031633146110725760405162461bcd60e51b8152600401610c4b906124e8565b60228054911515600160b01b0260ff60b01b19909216919091179055565b6000610cd2338484611614565b6000546001600160a01b031633146110c75760405162461bcd60e51b8152600401610c4b906124e8565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461111c5760405162461bcd60e51b8152600401610c4b906124e8565b60228054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061116990831515815260200190565b60405180910390a150565b6000546001600160a01b0316331461119e5760405162461bcd60e51b8152600401610c4b906124e8565b600c6111b082610e6e85818989611491565b11156111f55760405162461bcd60e51b81526020600482015260146024820152732a30bc1032bc31b2b2b239903a3432901899129760611b6044820152606401610c4b565b600f84905560108390556012829055601181905561121981610e6e84818888611491565b601b5550505050565b6000546001600160a01b0316331461124c5760405162461bcd60e51b8152600401610c4b906124e8565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146112a15760405162461bcd60e51b8152600401610c4b906124e8565b62e4e1c08110156112f45760405162461bcd60e51b815260206004820152601860248201527f4d61782057616c6c6574206d696e2031353030303030302e00000000000000006044820152606401610c4b565b601f55565b6000546001600160a01b031633146113235760405162461bcd60e51b8152600401610c4b906124e8565b6001600160a01b0381166113885760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c4b565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461140d5760405162461bcd60e51b8152600401610c4b906124e8565b600d61141f82610e6e85818989611491565b11156114645760405162461bcd60e51b81526020600482015260146024820152732a30bc1032bc31b2b2b239903a3432901899929760611b6044820152606401610c4b565b601384905560148390556016829055601581905561148881610e6e84818888611491565b601c5550505050565b60008061149e8385612533565b905083811015610cd65760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610c4b565b6001600160a01b0383166115525760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c4b565b6001600160a01b0382166115b35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c4b565b6001600160a01b038381166000818152600b602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b03841661167a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610c4b565b6001600160a01b0383166116dc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610c4b565b6001600160a01b0384166000908152600e602052604090205460ff1615801561171e57506001600160a01b0383166000908152600e602052604090205460ff16155b6117605760405162461bcd60e51b8152602060048201526013602482015272426c61636b6c6973746564206164647265737360681b6044820152606401610c4b565b602254600160c01b900460ff1615801561178857506000546001600160a01b03858116911614155b80156117a257506000546001600160a01b03848116911614155b1561180f57602254600160c01b900460ff1661180f5760405162461bcd60e51b815260206004820152602660248201527f63616e6e6f74207472616465206265666f726520746865206d61726b6574206f60448201526570656e696e6760d01b6064820152608401610c4b565b602254600160a01b900460ff16156118335761182c848484611b7f565b9050610cd6565b306000908152600a602090815260408083205482546022546001600160a01b038a168652600d85529483902054835191831015808352600160a01b870460ff90811615968401969096529085161582850152600160a81b9095049093161515606084015290519092917f1fad8c17d8ced3651b0034c888f06409479ba9ae982b5d5919fa7d45976755dd919081900360800190a18080156118de5750602254600160a01b900460ff16155b801561190357506001600160a01b0386166000908152600d602052604090205460ff16155b80156119185750602254600160a81b900460ff165b1561193e57602254600160b01b900460ff16156119355760205491505b61193e82611c65565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389166000908152600a9091529190912054611990918690611b03565b6001600160a01b0387166000908152600a6020908152604080832093909355600c90529081205460ff16806119dd57506001600160a01b0386166000908152600c602052604090205460ff165b6119f1576119ec878787611eb4565b6119f3565b845b602254909150600160b81b900460ff168015611a2857506001600160a01b0386166000908152600d602052604090205460ff16155b8015611a4257506000546001600160a01b03878116911614155b15611a7857601f54611a6d82610e6e896001600160a01b03166000908152600a602052604090205490565b1115611a7857600080fd5b6001600160a01b0386166000908152600a6020526040902054611a9b9082611491565b6001600160a01b038088166000818152600a602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611aef9085815260200190565b60405180910390a360019350505050610cd6565b60008184841115611b275760405162461bcd60e51b8152600401610c4b91906122f0565b506000611b348486612546565b95945050505050565b6000610cd683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b03565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600a90915291822054611bd0918490611b03565b6001600160a01b038086166000908152600a60205260408082209390935590851681522054611bff9083611491565b6001600160a01b038085166000818152600a602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611c539086815260200190565b60405180910390a35060019392505050565b6022805460ff60a01b1916600160a01b179055601d54601754600091611c9b91600291611c959182908790611fba565b9061203c565b90506000611ca98383611b3d565b9050611cb48161207e565b60405147808252907f4392400490f2e1381256cdefd182251d97bf9d33c3cb3f98f4631e63dc5e43d69060200160405180910390a16000611d0d611d04600260175461203c90919063ffffffff16565b601d5490611b3d565b90506000611d2f6002611c9584611c9560175488611fba90919063ffffffff16565b90506000611d4c83611c9560195487611fba90919063ffffffff16565b90506000611d6984611c95601a5488611fba90919063ffffffff16565b90506000611d8382611d7d85818a89611b3d565b90611b3d565b90507fdd5d17f8bac550a1fcd2d7da79e044db216d923fc4344988dc10903a577b830e83604051611db691815260200190565b60405180910390a16040518181527fbf35ce9e6c1288192cf24447a81f0dc45c9da1d0ea729d7ee3c3df4ac87a60f39060200160405180910390a16040518481527fe5eae915a30d9dae96d461f62d00d9061799266f874e9716685c86ccbf93ac709060200160405180910390a18015611e4557600554611e459061010090046001600160a01b0316826121b2565b8215611e6157600654611e61906001600160a01b0316846121b2565b600084118015611e715750600088115b15611e8057611e8088856121ed565b8115611e9c57600754611e9c906001600160a01b0316836121b2565b50506022805460ff60a01b1916905550505050505050565b6001600160a01b0383166000908152600d6020526040812054819060ff1615611ef857611ef16064611c95601b5486611fba90919063ffffffff16565b9050611f36565b6001600160a01b0384166000908152600d602052604090205460ff1615611f3657611f336064611c95601c5486611fba90919063ffffffff16565b90505b8015611fb057306000908152600a6020526040902054611f569082611491565b306000818152600a6020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611fa79085815260200190565b60405180910390a35b611b348382611b3d565b600082600003611fcc57506000610c1b565b6000611fd88385612559565b905082611fe58583612578565b14610cd65760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610c4b565b6000610cd683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506122c2565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106120b3576120b361259a565b6001600160a01b0392831660209182029290920101526008548251911690829060019081106120e4576120e461259a565b6001600160a01b03928316602091820292909201015260215461210a91309116846114f0565b60215460405163b43d9bbb60e01b81526001600160a01b039091169063b43d9bbb906121439085906000908690309042906004016125f4565b600060405180830381600087803b15801561215d57600080fd5b505af1158015612171573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516121a6929190612630565b60405180910390a15050565b6040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156121e8573d6000803e3d6000fd5b505050565b6021546122059030906001600160a01b0316846114f0565b6021546001600160a01b031663e6529ab482308560008061222e6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015612296573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906122bb9190612651565b5050505050565b600081836122e35760405162461bcd60e51b8152600401610c4b91906122f0565b506000611b348486612578565b600060208083528351808285015260005b8181101561231d57858101830151858201604001528201612301565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461235557600080fd5b919050565b6000806040838503121561236d57600080fd5b6123768361233e565b946020939093013593505050565b60006020828403121561239657600080fd5b610cd68261233e565b8035801515811461235557600080fd5b6000602082840312156123c157600080fd5b610cd68261239f565b6000806000606084860312156123df57600080fd5b6123e88461233e565b92506123f66020850161233e565b9150604084013590509250925092565b60006020828403121561241857600080fd5b5035919050565b6000806000806080858703121561243557600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121561246457600080fd5b61246d8361233e565b915061247b6020840161239f565b90509250929050565b6000806040838503121561249757600080fd5b6124a08361233e565b915061247b6020840161233e565b600181811c908216806124c257607f821691505b6020821081036124e257634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820180821115610c1b57610c1b61251d565b81810381811115610c1b57610c1b61251d565b60008160001904831182151516156125735761257361251d565b500290565b60008261259557634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b838110156125e95781516001600160a01b0316875295820195908201906001016125c4565b509495945050505050565b85815284602082015260a06040820152600061261360a08301866125b0565b6001600160a01b0394909416606083015250608001529392505050565b82815260406020820152600061264960408301846125b0565b949350505050565b60008060006060848603121561266657600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212208ad24cbe86ddcbc2166063e1136144fd1c17f593e5cab6bd959c52aa2a3d439964736f6c63430008100033