false
true
0

Contract Address Details

0xa0f0879eC6C8600d239AAc94d905D9D83cd2b1E9

Token
TRBURN (🔥Tribute)
Creator
0xf9cb00–4e0aba at 0x12d939–7f8f11
Balance
3,376,781.12544355864197715 PLS ( )
Tokens
Fetching tokens...
Transactions
1,204 Transactions
Transfers
0 Transfers
Gas Used
0
Last Balance Update
26310050
Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
Contract name:
TRBBurn




Optimization enabled
true
Compiler version
v0.8.24+commit.e11b9ed9




Optimization runs
200
EVM Version
default




Verified at
2024-12-15T23:24:47.482454Z

Contract source code

// SPDX-License-Identifier: MIT

pragma solidity 0.8.24;


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;
    }
}


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);
}

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);
}

interface IDEXFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IDEXRouter {
    function factory() external pure returns (address);
    function WPLS() 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 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;
}

interface IDividendDistributor {
    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external;  
    function deposit() external payable;
   
}

contract DividendDistributor is IDividendDistributor {
    using SafeMath for uint256;

    address _token;

   

    IERC20 RWRD = IERC20(0x88dF592F8eb5D7Bd38bFeF7dEb0fBc02cf3778a0);
    address WPLS = 0xA1077a294dDE1B09bB078844df40758a5D0f9a27;
    address private constant BURN_ADDRESS = 0x0000000000000000000000000000000000000369;
    
    IDEXRouter router;


    uint256 public totalDividends;
    uint256 public totalDistributed;
    uint256 public totalBurned; // Tracks the total tokens burned

 
    uint256 public minPeriod = 1 * 60;

    // minDistribution is the minimum amount that can be distributed in a single transaction.
    uint256 public minDistribution = 1 * (10 ** 5);

    uint256 currentIndex;

    bool initialized;
    modifier initialization() {
        require(!initialized);
        _;
        initialized = true;
    }

    modifier onlyToken() {
        require(msg.sender == _token); _;
    }

    constructor (address _router) {
        router = _router != address(0)
            ? IDEXRouter(_router)
            : IDEXRouter(0x165C3410fC91EF562C50559f7d2289fEbed552d9);
        _token = msg.sender;
    }

    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external override onlyToken {
        minPeriod = _minPeriod;
        minDistribution = _minDistribution;
    }

    

    function deposit() external payable override onlyToken {
        uint256 balanceBefore = RWRD.balanceOf(address(this));

        address[] memory path = new address[](2);
        path[0] = WPLS;
        path[1] = address(RWRD);

        router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: msg.value}(
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amount = RWRD.balanceOf(address(this)).sub(balanceBefore);
        totalBurned = totalBurned.add(amount);

        RWRD.transfer(BURN_ADDRESS, amount);
    } 

     // Function to get the total amount burned
    function getTotalBurned() external view returns (uint256) {
        return totalBurned;
    } 

    
}

