ETH Price: $2,620.66 (+1.00%)

Token

Dencun (Dencun)
 

Overview

Max Total Supply

1,000,000,000 Dencun

Holders

51

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
25,259.65821033 Dencun

Value
$0.00
0x24de4895ac385929d9714e95f99c3af48ea5933b
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Dencun

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-03-12
*/

// Website: https://dencuntoken.io
// Twitter: https://twitter.com/Dencuntoken

// SPDX-License-Identifier: MIT

pragma solidity ^0.6.12;

    abstract contract Context {
        function _msgSender() internal view virtual returns (address payable) {
            return 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");
        (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 _previousOwner;
    uint256 private _lockTime;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor () internal {
        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 renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
    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 geUnlockTime() public view returns (uint256) {
        return _lockTime;
    }
    function lock(uint256 time) public virtual onlyOwner {
        _previousOwner = _owner;
        _owner = address(0);
        _lockTime = now + time;
        emit OwnershipTransferred(_owner, address(0));
    }
    function unlock() public virtual {
        require(_previousOwner == msg.sender, "You don't have permission to unlock");
        require(now > _lockTime , "Contract is locked until 7 days");
        emit OwnershipTransferred(_owner, _previousOwner);
        _owner = _previousOwner;
    }
}  

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);
    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
} 

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);
    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);
    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);
    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to);
    event Sync(uint112 reserve0, uint112 reserve1);
    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);
    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;
    function initialize(address, address) external;
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() 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 removeLiquidity(address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts);
    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) external returns (uint amountETH);
    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;
}

contract Dencun is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _isExcluded;
    address[] private _excluded;
    uint256 private constant MAX = ~uint256(0);
    uint256 private _tTotal = 1000000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    string private _name = "Dencun";
    string private _symbol = "Dencun";
    uint8 private _decimals = 9;
    uint256 public _taxFee = 0; 
    uint256 public _dencunFee = 3;
    uint256 private _previousTaxFee = _taxFee;
    uint256 private _oldDencunFee = _dencunFee;
    address payable public _dencunAdminAddress;
    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    bool inSwap = false;
    bool public swapEnabled = true;
    uint256 private _maxTxAmount = 100000000 * 10**9;
    uint256 private _numOfTokensToExchange = 1000000 * 10**9;
    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event SwapEnabledUpdated(bool enabled);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    
    constructor (address payable dencunAdminAddress) public {
        _dencunAdminAddress = dencunAdminAddress;
        _rOwned[_msgSender()] = _rTotal;
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router = _uniswapV2Router;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }
    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 _tTotal;
    }
    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _tOwned[account];
        return tokenFromReflection(_rOwned[account]);
    }
    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }
    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, 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 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 isExcluded(address account) public view returns (bool) {
        return _isExcluded[account];
    }
    function setExcludeFromFee(address account, bool excluded) external onlyOwner() {
        _isExcludedFromFee[account] = excluded;
    }
    function totalFees() public view returns (uint256) {
        return _tFeeTotal;
    }
    function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferFee) {
            (uint256 rAmount,,,,,) = _getValues(tAmount);
            return rAmount;
        } else {
            (,uint256 rTransferAmount,,,,) = _getValues(tAmount);
            return rTransferAmount;
        }
    }
    function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount.div(currentRate);
    }
    function excludeAccount(address account) external onlyOwner() {
        require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, "We can not exclude Uniswap router.");
        require(!_isExcluded[account], "Account is already excluded");
        if(_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }
    function includeAccount(address account) external onlyOwner() {
        require(_isExcluded[account], "Account is already excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }
    function removeAllFee() private {
        if(_taxFee == 0 && _dencunFee == 0) return;
        _previousTaxFee = _taxFee;
        _oldDencunFee = _dencunFee;
        _taxFee = 0;
        _dencunFee = 0;
    }
    function restoreAllFee() private {
        _taxFee = _previousTaxFee;
        _dencunFee = _oldDencunFee;
    }
    function isExcludedFromFee(address account) public view returns(bool) {
        return _isExcludedFromFee[account];
    }
    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 _transfer(address sender, address recipient, uint256 amount) private {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        if(sender != owner() && recipient != owner())
            require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
        uint256 contractTokenBalance = balanceOf(address(this));
        if(contractTokenBalance >= _maxTxAmount)
        {
            contractTokenBalance = _maxTxAmount;
        }
        bool overMinTokenBalance = contractTokenBalance >= _numOfTokensToExchange;
        if (!inSwap && swapEnabled && overMinTokenBalance && sender != uniswapV2Pair) {
            swapTokensForEth(contractTokenBalance);
            uint256 contractETHBalance = address(this).balance;
            if(contractETHBalance > 0) {
                sendETHToDencun(address(this).balance);
            }
        }
        bool takeFee = true;
        if(_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]){
            takeFee = false;
        }
        _tokenTransfer(sender,recipient,amount,takeFee);
    }
    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap{
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
    function sendETHToDencun(uint256 amount) private {
        _dencunAdminAddress.transfer(amount);
    }
    function manualSwap() external onlyOwner() {
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
    function manualSend() external onlyOwner() {
        uint256 contractETHBalance = address(this).balance;
        sendETHToDencun(contractETHBalance);
    }
    function setSwapEnabled(bool enabled) external onlyOwner(){
        swapEnabled = enabled;
    }
    function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) private {
        if(!takeFee)
            removeAllFee();
        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _transferToExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferStandard(sender, recipient, amount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _transferStandard(sender, recipient, amount);
        }
        if(!takeFee)
            restoreAllFee();
    }
    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tDencun) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); 
        _takeDencun(tDencun); 
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    function _transferToExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tDencun) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);    
        _takeDencun(tDencun);           
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tDencun) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); 
        _takeDencun(tDencun);   
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tDencun) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);   
        _takeDencun(tDencun);         
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    function _takeDencun(uint256 tDencun) private {
        uint256 currentRate =  _getRate();
        uint256 rDencun = tDencun.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rDencun);
        if(_isExcluded[address(this)])
            _tOwned[address(this)] = _tOwned[address(this)].add(tDencun);
    }
    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }
    receive() external payable {}
    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tDencun) = _getTValues(tAmount, _taxFee, _dencunFee);
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tDencun);
    }
    function _getTValues(uint256 tAmount, uint256 taxFee, uint256 dencunFee) private pure returns (uint256, uint256, uint256) {
        uint256 tFee = tAmount.mul(taxFee).div(100);
        uint256 tDencun = tAmount.mul(dencunFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tDencun);
        return (tTransferAmount, tFee, tDencun);
    }
    function _getRValues(uint256 tAmount, uint256 tFee, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee);
        return (rAmount, rTransferAmount, rFee);
    }
    function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }
    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;      
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
            rSupply = rSupply.sub(_rOwned[_excluded[i]]);
            tSupply = tSupply.sub(_tOwned[_excluded[i]]);
        }
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }
    function _getTaxFee() private view returns(uint256) {
        return _taxFee;
    }
    function _getMaxTxAmount() private view returns(uint256) {
        return _maxTxAmount;
    }
    function _getETHBalance() public view returns(uint256 balance) {
        return address(this).balance;
    }
    function _setTaxFee(uint256 taxFee) external onlyOwner() {
        _taxFee = taxFee;
    }
    function _setDencunFee(uint256 dencunFee) external onlyOwner() {
        _dencunFee = dencunFee;
    }
    function _setDencunWallet(address payable dencunAdminAddress) external onlyOwner() {
        _dencunAdminAddress = dencunAdminAddress;
    }
    function _setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
        _maxTxAmount = maxTxAmount;
    }
    // ------------------------------------------------------------------------
    // Function to Withdraw Coins sent by mistake to the Token Contract Address.
    // Only the Contract owner can withdraw the Coins.
    // ------------------------------------------------------------------------
    function withdrawCoins() public onlyOwner {
        payable(msg.sender).transfer(address(this).balance);
    }
    // ------------------------------------------------------------------------
    // Function to Withdraw Tokens sent by mistake to the Token Contract Address.
    // Only the Contract owner can withdraw the Tokens.
    // ------------------------------------------------------------------------
    function withdrawTokens(address tokenAddress, uint256 tokenAmount) public virtual onlyOwner {
        IERC20(tokenAddress).transfer(owner(), tokenAmount);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address payable","name":"dencunAdminAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_dencunAdminAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_dencunFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_getETHBalance","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"dencunFee","type":"uint256"}],"name":"_setDencunFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"dencunAdminAddress","type":"address"}],"name":"_setDencunWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"_setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"_setTaxFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"geUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawCoins","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"withdrawTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

670de0b6b3a764000060095567081ad01a501bffff19600a55610100604052600660c0819052652232b731bab760d11b60e09081526200004391600c9190620003f8565b50604080518082019091526006808252652232b731bab760d11b60209092019182526200007391600d91620003f8565b50600e805460ff191660091790556000600f819055600360108190556011919091556012556013805461ffff60a01b1916600160a81b17905567016345785d8a000060145566038d7ea4c68000601555348015620000d057600080fd5b5060405162002fc338038062002fc383398181016040526020811015620000f657600080fd5b5051600062000104620003e5565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601380546001600160a01b0319166001600160a01b038316179055600a54600360006200017a620003e5565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620001f157600080fd5b505afa15801562000206573d6000803e3d6000fd5b505050506040513d60208110156200021d57600080fd5b5051604080516315ab88c960e31b815290516001600160a01b039283169263c9c653969230929186169163ad5c464891600480820192602092909190829003018186803b1580156200026e57600080fd5b505afa15801562000283573d6000803e3d6000fd5b505050506040513d60208110156200029a57600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301525160448083019260209291908290030181600087803b158015620002ed57600080fd5b505af115801562000302573d6000803e3d6000fd5b505050506040513d60208110156200031957600080fd5b50516001600160601b0319606091821b811660a0529082901b1660805260016006600062000346620003e9565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff19958616179055308152600690925290208054909116600117905562000390620003e5565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009546040518082815260200191505060405180910390a3505062000494565b3390565b6000546001600160a01b031690565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200043b57805160ff19168380011785556200046b565b828001600101855582156200046b579182015b828111156200046b5782518255916020019190600101906200044e565b50620004799291506200047d565b5090565b5b808211156200047957600081556001016200047e565b60805160601c60a05160601c612af1620004d260003980610d2f5280611be8525080610ac15280611eb85280611f705280611f975250612af16000f3fe60806040526004361061024a5760003560e01c8063715018a611610139578063dabf6db9116100b6578063f2fde38b1161007a578063f2fde38b14610847578063f42938901461087a578063f815a8421461088f578063f84354f1146108a4578063fcf5d7cd146108d7578063ffbb62a31461090a57610251565b8063dabf6db914610759578063dd46706414610783578063dd62ed3e146107ad578063e01af92c146107e8578063f2cc0c181461081457610251565b8063a9059cbb116100fd578063a9059cbb14610688578063af9549e0146106c1578063b6c52324146106fc578063cba0e99614610711578063d4c667ee1461074457610251565b8063715018a6146105fb5780638da5cb5b1461061057806395d89b4114610625578063a457c2d71461063a578063a69df4b51461067357610251565b8063313ce567116101c757806351bc3c851161018b57806351bc3c85146105415780635342acb4146105565780635880b873146105895780636ddd1713146105b357806370a08231146105c857610251565b8063313ce5671461048157806339509351146104ac5780633b124fe7146104e55780634549b039146104fa57806349bd5a5e1461052c57610251565b806318160ddd1161020e57806318160ddd146103c05780631bbae6e0146103d557806323b872dd146103ff578063254be6ca146104425780632d8381191461045757610251565b806306b091f91461025657806306fdde0314610291578063095ea7b31461031b57806313114a9d146103685780631694505e1461038f57610251565b3661025157005b600080fd5b34801561026257600080fd5b5061028f6004803603604081101561027957600080fd5b506001600160a01b03813516906020013561091f565b005b34801561029d57600080fd5b506102a6610a05565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102e05781810151838201526020016102c8565b50505050905090810190601f16801561030d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561032757600080fd5b506103546004803603604081101561033e57600080fd5b506001600160a01b038135169060200135610a9b565b604080519115158252519081900360200190f35b34801561037457600080fd5b5061037d610ab9565b60408051918252519081900360200190f35b34801561039b57600080fd5b506103a4610abf565b604080516001600160a01b039092168252519081900360200190f35b3480156103cc57600080fd5b5061037d610ae3565b3480156103e157600080fd5b5061028f600480360360208110156103f857600080fd5b5035610ae9565b34801561040b57600080fd5b506103546004803603606081101561042257600080fd5b506001600160a01b03813581169160208101359091169060400135610b46565b34801561044e57600080fd5b506103a4610bcd565b34801561046357600080fd5b5061037d6004803603602081101561047a57600080fd5b5035610bdc565b34801561048d57600080fd5b50610496610c3e565b6040805160ff9092168252519081900360200190f35b3480156104b857600080fd5b50610354600480360360408110156104cf57600080fd5b506001600160a01b038135169060200135610c47565b3480156104f157600080fd5b5061037d610c95565b34801561050657600080fd5b5061037d6004803603604081101561051d57600080fd5b50803590602001351515610c9b565b34801561053857600080fd5b506103a4610d2d565b34801561054d57600080fd5b5061028f610d51565b34801561056257600080fd5b506103546004803603602081101561057957600080fd5b50356001600160a01b0316610dc2565b34801561059557600080fd5b5061028f600480360360208110156105ac57600080fd5b5035610de0565b3480156105bf57600080fd5b50610354610e3d565b3480156105d457600080fd5b5061037d600480360360208110156105eb57600080fd5b50356001600160a01b0316610e4d565b34801561060757600080fd5b5061028f610eaf565b34801561061c57600080fd5b506103a4610f3f565b34801561063157600080fd5b506102a6610f4e565b34801561064657600080fd5b506103546004803603604081101561065d57600080fd5b506001600160a01b038135169060200135610faf565b34801561067f57600080fd5b5061028f611017565b34801561069457600080fd5b50610354600480360360408110156106ab57600080fd5b506001600160a01b038135169060200135611105565b3480156106cd57600080fd5b5061028f600480360360408110156106e457600080fd5b506001600160a01b0381351690602001351515611119565b34801561070857600080fd5b5061037d61119c565b34801561071d57600080fd5b506103546004803603602081101561073457600080fd5b50356001600160a01b03166111a2565b34801561075057600080fd5b5061037d6111c0565b34801561076557600080fd5b5061028f6004803603602081101561077c57600080fd5b50356111c6565b34801561078f57600080fd5b5061028f600480360360208110156107a657600080fd5b5035611223565b3480156107b957600080fd5b5061037d600480360360408110156107d057600080fd5b506001600160a01b03813581169160200135166112c1565b3480156107f457600080fd5b5061028f6004803603602081101561080b57600080fd5b503515156112ec565b34801561082057600080fd5b5061028f6004803603602081101561083757600080fd5b50356001600160a01b0316611362565b34801561085357600080fd5b5061028f6004803603602081101561086a57600080fd5b50356001600160a01b0316611544565b34801561088657600080fd5b5061028f61162a565b34801561089b57600080fd5b5061037d61168c565b3480156108b057600080fd5b5061028f600480360360208110156108c757600080fd5b50356001600160a01b0316611690565b3480156108e357600080fd5b5061028f600480360360208110156108fa57600080fd5b50356001600160a01b0316611851565b34801561091657600080fd5b5061028f6118cb565b61092761194f565b6000546001600160a01b03908116911614610977576040805162461bcd60e51b815260206004820181905260248201526000805160206129a0833981519152604482015290519081900360640190fd5b816001600160a01b031663a9059cbb61098e610f3f565b836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156109d557600080fd5b505af11580156109e9573d6000803e3d6000fd5b505050506040513d60208110156109ff57600080fd5b50505050565b600c8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610a915780601f10610a6657610100808354040283529160200191610a91565b820191906000526020600020905b815481529060010190602001808311610a7457829003601f168201915b5050505050905090565b6000610aaf610aa861194f565b8484611953565b5060015b92915050565b600b5490565b7f000000000000000000000000000000000000000000000000000000000000000081565b60095490565b610af161194f565b6000546001600160a01b03908116911614610b41576040805162461bcd60e51b815260206004820181905260248201526000805160206129a0833981519152604482015290519081900360640190fd5b601455565b6000610b53848484611a3f565b610bc384610b5f61194f565b610bbe85604051806060016040528060288152602001612978602891396001600160a01b038a16600090815260056020526040812090610b9d61194f565b6001600160a01b031681526020810191909152604001600020549190611c9c565b611953565b5060019392505050565b6013546001600160a01b031681565b6000600a54821115610c1f5760405162461bcd60e51b815260040180806020018281038252602a8152602001806128bd602a913960400191505060405180910390fd5b6000610c29611d33565b9050610c358382611d56565b9150505b919050565b600e5460ff1690565b6000610aaf610c5461194f565b84610bbe8560056000610c6561194f565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490611d9f565b600f5481565b6000600954831115610cf4576040805162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604482015290519081900360640190fd5b81610d13576000610d0484611df9565b50939550610ab3945050505050565b6000610d1e84611df9565b50929550610ab3945050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b610d5961194f565b6000546001600160a01b03908116911614610da9576040805162461bcd60e51b815260206004820181905260248201526000805160206129a0833981519152604482015290519081900360640190fd5b6000610db430610e4d565b9050610dbf81611e55565b50565b6001600160a01b031660009081526006602052604090205460ff1690565b610de861194f565b6000546001600160a01b03908116911614610e38576040805162461bcd60e51b815260206004820181905260248201526000805160206129a0833981519152604482015290519081900360640190fd5b600f55565b601354600160a81b900460ff1681565b6001600160a01b03811660009081526007602052604081205460ff1615610e8d57506001600160a01b038116600090815260046020526040902054610c39565b6001600160a01b038216600090815260036020526040902054610ab390610bdc565b610eb761194f565b6000546001600160a01b03908116911614610f07576040805162461bcd60e51b815260206004820181905260248201526000805160206129a0833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116906000805160206129c0833981519152908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b600d8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610a915780601f10610a6657610100808354040283529160200191610a91565b6000610aaf610fbc61194f565b84610bbe85604051806060016040528060258152602001612a976025913960056000610fe661194f565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190611c9c565b6001546001600160a01b031633146110605760405162461bcd60e51b8152600401808060200182810382526023815260200180612a746023913960400191505060405180910390fd5b60025442116110b6576040805162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c2037206461797300604482015290519081900360640190fd5b600154600080546040516001600160a01b0393841693909116916000805160206129c083398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000610aaf61111261194f565b8484611a3f565b61112161194f565b6000546001600160a01b03908116911614611171576040805162461bcd60e51b815260206004820181905260248201526000805160206129a0833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b60025490565b6001600160a01b031660009081526007602052604090205460ff1690565b60105481565b6111ce61194f565b6000546001600160a01b0390811691161461121e576040805162461bcd60e51b815260206004820181905260248201526000805160206129a0833981519152604482015290519081900360640190fd5b601055565b61122b61194f565b6000546001600160a01b0390811691161461127b576040805162461bcd60e51b815260206004820181905260248201526000805160206129a0833981519152604482015290519081900360640190fd5b60008054600180546001600160a01b03199081166001600160a01b0384161790915516815542820160025560405181906000805160206129c0833981519152908290a350565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b6112f461194f565b6000546001600160a01b03908116911614611344576040805162461bcd60e51b815260206004820181905260248201526000805160206129a0833981519152604482015290519081900360640190fd5b60138054911515600160a81b0260ff60a81b19909216919091179055565b61136a61194f565b6000546001600160a01b039081169116146113ba576040805162461bcd60e51b815260206004820181905260248201526000805160206129a0833981519152604482015290519081900360640190fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03821614156114165760405162461bcd60e51b8152600401808060200182810382526022815260200180612a526022913960400191505060405180910390fd5b6001600160a01b03811660009081526007602052604090205460ff1615611484576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b6001600160a01b038116600090815260036020526040902054156114de576001600160a01b0381166000908152600360205260409020546114c490610bdc565b6001600160a01b0382166000908152600460205260409020555b6001600160a01b03166000818152600760205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b61154c61194f565b6000546001600160a01b0390811691161461159c576040805162461bcd60e51b815260206004820181905260248201526000805160206129a0833981519152604482015290519081900360640190fd5b6001600160a01b0381166115e15760405162461bcd60e51b81526004018080602001828103825260268152602001806128e76026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216916000805160206129c083398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b61163261194f565b6000546001600160a01b03908116911614611682576040805162461bcd60e51b815260206004820181905260248201526000805160206129a0833981519152604482015290519081900360640190fd5b47610dbf8161208c565b4790565b61169861194f565b6000546001600160a01b039081169116146116e8576040805162461bcd60e51b815260206004820181905260248201526000805160206129a0833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526007602052604090205460ff16611755576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b60005b60085481101561184d57816001600160a01b03166008828154811061177957fe5b6000918252602090912001546001600160a01b03161415611845576008805460001981019081106117a657fe5b600091825260209091200154600880546001600160a01b0390921691839081106117cc57fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600482526040808220829055600790925220805460ff19169055600880548061181e57fe5b600082815260209020810160001990810180546001600160a01b031916905501905561184d565b600101611758565b5050565b61185961194f565b6000546001600160a01b039081169116146118a9576040805162461bcd60e51b815260206004820181905260248201526000805160206129a0833981519152604482015290519081900360640190fd5b601380546001600160a01b0319166001600160a01b0392909216919091179055565b6118d361194f565b6000546001600160a01b03908116911614611923576040805162461bcd60e51b815260206004820181905260248201526000805160206129a0833981519152604482015290519081900360640190fd5b60405133904780156108fc02916000818181858888f19350505050158015610dbf573d6000803e3d6000fd5b3390565b6001600160a01b0383166119985760405162461bcd60e51b8152600401808060200182810382526024815260200180612a2e6024913960400191505060405180910390fd5b6001600160a01b0382166119dd5760405162461bcd60e51b815260040180806020018281038252602281526020018061290d6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260056020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316611a845760405162461bcd60e51b8152600401808060200182810382526025815260200180612a096025913960400191505060405180910390fd5b6001600160a01b038216611ac95760405162461bcd60e51b815260040180806020018281038252602381526020018061289a6023913960400191505060405180910390fd5b60008111611b085760405162461bcd60e51b81526004018080602001828103825260298152602001806129e06029913960400191505060405180910390fd5b611b10610f3f565b6001600160a01b0316836001600160a01b031614158015611b4a5750611b34610f3f565b6001600160a01b0316826001600160a01b031614155b15611b9057601454811115611b905760405162461bcd60e51b815260040180806020018281038252602881526020018061292f6028913960400191505060405180910390fd5b6000611b9b30610e4d565b90506014548110611bab57506014545b6015546013549082101590600160a01b900460ff16158015611bd65750601354600160a81b900460ff165b8015611bdf5750805b8015611c1d57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b15611c3d57611c2b82611e55565b478015611c3b57611c3b4761208c565b505b6001600160a01b03851660009081526006602052604090205460019060ff1680611c7f57506001600160a01b03851660009081526006602052604090205460ff165b15611c88575060005b611c94868686846120c6565b505050505050565b60008184841115611d2b5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611cf0578181015183820152602001611cd8565b50505050905090810190601f168015611d1d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000806000611d40612234565b9092509050611d4f8282611d56565b9250505090565b6000611d9883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612397565b9392505050565b600082820183811015611d98576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000806000806000806000806000611e168a600f546010546123fc565b9250925092506000611e26611d33565b90506000806000611e388e8786612451565b919e509c509a509598509396509194505050505091939550919395565b6013805460ff60a01b1916600160a01b17905560408051600280825260608083018452926020830190803683370190505090503081600081518110611e9657fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611f0f57600080fd5b505afa158015611f23573d6000803e3d6000fd5b505050506040513d6020811015611f3957600080fd5b5051815182906001908110611f4a57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050611f95307f000000000000000000000000000000000000000000000000000000000000000084611953565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663791ac9478360008430426040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561203a578181015183820152602001612022565b505050509050019650505050505050600060405180830381600087803b15801561206357600080fd5b505af1158015612077573d6000803e3d6000fd5b50506013805460ff60a01b1916905550505050565b6013546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561184d573d6000803e3d6000fd5b806120d3576120d361248d565b6001600160a01b03841660009081526007602052604090205460ff16801561211457506001600160a01b03831660009081526007602052604090205460ff16155b15612129576121248484846124bf565b612227565b6001600160a01b03841660009081526007602052604090205460ff1615801561216a57506001600160a01b03831660009081526007602052604090205460ff165b1561217a576121248484846125e3565b6001600160a01b03841660009081526007602052604090205460ff161580156121bc57506001600160a01b03831660009081526007602052604090205460ff16155b156121cc5761212484848461268c565b6001600160a01b03841660009081526007602052604090205460ff16801561220c57506001600160a01b03831660009081526007602052604090205460ff165b1561221c576121248484846126d0565b61222784848461268c565b806109ff576109ff612743565b600a546009546000918291825b6008548110156123655782600360006008848154811061225d57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806122c2575081600460006008848154811061229b57fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156122d957600a5460095494509450505050612393565b61231960036000600884815481106122ed57fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612751565b925061235b600460006008848154811061232f57fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612751565b9150600101612241565b50600954600a5461237591611d56565b82101561238d57600a54600954935093505050612393565b90925090505b9091565b600081836123e65760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611cf0578181015183820152602001611cd8565b5060008385816123f257fe5b0495945050505050565b600080808061241660646124108989612793565b90611d56565b9050600061242960646124108a89612793565b905060006124418261243b8b86612751565b90612751565b9992985090965090945050505050565b60008080806124608786612793565b9050600061246e8787612793565b9050600061247c8383612751565b929992985090965090945050505050565b600f5415801561249d5750601054155b156124a7576124bd565b600f805460115560108054601255600091829055555b565b6000806000806000806124d187611df9565b6001600160a01b038f16600090815260046020526040902054959b509399509197509550935091506125039088612751565b6001600160a01b038a166000908152600460209081526040808320939093556003905220546125329087612751565b6001600160a01b03808b1660009081526003602052604080822093909355908a16815220546125619086611d9f565b6001600160a01b038916600090815260036020526040902055612583816127ec565b61258d8483612875565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b6000806000806000806125f587611df9565b6001600160a01b038f16600090815260036020526040902054959b509399509197509550935091506126279087612751565b6001600160a01b03808b16600090815260036020908152604080832094909455918b1681526004909152205461265d9084611d9f565b6001600160a01b0389166000908152600460209081526040808320939093556003905220546125619086611d9f565b60008060008060008061269e87611df9565b6001600160a01b038f16600090815260036020526040902054959b509399509197509550935091506125329087612751565b6000806000806000806126e287611df9565b6001600160a01b038f16600090815260046020526040902054959b509399509197509550935091506127149088612751565b6001600160a01b038a166000908152600460209081526040808320939093556003905220546126279087612751565b601154600f55601254601055565b6000611d9883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c9c565b6000826127a257506000610ab3565b828202828482816127af57fe5b0414611d985760405162461bcd60e51b81526004018080602001828103825260218152602001806129576021913960400191505060405180910390fd5b60006127f6611d33565b905060006128048383612793565b306000908152600360205260409020549091506128219082611d9f565b3060009081526003602090815260408083209390935560079052205460ff1615612870573060009081526004602052604090205461285f9084611d9f565b306000908152600460205260409020555b505050565b600a546128829083612751565b600a55600b546128929082611d9f565b600b55505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573735472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737357652063616e206e6f74206578636c75646520556e697377617020726f757465722e596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6f636b45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220a9932e52100d927a5a8446d577ae554f318d24a6506708dd4c331dc48dac5cb664736f6c634300060c003300000000000000000000000099cc1e3828166911f98dfc24a3ac9d361f71309f