contract TRBBurn is IERC20, Auth {
    using SafeMath for uint256;

    address WPLS = 0xA1077a294dDE1B09bB078844df40758a5D0f9a27;
    address DEAD = 0x0000000000000000000000000000000000000369;
    address ZERO = 0x0000000000000000000000000000000000000000;

    string constant _name = "TRBURN";
    string constant _symbol = "\xF0\x9F\x94\xA5Tribute";
    uint8 constant _decimals = 18;

    uint256 _totalSupply = 60000000 * 10**_decimals;   

    uint256 public _maxTxAmount = _totalSupply;

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;

    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;
    mapping (address => bool) isTimelockExempt;
    mapping (address => bool) isDividendExempt;

    uint256 public liquidityFee    = 150; 
    uint256 public burnFee         = 3; 
    uint256 public reflectionFee   = 3333; 
    uint256 public totalFee        = burnFee + liquidityFee + reflectionFee;
    uint256 public feeDenominator  = 100000; // Using larger denominator for lower fees

    address public autoLiquidityReceiver;

    uint256 targetLiquidity = 23;
    uint256 targetLiquidityDenominator = 100;

    IDEXRouter public router;
    address public pair;
    address public pair2;

    DividendDistributor public distributor;
    uint256 distributorGas = 700000;

    bool public swapEnabled = true;
    uint256 public swapThreshold = 10000 * 10**_decimals; 
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () Auth(msg.sender) {
        router = IDEXRouter(0x165C3410fC91EF562C50559f7d2289fEbed552d9);
        pair = IDEXFactory(router.factory()).createPair(WPLS, address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;
        pair2 = IDEXFactory(router.factory()).createPair(address(0x88dF592F8eb5D7Bd38bFeF7dEb0fBc02cf3778a0), address(this));
        

        distributor = new DividendDistributor(address(router));

        isFeeExempt[address(distributor)] = true;
        isFeeExempt[msg.sender] = true;
        isTxLimitExempt[msg.sender] = true;

        isTimelockExempt[msg.sender] = true;
        isTimelockExempt[DEAD] = true;
        isTimelockExempt[address(this)] = true;

        isDividendExempt[pair] = true;
        isDividendExempt[pair2] = true;
        isDividendExempt[address(distributor)] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[DEAD] = true;
        

        autoLiquidityReceiver = msg.sender;

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable { }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure 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, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function setMaxTxPercent_base1000(uint256 maxTXPercentage_base1000) external onlyOwner() {
        _maxTxAmount = (_totalSupply * maxTXPercentage_base1000 ) / 1000;
    }

    function setTxLimit(uint256 amount) external authorized {
        _maxTxAmount = amount;
    }


    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }
        
        // Checks max transaction limit
        checkTxLimit(sender, amount);
        uint256 amountReceived;
        address routerAddress = address(0x165C3410fC91EF562C50559f7d2289fEbed552d9);
        if(sender == pair || recipient == pair || sender == address(router) || recipient == address(router) || 
        recipient == routerAddress || sender == routerAddress || 
         sender == pair2 || recipient == pair2 ){
                if(shouldSwapBack()){ swapBack(); }
                
                //Exchange tokens
            
                _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

                amountReceived = shouldTakeFee(sender) ? takeFee(sender, amount) : amount;
                _balances[recipient] = _balances[recipient].add(amountReceived);
        }else{
                
                //Exchange tokens
            
                _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

                amountReceived = amount;
                _balances[recipient] = _balances[recipient].add(amountReceived);
       
        }
        

        
        

        

        

        emit Transfer(sender, recipient, amountReceived);
        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 checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
    }

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }

    function takeFee(address sender, uint256 amount) internal returns (uint256) {
        
        uint256 feeAmount = amount.mul(totalFee.sub(burnFee)).div(feeDenominator);
        uint256 burnAmount = amount.mul(burnFee).div(feeDenominator);

        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        _balances[DEAD] = _balances[DEAD].add(burnAmount);
        emit Transfer(sender, address(this), feeAmount);
        emit Transfer(sender, DEAD, burnAmount);

        return amount.sub(feeAmount.add(burnAmount));
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }

    function swapBack() internal swapping {
        uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFee;
        uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = swapThreshold.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WPLS;

        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountPLS = address(this).balance.sub(balanceBefore);

        uint256 totalPLSFee = totalFee.sub(dynamicLiquidityFee.div(2));
        
        uint256 amountPLSLiquidity = amountPLS.mul(dynamicLiquidityFee).div(totalPLSFee).div(2);
        uint256 amountPLSReflection = amountPLS.mul(reflectionFee).div(totalPLSFee);

        try distributor.deposit{value: amountPLSReflection}() {} catch {}

        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountPLSLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountPLSLiquidity, amountToLiquify);
        }
    }

    

    function setIsFeeExempt(address holder, bool exempt) external authorized {
        isFeeExempt[holder] = exempt;
    }

    function setIsTxLimitExempt(address holder, bool exempt) external authorized {
        isTxLimitExempt[holder] = exempt;
    }

    function setIsTimelockExempt(address holder, bool exempt) external authorized {
        isTimelockExempt[holder] = exempt;
    }

    function setFees(uint256 _liquidityFee, uint256 _reflectionFee, uint256 _burnFee, uint256 _feeDenominator) external authorized {
        liquidityFee = _liquidityFee;
        reflectionFee = _reflectionFee;
        burnFee = _burnFee;
        feeDenominator = _feeDenominator;
    
        totalFee = _liquidityFee.add(_reflectionFee).add(_burnFee);

        uint256 maxTotalFee = _feeDenominator * 5 / 100;

        require(totalFee <= maxTotalFee, "Total fees are too high!");
    }

    function setFeeReceivers(address _autoLiquidityReceiver) external authorized {
        autoLiquidityReceiver = _autoLiquidityReceiver;
    }
    
    function setSwapBackSettings(bool _enabled, uint256 _amount) external authorized {
        swapEnabled = _enabled;
        swapThreshold = _amount;
    }

    function setTargetLiquidity(uint256 _target, uint256 _denominator) external authorized {
        targetLiquidity = _target;
        targetLiquidityDenominator = _denominator;
    }

    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external authorized {
        distributor.setDistributionCriteria(_minPeriod, _minDistribution);
    }

    function setDistributorSettings(uint256 gas) external authorized {
        require(gas < 1750000);
        distributorGas = gas;
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    function getLiquidityBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply());
    }

    function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) {
        return getLiquidityBacking(accuracy) > target;
    }

    