Deployed Bytecode

0x60806040526004361061024a5760003560e01c8063715018a611610139578063dabf6db9116100b6578063f2fde38b1161007a578063f2fde38b14610847578063f42938901461087a578063f815a8421461088f578063f84354f1146108a4578063fcf5d7cd146108d7578063ffbb62a31461090a57610251565b8063dabf6db914610759578063dd46706414610783578063dd62ed3e146107ad578063e01af92c146107e8578063f2cc0c181461081457610251565b8063a9059cbb116100fd578063a9059cbb14610688578063af9549e0146106c1578063b6c52324146106fc578063cba0e99614610711578063d4c667ee1461074457610251565b8063715018a6146105fb5780638da5cb5b1461061057806395d89b4114610625578063a457c2d71461063a578063a69df4b51461067357610251565b8063313ce567116101c757806351bc3c851161018b57806351bc3c85146105415780635342acb4146105565780635880b873146105895780636ddd1713146105b357806370a08231146105c857610251565b8063313ce5671461048157806339509351146104ac5780633b124fe7146104e55780634549b039146104fa57806349bd5a5e1461052c57610251565b806318160ddd1161020e57806318160ddd146103c05780631bbae6e0146103d557806323b872dd146103ff578063254be6ca146104425780632d8381191461045757610251565b806306b091f91461025657806306fdde0314610291578063095ea7b31461031b57806313114a9d146103685780631694505e1461038f57610251565b3661025157005b600080fd5b34801561026257600080fd5b5061028f6004803603604081101561027957600080fd5b506001600160a01b03813516906020013561091f565b005b34801561029d57600080fd5b506102a6610a05565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102e05781810151838201526020016102c8565b50505050905090810190601f16801561030d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561032757600080fd5b506103546004803603604081101561033e57600080fd5b506001600160a01b038135169060200135610a9b565b604080519115158252519081900360200190f35b34801561037457600080fd5b5061037d610ab9565b60408051918252519081900360200190f35b34801561039b57600080fd5b506103a4610abf565b604080516001600160a01b039092168252519081900360200190f35b3480156103cc57600080fd5b5061037d610ae3565b3480156103e157600080fd5b5061028f600480360360208110156103f857600080fd5b5035610ae9565b34801561040b57600080fd5b506103546004803603606081101561042257600080fd5b506001600160a01b03813581169160208101359091169060400135610b46565b34801561044e57600080fd5b506103a4610bcd565b34801561046357600080fd5b5061037d6004803603602081101561047a57600080fd5b5035610bdc565b34801561048d57600080fd5b50610496610c3e565b6040805160ff9092168252519081900360200190f35b3480156104b857600080fd5b50610354600480360360408110156104cf57600080fd5b506001600160a01b038135169060200135610c47565b3480156104f157600080fd5b5061037d610c95565b34801561050657600080fd5b5061037d6004803603604081101561051d57600080fd5b50803590602001351515610c9b565b34801561053857600080fd5b506103a4610d2d565b34801561054d57600080fd5b5061028f610d51565b34801561056257600080fd5b506103546004803603602081101561057957600080fd5b50356001600160a01b0316610dc2565b34801561059557600080fd5b5061028f600480360360208110156105ac57600080fd5b5035610de0565b3480156105bf57600080fd5b50610354610e3d565b3480156105d457600080fd5b5061037d600480360360208110156105eb57600080fd5b50356001600160a01b0316610e4d565b34801561060757600080fd5b5061028f610eaf565b34801561061c57600080fd5b506103a4610f3f565b34801561063157600080fd5b506102a6610f4e565b34801561064657600080fd5b506103546004803603604081101561065d57600080fd5b506001600160a01b038135169060200135610faf565b34801561067f57600080fd5b5061028f611017565b34801561069457600080fd5b50610354600480360360408110156106ab57600080fd5b506001600160a01b038135169060200135611105565b3480156106cd57600080fd5b5061028f600480360360408110156106e457600080fd5b506001600160a01b0381351690602001351515611119565b34801561070857600080fd5b5061037d61119c565b34801561071d57600080fd5b506103546004803603602081101561073457600080fd5b50356001600160a01b03166111a2565b34801561075057600080fd5b5061037d6111c0565b34801561076557600080fd5b5061028f6004803603602081101561077c57600080fd5b50356111c6565b34801561078f57600080fd5b5061028f600480360360208110156107a657600080fd5b5035611223565b3480156107b957600080fd5b5061037d600480360360408110156107d057600080fd5b506001600160a01b03813581169160200135166112c1565b3480156107f457600080fd5b5061028f6004803603602081101561080b57600080fd5b503515156112ec565b34801561082057600080fd5b5061028f6004803603602081101561083757600080fd5b50356001600160a01b0316611362565b34801561085357600080fd5b5061028f6004803603602081101561086a57600080fd5b50356001600160a01b0316611544565b34801561088657600080fd5b5061028f61162a565b34801561089b57600080fd5b5061037d61168c565b3480156108b057600080fd5b5061028f600480360360208110156108c757600080fd5b50356001600160a01b0316611690565b3480156108e357600080fd5b5061028f600480360360208110156108fa57600080fd5b50356001600160a01b0316611851565b34801561091657600080fd5b5061028f6118cb565b61092761194f565b6000546001600160a01b03908116911614610977576040805162461bcd60e51b815260206004820181905260248201526000805160206129a0833981519152604482015290519081900360640190fd5b816001600160a01b031663a9059cbb61098e610f3f565b836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156109d557600080fd5b505af11580156109e9573d6000803e3d6000fd5b505050506040513d60208110156109ff57600080fd5b50505050565b600c8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610a915780601f10610a6657610100808354040283529160200191610a91565b820191906000526020600020905b815481529060010190602001808311610a7457829003601f168201915b5050505050905090565b6000610aaf610aa861194f565b8484611953565b5060015b92915050565b600b5490565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b60095490565b610af161194f565b6000546001600160a01b03908116911614610b41576040805162461bcd60e51b815260206004820181905260248201526000805160206129a0833981519152604482015290519081900360640190fd5b601455565b6000610b53848484611a3f565b610bc384610b5f61194f565b610bbe85604051806060016040528060288152602001612978602891396001600160a01b038a16600090815260056020526040812090610b9d61194f565b6001600160a01b031681526020810191909152604001600020549190611c9c565b611953565b5060019392505050565b6013546001600160a01b031681565b6000600a54821115610c1f5760405162461bcd60e51b815260040180806020018281038252602a8152602001806128bd602a913960400191505060405180910390fd5b6000610c29611d33565b9050610c358382611d56565b9150505b919050565b600e5460ff1690565b6000610aaf610c5461194f565b84610bbe8560056000610c6561194f565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490611d9f565b600f5481565b6000600954831115610cf4576040805162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604482015290519081900360640190fd5b81610d13576000610d0484611df9565b50939550610ab3945050505050565b6000610d1e84611df9565b50929550610ab3945050505050565b7f0000000000000000000000004549523989c60d29a58c28a8aee9d8144a9b5cee81565b610d5961194f565b6000546001600160a01b03908116911614610da9576040805162461bcd60e51b815260206004820181905260248201526000805160206129a0833981519152604482015290519081900360640190fd5b6000610db430610e4d565b9050610dbf81611e55565b50565b6001600160a01b031660009081526006602052604090205460ff1690565b610de861194f565b6000546001600160a01b03908116911614610e38576040805162461bcd60e51b815260206004820181905260248201526000805160206129a0833981519152604482015290519081900360640190fd5b600f55565b601354600160a81b900460ff1681565b6001600160a01b03811660009081526007602052604081205460ff1615610e8d57506001600160a01b038116600090815260046020526040902054610c39565b6001600160a01b038216600090815260036020526040902054610ab390610bdc565b610eb761194f565b6000546001600160a01b03908116911614610f07576040805162461bcd60e51b815260206004820181905260248201526000805160206129a0833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116906000805160206129c0833981519152908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b600d8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610a915780601f10610a6657610100808354040283529160200191610a91565b6000610aaf610fbc61194f565b84610bbe85604051806060016040528060258152602001612a976025913960056000610fe661194f565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190611c9c565b6001546001600160a01b031633146110605760405162461bcd60e51b8152600401808060200182810382526023815260200180612a746023913960400191505060405180910390fd5b60025442116110b6576040805162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c2037206461797300604482015290519081900360640190fd5b600154600080546040516001600160a01b0393841693909116916000805160206129c083398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000610aaf61111261194f565b8484611a3f565b61112161194f565b6000546001600160a01b03908116911614611171576040805162461bcd60e51b815260206004820181905260248201526000805160206129a0833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b60025490565b6001600160a01b031660009081526007602052604090205460ff1690565b60105481565b6111ce61194f565b6000546001600160a01b0390811691161461121e576040805162461bcd60e51b815260206004820181905260248201526000805160206129a0833981519152604482015290519081900360640190fd5b601055565b61122b61194f565b6000546001600160a01b0390811691161461127b576040805162461bcd60e51b815260206004820181905260248201526000805160206129a0833981519152604482015290519081900360640190fd5b60008054600180546001600160a01b03199081166001600160a01b0384161790915516815542820160025560405181906000805160206129c0833981519152908290a350565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b6112f461194f565b6000546001600160a01b03908116911614611344576040805162461bcd60e51b815260206004820181905260248201526000805160206129a0833981519152604482015290519081900360640190fd5b60138054911515600160a81b0260ff60a81b19909216919091179055565b61136a61194f565b6000546001600160a01b039081169116146113ba576040805162461bcd60e51b815260206004820181905260248201526000805160206129a0833981519152604482015290519081900360640190fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03821614156114165760405162461bcd60e51b8152600401808060200182810382526022815260200180612a526022913960400191505060405180910390fd5b6001600160a01b03811660009081526007602052604090205460ff1615611484576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b6001600160a01b038116600090815260036020526040902054156114de576001600160a01b0381166000908152600360205260409020546114c490610bdc565b6001600160a01b0382166000908152600460205260409020555b6001600160a01b03166000818152600760205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b61154c61194f565b6000546001600160a01b0390811691161461159c576040805162461bcd60e51b815260206004820181905260248201526000805160206129a0833981519152604482015290519081900360640190fd5b6001600160a01b0381166115e15760405162461bcd60e51b81526004018080602001828103825260268152602001806128e76026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216916000805160206129c083398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b61163261194f565b6000546001600160a01b03908116911614611682576040805162461bcd60e51b815260206004820181905260248201526000805160206129a0833981519152604482015290519081900360640190fd5b47610dbf8161208c565b4790565b61169861194f565b6000546001600160a01b039081169116146116e8576040805162461bcd60e51b815260206004820181905260248201526000805160206129a0833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526007602052604090205460ff16611755576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b60005b60085481101561184d57816001600160a01b03166008828154811061177957fe5b6000918252602090912001546001600160a01b03161415611845576008805460001981019081106117a657fe5b600091825260209091200154600880546001600160a01b0390921691839081106117cc57fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600482526040808220829055600790925220805460ff19169055600880548061181e57fe5b600082815260209020810160001990810180546001600160a01b031916905501905561184d565b600101611758565b5050565b61185961194f565b6000546001600160a01b039081169116146118a9576040805162461bcd60e51b815260206004820181905260248201526000805160206129a0833981519152604482015290519081900360640190fd5b601380546001600160a01b0319166001600160a01b0392909216919091179055565b6118d361194f565b6000546001600160a01b03908116911614611923576040805162461bcd60e51b815260206004820181905260248201526000805160206129a0833981519152604482015290519081900360640190fd5b60405133904780156108fc02916000818181858888f19350505050158015610dbf573d6000803e3d6000fd5b3390565b6001600160a01b0383166119985760405162461bcd60e51b8152600401808060200182810382526024815260200180612a2e6024913960400191505060405180910390fd5b6001600160a01b0382166119dd5760405162461bcd60e51b815260040180806020018281038252602281526020018061290d6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260056020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316611a845760405162461bcd60e51b8152600401808060200182810382526025815260200180612a096025913960400191505060405180910390fd5b6001600160a01b038216611ac95760405162461bcd60e51b815260040180806020018281038252602381526020018061289a6023913960400191505060405180910390fd5b60008111611b085760405162461bcd60e51b81526004018080602001828103825260298152602001806129e06029913960400191505060405180910390fd5b611b10610f3f565b6001600160a01b0316836001600160a01b031614158015611b4a5750611b34610f3f565b6001600160a01b0316826001600160a01b031614155b15611b9057601454811115611b905760405162461bcd60e51b815260040180806020018281038252602881526020018061292f6028913960400191505060405180910390fd5b6000611b9b30610e4d565b90506014548110611bab57506014545b6015546013549082101590600160a01b900460ff16158015611bd65750601354600160a81b900460ff165b8015611bdf5750805b8015611c1d57507f0000000000000000000000004549523989c60d29a58c28a8aee9d8144a9b5cee6001600160a01b0316856001600160a01b031614155b15611c3d57611c2b82611e55565b478015611c3b57611c3b4761208c565b505b6001600160a01b03851660009081526006602052604090205460019060ff1680611c7f57506001600160a01b03851660009081526006602052604090205460ff165b15611c88575060005b611c94868686846120c6565b505050505050565b60008184841115611d2b5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611cf0578181015183820152602001611cd8565b50505050905090810190601f168015611d1d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000806000611d40612234565b9092509050611d4f8282611d56565b9250505090565b6000611d9883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612397565b9392505050565b600082820183811015611d98576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000806000806000806000806000611e168a600f546010546123fc565b9250925092506000611e26611d33565b90506000806000611e388e8786612451565b919e509c509a509598509396509194505050505091939550919395565b6013805460ff60a01b1916600160a01b17905560408051600280825260608083018452926020830190803683370190505090503081600081518110611e9657fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611f0f57600080fd5b505afa158015611f23573d6000803e3d6000fd5b505050506040513d6020811015611f3957600080fd5b5051815182906001908110611f4a57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050611f95307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611953565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663791ac9478360008430426040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561203a578181015183820152602001612022565b505050509050019650505050505050600060405180830381600087803b15801561206357600080fd5b505af1158015612077573d6000803e3d6000fd5b50506013805460ff60a01b1916905550505050565b6013546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561184d573d6000803e3d6000fd5b806120d3576120d361248d565b6001600160a01b03841660009081526007602052604090205460ff16801561211457506001600160a01b03831660009081526007602052604090205460ff16155b15612129576121248484846124bf565b612227565b6001600160a01b03841660009081526007602052604090205460ff1615801561216a57506001600160a01b03831660009081526007602052604090205460ff165b1561217a576121248484846125e3565b6001600160a01b03841660009081526007602052604090205460ff161580156121bc57506001600160a01b03831660009081526007602052604090205460ff16155b156121cc5761212484848461268c565b6001600160a01b03841660009081526007602052604090205460ff16801561220c57506001600160a01b03831660009081526007602052604090205460ff165b1561221c576121248484846126d0565b61222784848461268c565b806109ff576109ff612743565b600a546009546000918291825b6008548110156123655782600360006008848154811061225d57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806122c2575081600460006008848154811061229b57fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156122d957600a5460095494509450505050612393565b61231960036000600884815481106122ed57fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612751565b925061235b600460006008848154811061232f57fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612751565b9150600101612241565b50600954600a5461237591611d56565b82101561238d57600a54600954935093505050612393565b90925090505b9091565b600081836123e65760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611cf0578181015183820152602001611cd8565b5060008385816123f257fe5b0495945050505050565b600080808061241660646124108989612793565b90611d56565b9050600061242960646124108a89612793565b905060006124418261243b8b86612751565b90612751565b9992985090965090945050505050565b60008080806124608786612793565b9050600061246e8787612793565b9050600061247c8383612751565b929992985090965090945050505050565b600f5415801561249d5750601054155b156124a7576124bd565b600f805460115560108054601255600091829055555b565b6000806000806000806124d187611df9565b6001600160a01b038f16600090815260046020526040902054959b509399509197509550935091506125039088612751565b6001600160a01b038a166000908152600460209081526040808320939093556003905220546125329087612751565b6001600160a01b03808b1660009081526003602052604080822093909355908a16815220546125619086611d9f565b6001600160a01b038916600090815260036020526040902055612583816127ec565b61258d8483612875565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b6000806000806000806125f587611df9565b6001600160a01b038f16600090815260036020526040902054959b509399509197509550935091506126279087612751565b6001600160a01b03808b16600090815260036020908152604080832094909455918b1681526004909152205461265d9084611d9f565b6001600160a01b0389166000908152600460209081526040808320939093556003905220546125619086611d9f565b60008060008060008061269e87611df9565b6001600160a01b038f16600090815260036020526040902054959b509399509197509550935091506125329087612751565b6000806000806000806126e287611df9565b6001600160a01b038f16600090815260046020526040902054959b509399509197509550935091506127149088612751565b6001600160a01b038a166000908152600460209081526040808320939093556003905220546126279087612751565b601154600f55601254601055565b6000611d9883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c9c565b6000826127a257506000610ab3565b828202828482816127af57fe5b0414611d985760405162461bcd60e51b81526004018080602001828103825260218152602001806129576021913960400191505060405180910390fd5b60006127f6611d33565b905060006128048383612793565b306000908152600360205260409020549091506128219082611d9f565b3060009081526003602090815260408083209390935560079052205460ff1615612870573060009081526004602052604090205461285f9084611d9f565b306000908152600460205260409020555b505050565b600a546128829083612751565b600a55600b546128929082611d9f565b600b55505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573735472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737357652063616e206e6f74206578636c75646520556e697377617020726f757465722e596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6f636b45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220a9932e52100d927a5a8446d577ae554f318d24a6506708dd4c331dc48dac5cb664736f6c634300060c0033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000099cc1e3828166911f98dfc24a3ac9d361f71309f

-----Decoded View---------------
Arg [0] : dencunAdminAddress (address): 0x99Cc1E3828166911F98dfC24a3AC9d361F71309F

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000099cc1e3828166911f98dfc24a3ac9d361f71309f


Deployed Bytecode Sourcemap

13483:16270:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29588:162;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;29588:162:0;;;;;;;;:::i;:::-;;15535:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16433:161;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;16433:161:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;17677:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;14439:51;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;14439:51:0;;;;;;;;;;;;;;15806:95;;;;;;;;;;;;;:::i;28750:112::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28750:112:0;;:::i;16600:313::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;16600:313:0;;;;;;;;;;;;;;;;;:::i;14390:42::-;;;;;;;;;;;;;:::i;18212:253::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18212:253:0;;:::i;15717:83::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16919:218;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;16919:218:0;;;;;;;;:::i;14223:26::-;;;;;;;;;;;;;:::i;17770:436::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17770:436:0;;;;;;;;;:::i;14497:38::-;;;;;;;;;;;;;:::i;22093:156::-;;;;;;;;;;;;;:::i;19743:123::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19743:123:0;-1:-1:-1;;;;;19743:123:0;;:::i;28394:92::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28394:92:0;;:::i;14568:30::-;;;;;;;;;;;;;:::i;15907:198::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15907:198:0;-1:-1:-1;;;;;15907:198:0;;:::i;5481:148::-;;;;;;;;;;;;;:::i;5271:79::-;;;;;;;;;;;;;:::i;15624:87::-;;;;;;;;;;;;;:::i;17143:269::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;17143:269:0;;;;;;;;:::i;6200:293::-;;;;;;;;;;;;;:::i;16111:167::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;16111:167:0;;;;;;;;:::i;17534:137::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;17534:137:0;;;;;;;;;;:::i;5885:89::-;;;;;;;;;;;;;:::i;17418:110::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17418:110:0;-1:-1:-1;;;;;17418:110:0;;:::i;14257:29::-;;;;;;;;;;;;;:::i;28492:104::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28492:104:0;;:::i;5980:214::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5980:214:0;;:::i;16284:143::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;16284:143:0;;;;;;;;;;:::i;22419:98::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22419:98:0;;;;:::i;18471:443::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18471:443:0;-1:-1:-1;;;;;18471:443:0;;:::i;5635:244::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5635:244:0;-1:-1:-1;;;;;5635:244:0;;:::i;22255:158::-;;;;;;;;;;;;;:::i;28278:110::-;;;;;;;;;;;;;:::i;18920:478::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18920:478:0;-1:-1:-1;;;;;18920:478:0;;:::i;28602:142::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28602:142:0;-1:-1:-1;;;;;28602:142:0;;:::i;29168:112::-;;;;;;;;;;;;;:::i;29588:162::-;5406:12;:10;:12::i;:::-;5396:6;;-1:-1:-1;;;;;5396:6:0;;;:22;;;5388:67;;;;;-1:-1:-1;;;5388:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;5388:67:0;;;;;;;;;;;;;;;29698:12:::1;-1:-1:-1::0;;;;;29691:29:0::1;;29721:7;:5;:7::i;:::-;29730:11;29691:51;;;;;;;;;;;;;-1:-1:-1::0;;;;;29691:51:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;;;29588:162:0:o;15535:83::-;15605:5;15598:12;;;;;;;;-1:-1:-1;;15598:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15572:13;;15598:12;;15605:5;;15598:12;;15605:5;15598:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15535:83;:::o;16433:161::-;16508:4;16525:39;16534:12;:10;:12::i;:::-;16548:7;16557:6;16525:8;:39::i;:::-;-1:-1:-1;16582:4:0;16433:161;;;;;:::o;17677:87::-;17746:10;;17677:87;:::o;14439:51::-;;;:::o;15806:95::-;15886:7;;15806:95;:::o;28750:112::-;5406:12;:10;:12::i;:::-;5396:6;;-1:-1:-1;;;;;5396:6:0;;;:22;;;5388:67;;;;;-1:-1:-1;;;5388:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;5388:67:0;;;;;;;;;;;;;;;28828:12:::1;:26:::0;28750:112::o;16600:313::-;16698:4;16715:36;16725:6;16733:9;16744:6;16715:9;:36::i;:::-;16762:121;16771:6;16779:12;:10;:12::i;:::-;16793:89;16831:6;16793:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16793:19:0;;;;;;:11;:19;;;;;;16813:12;:10;:12::i;:::-;-1:-1:-1;;;;;16793:33:0;;;;;;;;;;;;-1:-1:-1;16793:33:0;;;:89;:37;:89::i;:::-;16762:8;:121::i;:::-;-1:-1:-1;16901:4:0;16600:313;;;;;:::o;14390:42::-;;;-1:-1:-1;;;;;14390:42:0;;:::o;18212:253::-;18278:7;18317;;18306;:18;;18298:73;;;;-1:-1:-1;;;18298:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18382:19;18405:10;:8;:10::i;:::-;18382:33;-1:-1:-1;18433:24:0;:7;18382:33;18433:11;:24::i;:::-;18426:31;;;18212:253;;;;:::o;15717:83::-;15783:9;;;;15717:83;:::o;16919:218::-;17007:4;17024:83;17033:12;:10;:12::i;:::-;17047:7;17056:50;17095:10;17056:11;:25;17068:12;:10;:12::i;:::-;-1:-1:-1;;;;;17056:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;17056:25:0;;;:34;;;;;;;;;;;:38;:50::i;14223:26::-;;;;:::o;17770:436::-;17860:7;17899;;17888;:18;;17880:62;;;;;-1:-1:-1;;;17880:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;17958:17;17953:246;;17993:15;18017:19;18028:7;18017:10;:19::i;:::-;-1:-1:-1;17992:44:0;;-1:-1:-1;18051:14:0;;-1:-1:-1;;;;;18051:14:0;17953:246;18100:23;18131:19;18142:7;18131:10;:19::i;:::-;-1:-1:-1;18098:52:0;;-1:-1:-1;18165:22:0;;-1:-1:-1;;;;;18165:22:0;14497:38;;;:::o;22093:156::-;5406:12;:10;:12::i;:::-;5396:6;;-1:-1:-1;;;;;5396:6:0;;;:22;;;5388:67;;;;;-1:-1:-1;;;5388:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;5388:67:0;;;;;;;;;;;;;;;22147:23:::1;22173:24;22191:4;22173:9;:24::i;:::-;22147:50;;22208:33;22225:15;22208:16;:33::i;:::-;5466:1;22093:156::o:0;19743:123::-;-1:-1:-1;;;;;19831:27:0;19807:4;19831:27;;;:18;:27;;;;;;;;;19743:123::o;28394:92::-;5406:12;:10;:12::i;:::-;5396:6;;-1:-1:-1;;;;;5396:6:0;;;:22;;;5388:67;;;;;-1:-1:-1;;;5388:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;5388:67:0;;;;;;;;;;;;;;;28462:7:::1;:16:::0;28394:92::o;14568:30::-;;;-1:-1:-1;;;14568:30:0;;;;;:::o;15907:198::-;-1:-1:-1;;;;;15997:20:0;;15973:7;15997:20;;;:11;:20;;;;;;;;15993:49;;;-1:-1:-1;;;;;;16026:16:0;;;;;;:7;:16;;;;;;16019:23;;15993:49;-1:-1:-1;;;;;16080:16:0;;;;;;:7;:16;;;;;;16060:37;;:19;:37::i;5481:148::-;5406:12;:10;:12::i;:::-;5396:6;;-1:-1:-1;;;;;5396:6:0;;;:22;;;5388:67;;;;;-1:-1:-1;;;5388:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;5388:67:0;;;;;;;;;;;;;;;5588:1:::1;5572:6:::0;;5551:40:::1;::::0;-1:-1:-1;;;;;5572:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;5551:40:0;5588:1;;5551:40:::1;5619:1;5602:19:::0;;-1:-1:-1;;;;;;5602:19:0::1;::::0;;5481:148::o;5271:79::-;5309:7;5336:6;-1:-1:-1;;;;;5336:6:0;5271:79;:::o;15624:87::-;15696:7;15689:14;;;;;;;;-1:-1:-1;;15689:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15663:13;;15689:14;;15696:7;;15689:14;;15696:7;15689:14;;;;;;;;;;;;;;;;;;;;;;;;17143:269;17236:4;17253:129;17262:12;:10;:12::i;:::-;17276:7;17285:96;17324:15;17285:96;;;;;;;;;;;;;;;;;:11;:25;17297:12;:10;:12::i;:::-;-1:-1:-1;;;;;17285:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;17285:25:0;;;:34;;;;;;;;;;;:96;:38;:96::i;6200:293::-;6252:14;;-1:-1:-1;;;;;6252:14:0;6270:10;6252:28;6244:76;;;;-1:-1:-1;;;6244:76:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6345:9;;6339:3;:15;6331:60;;;;;-1:-1:-1;;;6331:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;6436:14;;;6428:6;;6407:44;;-1:-1:-1;;;;;6436:14:0;;;;6428:6;;;;-1:-1:-1;;;;;;;;;;;6407:44:0;;6471:14;;;6462:23;;-1:-1:-1;;;;;;6462:23:0;-1:-1:-1;;;;;6471:14:0;;;6462:23;;;;;;6200:293::o;16111:167::-;16189:4;16206:42;16216:12;:10;:12::i;:::-;16230:9;16241:6;16206:9;:42::i;17534:137::-;5406:12;:10;:12::i;:::-;5396:6;;-1:-1:-1;;;;;5396:6:0;;;:22;;;5388:67;;;;;-1:-1:-1;;;5388:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;5388:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;17625:27:0;;;::::1;;::::0;;;:18:::1;:27;::::0;;;;:38;;-1:-1:-1;;17625:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17534:137::o;5885:89::-;5957:9;;5885:89;:::o;17418:110::-;-1:-1:-1;;;;;17500:20:0;17476:4;17500:20;;;:11;:20;;;;;;;;;17418:110::o;14257:29::-;;;;:::o;28492:104::-;5406:12;:10;:12::i;:::-;5396:6;;-1:-1:-1;;;;;5396:6:0;;;:22;;;5388:67;;;;;-1:-1:-1;;;5388:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;5388:67:0;;;;;;;;;;;;;;;28566:10:::1;:22:::0;28492:104::o;5980:214::-;5406:12;:10;:12::i;:::-;5396:6;;-1:-1:-1;;;;;5396:6:0;;;:22;;;5388:67;;;;;-1:-1:-1;;;5388:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;5388:67:0;;;;;;;;;;;;;;;6061:6:::1;::::0;;;6044:23;;-1:-1:-1;;;;;;6044:23:0;;::::1;-1:-1:-1::0;;;;;6061:6:0;::::1;6044:23;::::0;;;6078:19:::1;::::0;;6120:3:::1;:10:::0;::::1;6108:9;:22:::0;6146:40:::1;::::0;6061:6;;-1:-1:-1;;;;;;;;;;;6146:40:0;6061:6;;6146:40:::1;5980:214:::0;:::o;16284:143::-;-1:-1:-1;;;;;16392:18:0;;;16365:7;16392:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;16284:143::o;22419:98::-;5406:12;:10;:12::i;:::-;5396:6;;-1:-1:-1;;;;;5396:6:0;;;:22;;;5388:67;;;;;-1:-1:-1;;;5388:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;5388:67:0;;;;;;;;;;;;;;;22488:11:::1;:21:::0;;;::::1;;-1:-1:-1::0;;;22488:21:0::1;-1:-1:-1::0;;;;22488:21:0;;::::1;::::0;;;::::1;::::0;;22419:98::o;18471:443::-;5406:12;:10;:12::i;:::-;5396:6;;-1:-1:-1;;;;;5396:6:0;;;:22;;;5388:67;;;;;-1:-1:-1;;;5388:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;5388:67:0;;;;;;;;;;;;;;;18563:42:::1;-1:-1:-1::0;;;;;18552:53:0;::::1;;;18544:100;;;;-1:-1:-1::0;;;18544:100:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;18664:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;18663:21;18655:61;;;::::0;;-1:-1:-1;;;18655:61:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;18730:16:0;::::1;18749:1;18730:16:::0;;;:7:::1;:16;::::0;;;;;:20;18727:108:::1;;-1:-1:-1::0;;;;;18806:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;18786:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;18767:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;18727:108:::1;-1:-1:-1::0;;;;;18845:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;18845:27:0::1;18868:4;18845:27:::0;;::::1;::::0;;;18883:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;18883:23:0::1;::::0;;::::1;::::0;;18471:443::o;5635:244::-;5406:12;:10;:12::i;:::-;5396:6;;-1:-1:-1;;;;;5396:6:0;;;:22;;;5388:67;;;;;-1:-1:-1;;;5388:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;5388:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;5724:22:0;::::1;5716:73;;;;-1:-1:-1::0;;;5716:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5826:6;::::0;;5805:38:::1;::::0;-1:-1:-1;;;;;5805:38:0;;::::1;::::0;5826:6;::::1;::::0;-1:-1:-1;;;;;;;;;;;5805:38:0;::::1;5854:6;:17:::0;;-1:-1:-1;;;;;;5854:17:0::1;-1:-1:-1::0;;;;;5854:17:0;;;::::1;::::0;;;::::1;::::0;;5635:244::o;22255:158::-;5406:12;:10;:12::i;:::-;5396:6;;-1:-1:-1;;;;;5396:6:0;;;:22;;;5388:67;;;;;-1:-1:-1;;;5388:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;5388:67:0;;;;;;;;;;;;;;;22338:21:::1;22370:35;22338:21:::0;22370:15:::1;:35::i;28278:110::-:0;28359:21;28278:110;:::o;18920:478::-;5406:12;:10;:12::i;:::-;5396:6;;-1:-1:-1;;;;;5396:6:0;;;:22;;;5388:67;;;;;-1:-1:-1;;;5388:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;5388:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;19001:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;18993:60;;;::::0;;-1:-1:-1;;;18993:60:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;19069:9;19064:327;19088:9;:16:::0;19084:20;::::1;19064:327;;;19146:7;-1:-1:-1::0;;;;;19130:23:0::1;:9;19140:1;19130:12;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;19130:12:0::1;:23;19126:254;;;19189:9;19199:16:::0;;-1:-1:-1;;19199:20:0;;;19189:31;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;19174:9:::1;:12:::0;;-1:-1:-1;;;;;19189:31:0;;::::1;::::0;19184:1;;19174:12;::::1;;;;;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;19174:46:0::1;-1:-1:-1::0;;;;;19174:46:0;;::::1;;::::0;;19239:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;19278:11:::1;:20:::0;;;;:28;;-1:-1:-1;;19278:28:0::1;::::0;;19325:9:::1;:15:::0;;;::::1;;;;;::::0;;;::::1;::::0;;;;-1:-1:-1;;19325:15:0;;;;;-1:-1:-1;;;;;;19325:15:0::1;::::0;;;;;19359:5:::1;;19126:254;19106:3;;19064:327;;;;18920:478:::0;:::o;28602:142::-;5406:12;:10;:12::i;:::-;5396:6;;-1:-1:-1;;;;;5396:6:0;;;:22;;;5388:67;;;;;-1:-1:-1;;;5388:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;5388:67:0;;;;;;;;;;;;;;;28696:19:::1;:40:::0;;-1:-1:-1;;;;;;28696:40:0::1;-1:-1:-1::0;;;;;28696:40:0;;;::::1;::::0;;;::::1;::::0;;28602:142::o;29168:112::-;5406:12;:10;:12::i;:::-;5396:6;;-1:-1:-1;;;;;5396:6:0;;;:22;;;5388:67;;;;;-1:-1:-1;;;5388:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;5388:67:0;;;;;;;;;;;;;;;29221:51:::1;::::0;29229:10:::1;::::0;29250:21:::1;29221:51:::0;::::1;;;::::0;::::1;::::0;;;29250:21;29229:10;29221:51;::::1;;;;;;;;;;;;;::::0;::::1;;;;187:114:::0;279:10;187:114;:::o;19872:335::-;-1:-1:-1;;;;;19965:19:0;;19957:68;;;;-1:-1:-1;;;19957:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20044:21:0;;20036:68;;;;-1:-1:-1;;;20036:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20115:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;20167:32;;;;;;;;;;;;;;;;;19872:335;;;:::o;20213:1276::-;-1:-1:-1;;;;;20310:20:0;;20302:70;;;;-1:-1:-1;;;20302:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20391:23:0;;20383:71;;;;-1:-1:-1;;;20383:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20482:1;20473:6;:10;20465:64;;;;-1:-1:-1;;;20465:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20553:7;:5;:7::i;:::-;-1:-1:-1;;;;;20543:17:0;:6;-1:-1:-1;;;;;20543:17:0;;;:41;;;;;20577:7;:5;:7::i;:::-;-1:-1:-1;;;;;20564:20:0;:9;-1:-1:-1;;;;;20564:20:0;;;20543:41;20540:134;;;20617:12;;20607:6;:22;;20599:75;;;;-1:-1:-1;;;20599:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20685:28;20716:24;20734:4;20716:9;:24::i;:::-;20685:55;;20778:12;;20754:20;:36;20751:112;;-1:-1:-1;20839:12:0;;20751:112;20924:22;;20962:6;;20900:46;;;;;-1:-1:-1;;;20962:6:0;;;;20961:7;:22;;;;-1:-1:-1;20972:11:0;;-1:-1:-1;;;20972:11:0;;;;20961:22;:45;;;;;20987:19;20961:45;:72;;;;;21020:13;-1:-1:-1;;;;;21010:23:0;:6;-1:-1:-1;;;;;21010:23:0;;;20961:72;20957:322;;;21050:38;21067:20;21050:16;:38::i;:::-;21132:21;21171:22;;21168:100;;21214:38;21230:21;21214:15;:38::i;:::-;20957:322;;-1:-1:-1;;;;;21322:26:0;;21289:12;21322:26;;;:18;:26;;;;;;21304:4;;21322:26;;;:59;;-1:-1:-1;;;;;;21352:29:0;;;;;;:18;:29;;;;;;;;21322:59;21319:105;;;-1:-1:-1;21407:5:0;21319:105;21434:47;21449:6;21456:9;21466:6;21473:7;21434:14;:47::i;:::-;20213:1276;;;;;;:::o;1480:190::-;1566:7;1602:12;1594:6;;;;1586:29;;;;-1:-1:-1;;;1586:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1638:5:0;;;1480:190::o;27350:163::-;27391:7;27412:15;27429;27448:19;:17;:19::i;:::-;27411:56;;-1:-1:-1;27411:56:0;-1:-1:-1;27485:20:0;27411:56;;27485:11;:20::i;:::-;27478:27;;;;27350:163;:::o;1928:132::-;1986:7;2013:39;2017:1;2020;2013:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2006:46;1928:132;-1:-1:-1;;;1928:132:0:o;1153:179::-;1211:7;1243:5;;;1267:6;;;;1259:46;;;;;-1:-1:-1;;;1259:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;26170:467;26229:7;26238;26247;26256;26265;26274;26295:23;26320:12;26334:15;26353:41;26365:7;26374;;26383:10;;26353:11;:41::i;:::-;26294:100;;;;;;26405:19;26428:10;:8;:10::i;:::-;26405:33;;26450:15;26467:23;26492:12;26508:39;26520:7;26529:4;26535:11;26508;:39::i;:::-;26449:98;;-1:-1:-1;26449:98:0;-1:-1:-1;26449:98:0;-1:-1:-1;26598:15:0;;-1:-1:-1;26615:4:0;;-1:-1:-1;26621:7:0;;-1:-1:-1;;;;;26170:467:0;;;;;;;:::o;21495:482::-;14868:6;:13;;-1:-1:-1;;;;14868:13:0;-1:-1:-1;;;14868:13:0;;;21596:16:::1;::::0;;21610:1:::1;21596:16:::0;;;21572:21:::1;21596:16:::0;;::::1;::::0;;21572:21;21596:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;21596:16:0::1;21572:40;;21641:4;21623;21628:1;21623:7;;;;;;;;;;;;;:23;-1:-1:-1::0;;;;;21623:23:0::1;;;-1:-1:-1::0;;;;;21623:23:0::1;;;::::0;::::1;21667:15;-1:-1:-1::0;;;;;21667:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;21667:22:0;21657:7;;:4;;21662:1:::1;::::0;21657:7;::::1;;;;;;;;;;:32;-1:-1:-1::0;;;;;21657:32:0::1;;;-1:-1:-1::0;;;;;21657:32:0::1;;;::::0;::::1;21700:62;21717:4;21732:15;21750:11;21700:8;:62::i;:::-;21773:15;-1:-1:-1::0;;;;;21773:66:0::1;;21854:11;21880:1;21896:4;21923;21943:15;21773:196;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;21773:196:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;14904:6:0;:14;;-1:-1:-1;;;;14904:14:0;;;-1:-1:-1;;;;21495:482:0:o;21983:104::-;22043:19;;:36;;-1:-1:-1;;;;;22043:19:0;;;;:36;;;;;22072:6;;22043:19;:36;:19;:36;22072:6;22043:19;:36;;;;;;;;;;;;;;;;;;;22523:815;22635:7;22631:40;;22657:14;:12;:14::i;:::-;-1:-1:-1;;;;;22686:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;22710:22:0;;;;;;:11;:22;;;;;;;;22709:23;22686:46;22682:597;;;22749:48;22771:6;22779:9;22790:6;22749:21;:48::i;:::-;22682:597;;;-1:-1:-1;;;;;22820:19:0;;;;;;:11;:19;;;;;;;;22819:20;:46;;;;-1:-1:-1;;;;;;22843:22:0;;;;;;:11;:22;;;;;;;;22819:46;22815:464;;;22882:46;22902:6;22910:9;22921:6;22882:19;:46::i;22815:464::-;-1:-1:-1;;;;;22951:19:0;;;;;;:11;:19;;;;;;;;22950:20;:47;;;;-1:-1:-1;;;;;;22975:22:0;;;;;;:11;:22;;;;;;;;22974:23;22950:47;22946:333;;;23014:44;23032:6;23040:9;23051:6;23014:17;:44::i;22946:333::-;-1:-1:-1;;;;;23080:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;23103:22:0;;;;;;:11;:22;;;;;;;;23080:45;23076:203;;;23142:48;23164:6;23172:9;23183:6;23142:21;:48::i;23076:203::-;23223:44;23241:6;23249:9;23260:6;23223:17;:44::i;:::-;23293:7;23289:41;;23315:15;:13;:15::i;27519:561::-;27616:7;;27652;;27569;;;;;27676:289;27700:9;:16;27696:20;;27676:289;;;27766:7;27742;:21;27750:9;27760:1;27750:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27750:12:0;27742:21;;;;;;;;;;;;;:31;;:66;;;27801:7;27777;:21;27785:9;27795:1;27785:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27785:12:0;27777:21;;;;;;;;;;;;;:31;27742:66;27738:97;;;27818:7;;27827;;27810:25;;;;;;;;;27738:97;27860:34;27872:7;:21;27880:9;27890:1;27880:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27880:12:0;27872:21;;;;;;;;;;;;;27860:7;;:11;:34::i;:::-;27850:44;;27919:34;27931:7;:21;27939:9;27949:1;27939:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27939:12:0;27931:21;;;;;;;;;;;;;27919:7;;:11;:34::i;:::-;27909:44;-1:-1:-1;27718:3:0;;27676:289;;;-1:-1:-1;28001:7:0;;27989;;:20;;:11;:20::i;:::-;27979:7;:30;27975:61;;;28019:7;;28028;;28011:25;;;;;;;;27975:61;28055:7;;-1:-1:-1;28064:7:0;-1:-1:-1;27519:561:0;;;:::o;2066:189::-;2152:7;2187:12;2180:5;2172:28;;;;-1:-1:-1;;;2172:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2211:9;2227:1;2223;:5;;;;;;;2066:189;-1:-1:-1;;;;;2066:189:0:o;26643:361::-;26738:7;;;;26791:28;26815:3;26791:19;:7;26803:6;26791:11;:19::i;:::-;:23;;:28::i;:::-;26776:43;-1:-1:-1;26830:15:0;26848:31;26875:3;26848:22;:7;26860:9;26848:11;:22::i;:31::-;26830:49;-1:-1:-1;26890:23:0;26916:30;26830:49;26916:17;:7;26928:4;26916:11;:17::i;:::-;:21;;:30::i;:::-;26890:56;26982:4;;-1:-1:-1;26988:7:0;;-1:-1:-1;26643:361:0;;-1:-1:-1;;;;;26643:361:0:o;27010:334::-;27105:7;;;;27161:24;:7;27173:11;27161;:24::i;:::-;27143:42;-1:-1:-1;27196:12:0;27211:21;:4;27220:11;27211:8;:21::i;:::-;27196:36;-1:-1:-1;27243:23:0;27269:17;:7;27196:36;27269:11;:17::i;:::-;27305:7;;;;-1:-1:-1;27331:4:0;;-1:-1:-1;27010:334:0;;-1:-1:-1;;;;;27010:334:0:o;19404:213::-;19450:7;;:12;:31;;;;-1:-1:-1;19466:10:0;;:15;19450:31;19447:43;;;19483:7;;19447:43;19518:7;;;19500:15;:25;19552:10;;;19536:13;:26;-1:-1:-1;19573:11:0;;;;19595:14;19404:213;:::o;24432:558::-;24535:15;24552:23;24577:12;24591:23;24616:12;24630:15;24649:19;24660:7;24649:10;:19::i;:::-;-1:-1:-1;;;;;24697:15:0;;;;;;:7;:15;;;;;;24534:134;;-1:-1:-1;24534:134:0;;-1:-1:-1;24534:134:0;;-1:-1:-1;24534:134:0;-1:-1:-1;24534:134:0;-1:-1:-1;24534:134:0;-1:-1:-1;24697:28:0;;24717:7;24697:19;:28::i;:::-;-1:-1:-1;;;;;24679:15:0;;;;;;:7;:15;;;;;;;;:46;;;;24754:7;:15;;;;:28;;24774:7;24754:19;:28::i;:::-;-1:-1:-1;;;;;24736:15:0;;;;;;;:7;:15;;;;;;:46;;;;24814:18;;;;;;;:39;;24837:15;24814:22;:39::i;:::-;-1:-1:-1;;;;;24793:18:0;;;;;;:7;:18;;;;;:60;24865:20;24877:7;24865:11;:20::i;:::-;24899:23;24911:4;24917;24899:11;:23::i;:::-;24955:9;-1:-1:-1;;;;;24938:44:0;24947:6;-1:-1:-1;;;;;24938:44:0;;24966:15;24938:44;;;;;;;;;;;;;;;;;;24432:558;;;;;;;;;:::o;23845:581::-;23946:15;23963:23;23988:12;24002:23;24027:12;24041:15;24060:19;24071:7;24060:10;:19::i;:::-;-1:-1:-1;;;;;24108:15:0;;;;;;:7;:15;;;;;;23945:134;;-1:-1:-1;23945:134:0;;-1:-1:-1;23945:134:0;;-1:-1:-1;23945:134:0;-1:-1:-1;23945:134:0;-1:-1:-1;23945:134:0;-1:-1:-1;24108:28:0;;23945:134;24108:19;:28::i;:::-;-1:-1:-1;;;;;24090:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;24168:18;;;;;:7;:18;;;;;:39;;24191:15;24168:22;:39::i;:::-;-1:-1:-1;;;;;24147:18:0;;;;;;:7;:18;;;;;;;;:60;;;;24239:7;:18;;;;:39;;24262:15;24239:22;:39::i;23344:495::-;23443:15;23460:23;23485:12;23499:23;23524:12;23538:15;23557:19;23568:7;23557:10;:19::i;:::-;-1:-1:-1;;;;;23605:15:0;;;;;;:7;:15;;;;;;23442:134;;-1:-1:-1;23442:134:0;;-1:-1:-1;23442:134:0;;-1:-1:-1;23442:134:0;-1:-1:-1;23442:134:0;-1:-1:-1;23442:134:0;-1:-1:-1;23605:28:0;;23442:134;23605:19;:28::i;24996:637::-;25099:15;25116:23;25141:12;25155:23;25180:12;25194:15;25213:19;25224:7;25213:10;:19::i;:::-;-1:-1:-1;;;;;25261:15:0;;;;;;:7;:15;;;;;;25098:134;;-1:-1:-1;25098:134:0;;-1:-1:-1;25098:134:0;;-1:-1:-1;25098:134:0;-1:-1:-1;25098:134:0;-1:-1:-1;25098:134:0;-1:-1:-1;25261:28:0;;25281:7;25261:19;:28::i;:::-;-1:-1:-1;;;;;25243:15:0;;;;;;:7;:15;;;;;;;;:46;;;;25318:7;:15;;;;:28;;25338:7;25318:19;:28::i;19623:114::-;19677:15;;19667:7;:25;19716:13;;19703:10;:26;19623:114::o;1338:136::-;1396:7;1423:43;1427:1;1430;1423:43;;;;;;;;;;;;;;;;;:3;:43::i;1676:246::-;1734:7;1758:6;1754:47;;-1:-1:-1;1788:1:0;1781:8;;1754:47;1823:5;;;1827:1;1823;:5;:1;1847:5;;;;;:10;1839:56;;;;-1:-1:-1;;;1839:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25639:337;25696:19;25719:10;:8;:10::i;:::-;25696:33;-1:-1:-1;25740:15:0;25758:24;:7;25696:33;25758:11;:24::i;:::-;25834:4;25818:22;;;;:7;:22;;;;;;25740:42;;-1:-1:-1;25818:35:0;;25740:42;25818:26;:35::i;:::-;25809:4;25793:22;;;;:7;:22;;;;;;;;:60;;;;25867:11;:26;;;;;;25864:104;;;25949:4;25933:22;;;;:7;:22;;;;;;:35;;25960:7;25933:26;:35::i;:::-;25924:4;25908:22;;;;:7;:22;;;;;:60;25864:104;25639:337;;;:::o;25982:147::-;26060:7;;:17;;26072:4;26060:11;:17::i;:::-;26050:7;:27;26101:10;;:20;;26116:4;26101:14;:20::i;:::-;26088:10;:33;-1:-1:-1;;25982:147:0:o

Swarm Source

ipfs://a9932e52100d927a5a8446d577ae554f318d24a6506708dd4c331dc48dac5cb6
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.