event AutoLiquify(uint256 amountPLS, uint256 amountBOG);

}
        

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":"AutoLiquify","inputs":[{"type":"uint256","name":"amountPLS","internalType":"uint256","indexed":false},{"type":"uint256","name":"amountBOG","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"type":"address","name":"owner","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":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"_maxTxAmount","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"allowance","inputs":[{"type":"address","name":"holder","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":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"approveMax","inputs":[{"type":"address","name":"spender","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"authorize","inputs":[{"type":"address","name":"adr","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"autoLiquidityReceiver","inputs":[]},{"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":"uint256","name":"","internalType":"uint256"}],"name":"burnFee","inputs":[]},{"type":"function","stateMutability":"pure","outputs":[{"type":"uint8","name":"","internalType":"uint8"}],"name":"decimals","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract DividendDistributor"}],"name":"distributor","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"feeDenominator","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getCirculatingSupply","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getLiquidityBacking","inputs":[{"type":"uint256","name":"accuracy","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"getOwner","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"isAuthorized","inputs":[{"type":"address","name":"adr","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"isOverLiquified","inputs":[{"type":"uint256","name":"target","internalType":"uint256"},{"type":"uint256","name":"accuracy","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"isOwner","inputs":[{"type":"address","name":"account","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"liquidityFee","inputs":[]},{"type":"function","stateMutability":"pure","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"name","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"pair","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"pair2","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"reflectionFee","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract IDEXRouter"}],"name":"router","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setDistributionCriteria","inputs":[{"type":"uint256","name":"_minPeriod","internalType":"uint256"},{"type":"uint256","name":"_minDistribution","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setDistributorSettings","inputs":[{"type":"uint256","name":"gas","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setFeeReceivers","inputs":[{"type":"address","name":"_autoLiquidityReceiver","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setFees","inputs":[{"type":"uint256","name":"_liquidityFee","internalType":"uint256"},{"type":"uint256","name":"_reflectionFee","internalType":"uint256"},{"type":"uint256","name":"_burnFee","internalType":"uint256"},{"type":"uint256","name":"_feeDenominator","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setIsFeeExempt","inputs":[{"type":"address","name":"holder","internalType":"address"},{"type":"bool","name":"exempt","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setIsTimelockExempt","inputs":[{"type":"address","name":"holder","internalType":"address"},{"type":"bool","name":"exempt","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setIsTxLimitExempt","inputs":[{"type":"address","name":"holder","internalType":"address"},{"type":"bool","name":"exempt","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setMaxTxPercent_base1000","inputs":[{"type":"uint256","name":"maxTXPercentage_base1000","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setSwapBackSettings","inputs":[{"type":"bool","name":"_enabled","internalType":"bool"},{"type":"uint256","name":"_amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setTargetLiquidity","inputs":[{"type":"uint256","name":"_target","internalType":"uint256"},{"type":"uint256","name":"_denominator","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setTxLimit","inputs":[{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"swapEnabled","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"swapThreshold","inputs":[]},{"type":"function","stateMutability":"pure","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"symbol","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalFee","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":"adr","internalType":"address payable"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"unauthorize","inputs":[{"type":"address","name":"adr","internalType":"address"}]},{"type":"receive","stateMutability":"payable"}]
              

Contract Creation Code

Verify & Publish
0x6080604052600280546001600160a01b031990811673a1077a294dde1b09bb078844df40758a5d0f9a2717909155600380548216610369179055600480549091169055620000506012600a620005e5565b62000060906303938700620005fc565b6005556005546006556096600d556003600e55610d05600f55600f54600d54600e546200008e919062000616565b6200009a919062000616565b601055620186a060115560176013556064601455620aae60601955601a805460ff19166001179055620000d06012600a620005e5565b620000de90612710620005fc565b601b55348015620000ed575f80fd5b505f8054336001600160a01b031991821681178355825260016020818152604093849020805460ff19169092179091556015805473165c3410fc91ef562c50559f7d2289febed552d9931683179055825163c45a015560e01b81529251919263c45a015592600480830193928290030181865afa15801562000171573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200019791906200062c565b6002546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303815f875af1158015620001e6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200020c91906200062c565b601680546001600160a01b0319166001600160a01b03928316179055305f9081526008602090815260408083206015805486168552908352928190205f1990559154825163c45a015560e01b8152925193169263c45a01559260048082019392918290030181865afa15801562000285573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002ab91906200062c565b6040516364e329cb60e11b81527388df592f8eb5d7bd38bfef7deb0fbc02cf3778a060048201523060248201526001600160a01b03919091169063c9c65396906044016020604051808303815f875af11580156200030b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200033191906200062c565b601780546001600160a01b0319166001600160a01b039283161790556015546040519116906200036190620004c8565b6001600160a01b039091168152602001604051809103905ff0801580156200038b573d5f803e3d5ffd5b50601880546001600160a01b039283166001600160a01b0319918216811783555f908152600960209081526040808320805460ff199081166001908117909255338086528386208054831684179055600a85528386208054831684179055600b85528386208054831684179055600380548a16875284872080548416851790553080885285882080548516861790556016548b168852600c875285882080548516861790556017548b168852858820805485168617905598548a168752848720805484168517905597865283862080548316841790559654909716845281842080549097161790955560128054909316841790925560055483825260078352848220819055935193845291927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a362000654565b61074a80620022d383390190565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200052a57815f19048211156200050e576200050e620004d6565b808516156200051c57918102915b93841c9390800290620004ef565b509250929050565b5f826200054257506001620005df565b816200055057505f620005df565b8160018114620005695760028114620005745762000594565b6001915050620005df565b60ff841115620005885762000588620004d6565b50506001821b620005df565b5060208310610133831016604e8410600b8410161715620005b9575081810a620005df565b620005c58383620004ea565b805f1904821115620005db57620005db620004d6565b0290505b92915050565b5f620005f560ff84168362000532565b9392505050565b8082028115828204841417620005df57620005df620004d6565b80820180821115620005df57620005df620004d6565b5f602082840312156200063d575f80fd5b81516001600160a01b0381168114620005f5575f80fd5b611c7180620006625f395ff3fe608060405260043610610257575f3560e01c80637d1db4a51161013f578063ca33e64c116100b3578063f0b37c0411610078578063f0b37c041461072f578063f2fde38b1461074e578063f84ba65d1461076d578063f887ea401461078c578063fce589d8146107ab578063fe9fbb80146107c0575f80fd5b8063ca33e64c1461066f578063d51ed1c81461068e578063dd62ed3e146106ad578063df20fd49146106f1578063e01bb68814610710575f80fd5b80639d1944f5116101045780639d1944f5146105b5578063a8aa1b31146105d4578063a9059cbb146105f3578063b6a5d7de14610612578063bd9ab53714610631578063bfe1092814610650575f80fd5b80637d1db4a51461052757806383ad79941461053c578063893d20e81461055157806395d89b411461056d57806398118cb4146105a0575f80fd5b80632d48e896116101d65780635c85974f1161019b5780635c85974f14610446578063658d4b7f146104655780636ddd1713146104845780636fcba3771461049d57806370a08231146104bc578063763014c7146104f0575f80fd5b80632d48e896146103a15780632f54bf6e146103c0578063313ce567146103ed57806350db71fb14610408578063571ac8b014610427575f80fd5b806318160ddd1161021c57806318160ddd146103245780631df4ccfc14610338578063201e79911461034d57806323b872dd1461036e5780632b112e491461038d575f80fd5b80630445b6671461026257806306fdde031461028a578063095ea7b3146102c15780631161ae39146102f0578063180b0d7e1461030f575f80fd5b3661025e57005b5f80fd5b34801561026d575f80fd5b50610277601b5481565b6040519081526020015b60405180910390f35b348015610295575f80fd5b506040805180820190915260068152652a29212aa92760d11b60208201525b60405161028191906118d2565b3480156102cc575f80fd5b506102e06102db366004611935565b6107df565b6040519015158152602001610281565b3480156102fb575f80fd5b506102e061030a36600461195f565b61084b565b34801561031a575f80fd5b5061027760115481565b34801561032f575f80fd5b50600554610277565b348015610343575f80fd5b5061027760105481565b348015610358575f80fd5b5061036c61036736600461195f565b61085e565b005b348015610379575f80fd5b506102e061038836600461197f565b610897565b348015610398575f80fd5b50610277610955565b3480156103ac575f80fd5b5061036c6103bb36600461195f565b6109a5565b3480156103cb575f80fd5b506102e06103da3660046119bd565b5f546001600160a01b0391821691161490565b3480156103f8575f80fd5b5060405160128152602001610281565b348015610413575f80fd5b5061036c6104223660046119ec565b610a2e565b348015610432575f80fd5b506102e06104413660046119bd565b610a7d565b348015610451575f80fd5b5061036c610460366004611a1f565b610a89565b348015610470575f80fd5b5061036c61047f3660046119ec565b610ab3565b34801561048f575f80fd5b50601a546102e09060ff1681565b3480156104a8575f80fd5b5061036c6104b7366004611a36565b610b02565b3480156104c7575f80fd5b506102776104d63660046119bd565b6001600160a01b03165f9081526007602052604090205490565b3480156104fb575f80fd5b5060175461050f906001600160a01b031681565b6040516001600160a01b039091168152602001610281565b348015610532575f80fd5b5061027760065481565b348015610547575f80fd5b50610277600f5481565b34801561055c575f80fd5b505f546001600160a01b031661050f565b348015610578575f80fd5b5060408051808201909152600b81526af09f94a55472696275746560a81b60208201526102b4565b3480156105ab575f80fd5b50610277600d5481565b3480156105c0575f80fd5b5061036c6105cf366004611a1f565b610bc5565b3480156105df575f80fd5b5060165461050f906001600160a01b031681565b3480156105fe575f80fd5b506102e061060d366004611935565b610bfd565b34801561061d575f80fd5b5061036c61062c3660046119bd565b610c09565b34801561063c575f80fd5b5061036c61064b366004611a1f565b610c58565b34801561065b575f80fd5b5060185461050f906001600160a01b031681565b34801561067a575f80fd5b5060125461050f906001600160a01b031681565b348015610699575f80fd5b506102776106a8366004611a1f565b610ca2565b3480156106b8575f80fd5b506102776106c7366004611a65565b6001600160a01b039182165f90815260086020908152604080832093909416825291909152205490565b3480156106fc575f80fd5b5061036c61070b366004611a9c565b610ce4565b34801561071b575f80fd5b5061036c61072a3660046119bd565b610d20565b34801561073a575f80fd5b5061036c6107493660046119bd565b610d67565b348015610759575f80fd5b5061036c6107683660046119bd565b610db0565b348015610778575f80fd5b5061036c6107873660046119ec565b610e44565b348015610797575f80fd5b5060155461050f906001600160a01b031681565b3480156107b6575f80fd5b50610277600e5481565b3480156107cb575f80fd5b506102e06107da3660046119bd565b610e93565b335f8181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906108399086815260200190565b60405180910390a35060015b92915050565b5f8261085683610ca2565b119392505050565b61086733610e93565b61088c5760405162461bcd60e51b815260040161088390611ab6565b60405180910390fd5b601391909155601455565b6001600160a01b0383165f9081526008602090815260408083203384529091528120545f1914610940576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f90815260088252838120338252909152919091205461091c918490610eb0565b6001600160a01b0385165f9081526008602090815260408083203384529091529020555b61094b848484610ee8565b90505b9392505050565b6004546001600160a01b03165f908152600760205260408120546109a0906003546001600160a01b03165f9081526007602052604090205461099a90600554906111b4565b906111b4565b905090565b6109ae33610e93565b6109ca5760405162461bcd60e51b815260040161088390611ab6565b6018546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e896906044015f604051808303815f87803b158015610a14575f80fd5b505af1158015610a26573d5f803e3d5ffd5b505050505050565b610a3733610e93565b610a535760405162461bcd60e51b815260040161088390611ab6565b6001600160a01b03919091165f908152600b60205260409020805460ff1916911515919091179055565b5f610845825f196107df565b610a9233610e93565b610aae5760405162461bcd60e51b815260040161088390611ab6565b600655565b610abc33610e93565b610ad85760405162461bcd60e51b815260040161088390611ab6565b6001600160a01b03919091165f908152600960205260409020805460ff1916911515919091179055565b610b0b33610e93565b610b275760405162461bcd60e51b815260040161088390611ab6565b600d849055600f839055600e8290556011819055610b4f82610b4986866111f5565b906111f5565b6010555f6064610b60836005611aef565b610b6a9190611b06565b9050806010541115610bbe5760405162461bcd60e51b815260206004820152601860248201527f546f74616c20666565732061726520746f6f20686967682100000000000000006044820152606401610883565b5050505050565b610bce33610e93565b610bea5760405162461bcd60e51b815260040161088390611ab6565b621ab3f08110610bf8575f80fd5b601955565b5f61094e338484610ee8565b5f546001600160a01b03163314610c325760405162461bcd60e51b815260040161088390611b25565b6001600160a01b03165f908152600160208190526040909120805460ff19169091179055565b5f546001600160a01b03163314610c815760405162461bcd60e51b815260040161088390611b25565b6103e881600554610c929190611aef565b610c9c9190611b06565b60065550565b5f610845610cae610955565b6016546001600160a01b03165f90815260076020526040902054610cde90610cd7906002611253565b8590611253565b906112d1565b610ced33610e93565b610d095760405162461bcd60e51b815260040161088390611ab6565b601a805460ff191692151592909217909155601b55565b610d2933610e93565b610d455760405162461bcd60e51b815260040161088390611ab6565b601280546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b03163314610d905760405162461bcd60e51b815260040161088390611b25565b6001600160a01b03165f908152600160205260409020805460ff19169055565b5f546001600160a01b03163314610dd95760405162461bcd60e51b815260040161088390611b25565b5f80546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b610e4d33610e93565b610e695760405162461bcd60e51b815260040161088390611ab6565b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b6001600160a01b03165f9081526001602052604090205460ff1690565b5f8184841115610ed35760405162461bcd60e51b815260040161088391906118d2565b505f610edf8486611b45565b95945050505050565b601c545f9060ff1615610f0757610f00848484611312565b905061094e565b610f1184836113e2565b6016545f9073165c3410fc91ef562c50559f7d2289febed552d9906001600160a01b0387811691161480610f5257506016546001600160a01b038681169116145b80610f6a57506015546001600160a01b038781169116145b80610f8257506015546001600160a01b038681169116145b80610f9e5750806001600160a01b0316856001600160a01b0316145b80610fba5750806001600160a01b0316866001600160a01b0316145b80610fd257506017546001600160a01b038781169116145b80610fea57506017546001600160a01b038681169116145b156110d357610ff761144e565b156110045761100461149b565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389165f90815260079091529190912054611055918690610eb0565b6001600160a01b0387165f9081526007602090815260408083209390935560099052205460ff16156110875783611091565b611091868561178b565b6001600160a01b0386165f908152600760205260409020549092506110b690836111f5565b6001600160a01b0386165f9081526007602052604090205561116e565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389165f90815260079091529190912054611124918690610eb0565b6001600160a01b038088165f90815260076020526040808220939093559087168152205484925061115590836111f5565b6001600160a01b0386165f908152600760205260409020555b846001600160a01b0316866001600160a01b03165f80516020611c1c833981519152846040516111a091815260200190565b60405180910390a350600195945050505050565b5f61094e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610eb0565b5f806112018385611b58565b90508381101561094e5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610883565b5f825f0361126257505f610845565b5f61126d8385611aef565b90508261127a8583611b06565b1461094e5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610883565b5f61094e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506118a6565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f908152600790915291822054611362918490610eb0565b6001600160a01b038086165f90815260076020526040808220939093559085168152205461139090836111f5565b6001600160a01b038085165f8181526007602052604090819020939093559151908616905f80516020611c1c833981519152906113d09086815260200190565b60405180910390a35060019392505050565b6006548111158061140a57506001600160a01b0382165f908152600a602052604090205460ff165b61144a5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610883565b5050565b6016545f906001600160a01b0316331480159061146e5750601c5460ff16155b801561147c5750601a5460ff165b80156109a0575050601b54305f90815260076020526040902054101590565b601c805460ff191660011790556013546014545f916114b99161084b565b6114c557600d546114c7565b5f5b90505f6114ea6002610cde601054610cde86601b5461125390919063ffffffff16565b90505f61150282601b546111b490919063ffffffff16565b6040805160028082526060820183529293505f92909160208301908036833701905050905030815f8151811061153a5761153a611b6b565b6001600160a01b03928316602091820292909201015260025482519116908290600190811061156b5761156b611b6b565b6001600160a01b03928316602091820292909201015260155460405163791ac94760e01b81524792919091169063791ac947906115b49086905f90879030904290600401611b7f565b5f604051808303815f87803b1580156115cb575f80fd5b505af11580156115dd573d5f803e3d5ffd5b505050505f6115f582476111b490919063ffffffff16565b90505f61160f6116068860026112d1565b601054906111b4565b90505f6116236002610cde8481878d611253565b90505f61163f83610cde600f548761125390919063ffffffff16565b905060185f9054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004015f604051808303818588803b15801561168e575f80fd5b505af1935050505080156116a0575060015b5087156117765760155460125460405163f305d71960e01b8152306004820152602481018b90525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990849060c40160606040518083038185885af1158015611714573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906117399190611bf0565b505060408051848152602081018b90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b5050601c805460ff1916905550505050505050565b5f806117b4601154610cde6117ad600e546010546111b490919063ffffffff16565b8690611253565b90505f6117d2601154610cde600e548761125390919063ffffffff16565b305f908152600760205260409020549091506117ee90836111f5565b305f90815260076020526040808220929092556003546001600160a01b03168152205461181b90826111f5565b6003546001600160a01b039081165f9081526007602090815260409182902093909355518481523092918816915f80516020611c1c833981519152910160405180910390a36003546040518281526001600160a01b03918216918716905f80516020611c1c8339815191529060200160405180910390a3610edf61189f83836111f5565b85906111b4565b5f81836118c65760405162461bcd60e51b815260040161088391906118d2565b505f610edf8486611b06565b5f602080835283518060208501525f5b818110156118fe578581018301518582016040015282016118e2565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611932575f80fd5b50565b5f8060408385031215611946575f80fd5b82356119518161191e565b946020939093013593505050565b5f8060408385031215611970575f80fd5b50508035926020909101359150565b5f805f60608486031215611991575f80fd5b833561199c8161191e565b925060208401356119ac8161191e565b929592945050506040919091013590565b5f602082840312156119cd575f80fd5b813561094e8161191e565b803580151581146119e7575f80fd5b919050565b5f80604083850312156119fd575f80fd5b8235611a088161191e565b9150611a16602084016119d8565b90509250929050565b5f60208284031215611a2f575f80fd5b5035919050565b5f805f8060808587031215611a49575f80fd5b5050823594602084013594506040840135936060013592509050565b5f8060408385031215611a76575f80fd5b8235611a818161191e565b91506020830135611a918161191e565b809150509250929050565b5f8060408385031215611aad575f80fd5b611951836119d8565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761084557610845611adb565b5f82611b2057634e487b7160e01b5f52601260045260245ffd5b500490565b60208082526006908201526510a7aba722a960d11b604082015260600190565b8181038181111561084557610845611adb565b8082018082111561084557610845611adb565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611bcf5784516001600160a01b031683529383019391830191600101611baa565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215611c02575f80fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122073eb756f1ea8f44c567605acf405c454cdee4f251566090991369dec1596c10064736f6c634300081800336080604052600180546001600160a01b03199081167388df592f8eb5d7bd38bfef7deb0fbc02cf3778a0179091556002805490911673a1077a294dde1b09bb078844df40758a5d0f9a27179055603c600755620186a0600855348015610063575f80fd5b5060405161074a38038061074a833981016040819052610082916100db565b6001600160a01b0381166100aa5773165c3410fc91ef562c50559f7d2289febed552d96100ac565b805b600380546001600160a01b03929092166001600160a01b03199283161790555f80549091163317905550610108565b5f602082840312156100eb575f80fd5b81516001600160a01b0381168114610101575f80fd5b9392505050565b610635806101155f395ff3fe608060405260043610610079575f3560e01c8063d0e30db01161004c578063d0e30db0146100ee578063d89135cd146100f6578063efca2eed1461010b578063ffd49c8414610120575f80fd5b80632d48e8961461007d5780634fab0ae81461009e578063997664d7146100c5578063b55cd04b146100da575b5f80fd5b348015610088575f80fd5b5061009c6100973660046104a5565b610135565b005b3480156100a9575f80fd5b506100b360085481565b60405190815260200160405180910390f35b3480156100d0575f80fd5b506100b360045481565b3480156100e5575f80fd5b506006546100b3565b61009c610155565b348015610101575f80fd5b506100b360065481565b348015610116575f80fd5b506100b360055481565b34801561012b575f80fd5b506100b360075481565b5f546001600160a01b0316331461014a575f80fd5b600791909155600855565b5f546001600160a01b0316331461016a575f80fd5b6001546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa1580156101b0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101d491906104c5565b6040805160028082526060820183529293505f929091602083019080368337505060025482519293506001600160a01b0316918391505f90610218576102186104dc565b6001600160a01b0392831660209182029290920101526001805483519216918391908110610248576102486104dc565b6001600160a01b03928316602091820292909201015260035460405163b6f9de9560e01b815291169063b6f9de9590349061028d905f908690309042906004016104f0565b5f604051808303818588803b1580156102a4575f80fd5b505af11580156102b6573d5f803e3d5ffd5b50506001546040516370a0823160e01b81523060048201525f945061033393508692506001600160a01b03909116906370a0823190602401602060405180830381865afa158015610309573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061032d91906104c5565b906103c0565b600654909150610343908261040a565b60065560015460405163a9059cbb60e01b81526103696004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303815f875af1158015610396573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103ba919061055a565b50505050565b5f61040183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061046d565b90505b92915050565b5f80610416838561058d565b9050838110156104015760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064015b60405180910390fd5b5f81848411156104905760405162461bcd60e51b815260040161046491906105a0565b505f61049c84866105ec565b95945050505050565b5f80604083850312156104b6575f80fd5b50508035926020909101359150565b5f602082840312156104d5575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b5f6080820186835260206080602085015281875180845260a0860191506020890193505f5b8181101561053a5784516001600160a01b031683529383019391830191600101610515565b50506001600160a01b039690961660408501525050506060015292915050565b5f6020828403121561056a575f80fd5b81518015158114610401575f80fd5b634e487b7160e01b5f52601160045260245ffd5b8082018082111561040457610404610579565b5f602080835283518060208501525f5b818110156105cc578581018301518582016040015282016105b0565b505f604082860101526040601f19601f8301168501019250505092915050565b818103818111156104045761040461057956fea2646970667358221220061dad9359920ecfad29d3000eb4b6da0445d45c9aed1240628cd1fe06d5d43364736f6c63430008180033

Deployed ByteCode

0x608060405260043610610257575f3560e01c80637d1db4a51161013f578063ca33e64c116100b3578063f0b37c0411610078578063f0b37c041461072f578063f2fde38b1461074e578063f84ba65d1461076d578063f887ea401461078c578063fce589d8146107ab578063fe9fbb80146107c0575f80fd5b8063ca33e64c1461066f578063d51ed1c81461068e578063dd62ed3e146106ad578063df20fd49146106f1578063e01bb68814610710575f80fd5b80639d1944f5116101045780639d1944f5146105b5578063a8aa1b31146105d4578063a9059cbb146105f3578063b6a5d7de14610612578063bd9ab53714610631578063bfe1092814610650575f80fd5b80637d1db4a51461052757806383ad79941461053c578063893d20e81461055157806395d89b411461056d57806398118cb4146105a0575f80fd5b80632d48e896116101d65780635c85974f1161019b5780635c85974f14610446578063658d4b7f146104655780636ddd1713146104845780636fcba3771461049d57806370a08231146104bc578063763014c7146104f0575f80fd5b80632d48e896146103a15780632f54bf6e146103c0578063313ce567146103ed57806350db71fb14610408578063571ac8b014610427575f80fd5b806318160ddd1161021c57806318160ddd146103245780631df4ccfc14610338578063201e79911461034d57806323b872dd1461036e5780632b112e491461038d575f80fd5b80630445b6671461026257806306fdde031461028a578063095ea7b3146102c15780631161ae39146102f0578063180b0d7e1461030f575f80fd5b3661025e57005b5f80fd5b34801561026d575f80fd5b50610277601b5481565b6040519081526020015b60405180910390f35b348015610295575f80fd5b506040805180820190915260068152652a29212aa92760d11b60208201525b60405161028191906118d2565b3480156102cc575f80fd5b506102e06102db366004611935565b6107df565b6040519015158152602001610281565b3480156102fb575f80fd5b506102e061030a36600461195f565b61084b565b34801561031a575f80fd5b5061027760115481565b34801561032f575f80fd5b50600554610277565b348015610343575f80fd5b5061027760105481565b348015610358575f80fd5b5061036c61036736600461195f565b61085e565b005b348015610379575f80fd5b506102e061038836600461197f565b610897565b348015610398575f80fd5b50610277610955565b3480156103ac575f80fd5b5061036c6103bb36600461195f565b6109a5565b3480156103cb575f80fd5b506102e06103da3660046119bd565b5f546001600160a01b0391821691161490565b3480156103f8575f80fd5b5060405160128152602001610281565b348015610413575f80fd5b5061036c6104223660046119ec565b610a2e565b348015610432575f80fd5b506102e06104413660046119bd565b610a7d565b348015610451575f80fd5b5061036c610460366004611a1f565b610a89565b348015610470575f80fd5b5061036c61047f3660046119ec565b610ab3565b34801561048f575f80fd5b50601a546102e09060ff1681565b3480156104a8575f80fd5b5061036c6104b7366004611a36565b610b02565b3480156104c7575f80fd5b506102776104d63660046119bd565b6001600160a01b03165f9081526007602052604090205490565b3480156104fb575f80fd5b5060175461050f906001600160a01b031681565b6040516001600160a01b039091168152602001610281565b348015610532575f80fd5b5061027760065481565b348015610547575f80fd5b50610277600f5481565b34801561055c575f80fd5b505f546001600160a01b031661050f565b348015610578575f80fd5b5060408051808201909152600b81526af09f94a55472696275746560a81b60208201526102b4565b3480156105ab575f80fd5b50610277600d5481565b3480156105c0575f80fd5b5061036c6105cf366004611a1f565b610bc5565b3480156105df575f80fd5b5060165461050f906001600160a01b031681565b3480156105fe575f80fd5b506102e061060d366004611935565b610bfd565b34801561061d575f80fd5b5061036c61062c3660046119bd565b610c09565b34801561063c575f80fd5b5061036c61064b366004611a1f565b610c58565b34801561065b575f80fd5b5060185461050f906001600160a01b031681565b34801561067a575f80fd5b5060125461050f906001600160a01b031681565b348015610699575f80fd5b506102776106a8366004611a1f565b610ca2565b3480156106b8575f80fd5b506102776106c7366004611a65565b6001600160a01b039182165f90815260086020908152604080832093909416825291909152205490565b3480156106fc575f80fd5b5061036c61070b366004611a9c565b610ce4565b34801561071b575f80fd5b5061036c61072a3660046119bd565b610d20565b34801561073a575f80fd5b5061036c6107493660046119bd565b610d67565b348015610759575f80fd5b5061036c6107683660046119bd565b610db0565b348015610778575f80fd5b5061036c6107873660046119ec565b610e44565b348015610797575f80fd5b5060155461050f906001600160a01b031681565b3480156107b6575f80fd5b50610277600e5481565b3480156107cb575f80fd5b506102e06107da3660046119bd565b610e93565b335f8181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906108399086815260200190565b60405180910390a35060015b92915050565b5f8261085683610ca2565b119392505050565b61086733610e93565b61088c5760405162461bcd60e51b815260040161088390611ab6565b60405180910390fd5b601391909155601455565b6001600160a01b0383165f9081526008602090815260408083203384529091528120545f1914610940576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f90815260088252838120338252909152919091205461091c918490610eb0565b6001600160a01b0385165f9081526008602090815260408083203384529091529020555b61094b848484610ee8565b90505b9392505050565b6004546001600160a01b03165f908152600760205260408120546109a0906003546001600160a01b03165f9081526007602052604090205461099a90600554906111b4565b906111b4565b905090565b6109ae33610e93565b6109ca5760405162461bcd60e51b815260040161088390611ab6565b6018546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e896906044015f604051808303815f87803b158015610a14575f80fd5b505af1158015610a26573d5f803e3d5ffd5b505050505050565b610a3733610e93565b610a535760405162461bcd60e51b815260040161088390611ab6565b6001600160a01b03919091165f908152600b60205260409020805460ff1916911515919091179055565b5f610845825f196107df565b610a9233610e93565b610aae5760405162461bcd60e51b815260040161088390611ab6565b600655565b610abc33610e93565b610ad85760405162461bcd60e51b815260040161088390611ab6565b6001600160a01b03919091165f908152600960205260409020805460ff1916911515919091179055565b610b0b33610e93565b610b275760405162461bcd60e51b815260040161088390611ab6565b600d849055600f839055600e8290556011819055610b4f82610b4986866111f5565b906111f5565b6010555f6064610b60836005611aef565b610b6a9190611b06565b9050806010541115610bbe5760405162461bcd60e51b815260206004820152601860248201527f546f74616c20666565732061726520746f6f20686967682100000000000000006044820152606401610883565b5050505050565b610bce33610e93565b610bea5760405162461bcd60e51b815260040161088390611ab6565b621ab3f08110610bf8575f80fd5b601955565b5f61094e338484610ee8565b5f546001600160a01b03163314610c325760405162461bcd60e51b815260040161088390611b25565b6001600160a01b03165f908152600160208190526040909120805460ff19169091179055565b5f546001600160a01b03163314610c815760405162461bcd60e51b815260040161088390611b25565b6103e881600554610c929190611aef565b610c9c9190611b06565b60065550565b5f610845610cae610955565b6016546001600160a01b03165f90815260076020526040902054610cde90610cd7906002611253565b8590611253565b906112d1565b610ced33610e93565b610d095760405162461bcd60e51b815260040161088390611ab6565b601a805460ff191692151592909217909155601b55565b610d2933610e93565b610d455760405162461bcd60e51b815260040161088390611ab6565b601280546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b03163314610d905760405162461bcd60e51b815260040161088390611b25565b6001600160a01b03165f908152600160205260409020805460ff19169055565b5f546001600160a01b03163314610dd95760405162461bcd60e51b815260040161088390611b25565b5f80546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b610e4d33610e93565b610e695760405162461bcd60e51b815260040161088390611ab6565b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b6001600160a01b03165f9081526001602052604090205460ff1690565b5f8184841115610ed35760405162461bcd60e51b815260040161088391906118d2565b505f610edf8486611b45565b95945050505050565b601c545f9060ff1615610f0757610f00848484611312565b905061094e565b610f1184836113e2565b6016545f9073165c3410fc91ef562c50559f7d2289febed552d9906001600160a01b0387811691161480610f5257506016546001600160a01b038681169116145b80610f6a57506015546001600160a01b038781169116145b80610f8257506015546001600160a01b038681169116145b80610f9e5750806001600160a01b0316856001600160a01b0316145b80610fba5750806001600160a01b0316866001600160a01b0316145b80610fd257506017546001600160a01b038781169116145b80610fea57506017546001600160a01b038681169116145b156110d357610ff761144e565b156110045761100461149b565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389165f90815260079091529190912054611055918690610eb0565b6001600160a01b0387165f9081526007602090815260408083209390935560099052205460ff16156110875783611091565b611091868561178b565b6001600160a01b0386165f908152600760205260409020549092506110b690836111f5565b6001600160a01b0386165f9081526007602052604090205561116e565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389165f90815260079091529190912054611124918690610eb0565b6001600160a01b038088165f90815260076020526040808220939093559087168152205484925061115590836111f5565b6001600160a01b0386165f908152600760205260409020555b846001600160a01b0316866001600160a01b03165f80516020611c1c833981519152846040516111a091815260200190565b60405180910390a350600195945050505050565b5f61094e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610eb0565b5f806112018385611b58565b90508381101561094e5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610883565b5f825f0361126257505f610845565b5f61126d8385611aef565b90508261127a8583611b06565b1461094e5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610883565b5f61094e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506118a6565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f908152600790915291822054611362918490610eb0565b6001600160a01b038086165f90815260076020526040808220939093559085168152205461139090836111f5565b6001600160a01b038085165f8181526007602052604090819020939093559151908616905f80516020611c1c833981519152906113d09086815260200190565b60405180910390a35060019392505050565b6006548111158061140a57506001600160a01b0382165f908152600a602052604090205460ff165b61144a5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610883565b5050565b6016545f906001600160a01b0316331480159061146e5750601c5460ff16155b801561147c5750601a5460ff165b80156109a0575050601b54305f90815260076020526040902054101590565b601c805460ff191660011790556013546014545f916114b99161084b565b6114c557600d546114c7565b5f5b90505f6114ea6002610cde601054610cde86601b5461125390919063ffffffff16565b90505f61150282601b546111b490919063ffffffff16565b6040805160028082526060820183529293505f92909160208301908036833701905050905030815f8151811061153a5761153a611b6b565b6001600160a01b03928316602091820292909201015260025482519116908290600190811061156b5761156b611b6b565b6001600160a01b03928316602091820292909201015260155460405163791ac94760e01b81524792919091169063791ac947906115b49086905f90879030904290600401611b7f565b5f604051808303815f87803b1580156115cb575f80fd5b505af11580156115dd573d5f803e3d5ffd5b505050505f6115f582476111b490919063ffffffff16565b90505f61160f6116068860026112d1565b601054906111b4565b90505f6116236002610cde8481878d611253565b90505f61163f83610cde600f548761125390919063ffffffff16565b905060185f9054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004015f604051808303818588803b15801561168e575f80fd5b505af1935050505080156116a0575060015b5087156117765760155460125460405163f305d71960e01b8152306004820152602481018b90525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990849060c40160606040518083038185885af1158015611714573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906117399190611bf0565b505060408051848152602081018b90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b5050601c805460ff1916905550505050505050565b5f806117b4601154610cde6117ad600e546010546111b490919063ffffffff16565b8690611253565b90505f6117d2601154610cde600e548761125390919063ffffffff16565b305f908152600760205260409020549091506117ee90836111f5565b305f90815260076020526040808220929092556003546001600160a01b03168152205461181b90826111f5565b6003546001600160a01b039081165f9081526007602090815260409182902093909355518481523092918816915f80516020611c1c833981519152910160405180910390a36003546040518281526001600160a01b03918216918716905f80516020611c1c8339815191529060200160405180910390a3610edf61189f83836111f5565b85906111b4565b5f81836118c65760405162461bcd60e51b815260040161088391906118d2565b505f610edf8486611b06565b5f602080835283518060208501525f5b818110156118fe578581018301518582016040015282016118e2565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611932575f80fd5b50565b5f8060408385031215611946575f80fd5b82356119518161191e565b946020939093013593505050565b5f8060408385031215611970575f80fd5b50508035926020909101359150565b5f805f60608486031215611991575f80fd5b833561199c8161191e565b925060208401356119ac8161191e565b929592945050506040919091013590565b5f602082840312156119cd575f80fd5b813561094e8161191e565b803580151581146119e7575f80fd5b919050565b5f80604083850312156119fd575f80fd5b8235611a088161191e565b9150611a16602084016119d8565b90509250929050565b5f60208284031215611a2f575f80fd5b5035919050565b5f805f8060808587031215611a49575f80fd5b5050823594602084013594506040840135936060013592509050565b5f8060408385031215611a76575f80fd5b8235611a818161191e565b91506020830135611a918161191e565b809150509250929050565b5f8060408385031215611aad575f80fd5b611951836119d8565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761084557610845611adb565b5f82611b2057634e487b7160e01b5f52601260045260245ffd5b500490565b60208082526006908201526510a7aba722a960d11b604082015260600190565b8181038181111561084557610845611adb565b8082018082111561084557610845611adb565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611bcf5784516001600160a01b031683529383019391830191600101611baa565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215611c02575f80fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122073eb756f1ea8f44c567605acf405c454cdee4f251566090991369dec1596c10064736f6c63430008180033