ETH Price: $3,721.35 (+3.92%)

Token

ERC-20: Capitalism (CAP)
 

Overview

Max Total Supply

21,000,000 CAP

Holders

139

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
1.896205964837160919 CAP

Value
$0.00
0x4Cebb7dfC26fC1374AEaB9e7752b27FD84fcaC62
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:
Capitalism

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-10-31
*/

/**
 */
   /*/$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
   $                                                               $
   $               Capitalism Contract                             $
   $                                                               $
   $  "Bulls make money, Bears make money, Capitalist Win."   $
   $                                                               $
   $                      $.$     $$$     .$.                      $
   $                     $   $   $   $   $   $                     $
   $                      $.$     $$$     .$.                      $
   $                                                               $
   $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
*/

// SPDX-License-Identifier: MIT
 
pragma solidity 0.8.17;
pragma experimental ABIEncoderV2;
 
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
 
    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}
 

abstract contract Ownable is Context {
    address private _owner;
 
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );
 
    constructor() {
        _transferOwnership(_msgSender());
    }
 
    modifier onlyOwner() {
        _checkOwner();
        _;
    }
 
    function owner() public view virtual returns (address) {
        return _owner;
    }
 
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }
 
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }
 
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        _transferOwnership(newOwner);
    }
 
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}
 

interface IERC20 {
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     * Emits a {Transfer} event. Returns a boolean value indicating success.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the total number of tokens in circulation.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over caller's tokens.
     * Beware: changing an allowance might cause a race condition.
     * Emits an {Approval} event. Returns a boolean value indicating success.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` with allowance check.
     * Deducts `amount` from caller's allowance. Emits a {Transfer} event.
     * Returns a boolean value indicating success.
     */
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the number of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Returns the remaining tokens that `spender` can spend for `owner`.
     * Default is zero. Changes when {approve} or {transferFrom} is invoked.
     */
    function allowance(address owner, address spender) external view returns (uint256);
}

 
 
/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20MetadataExtension is IERC20 {
    
    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);
    
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);
 
    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}
 

contract ERC20 is Context, IERC20, IERC20MetadataExtension {
string private _name;
    string private _symbol;

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

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

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

    function transfer(address to, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

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

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

    function transferFrom(address from, address to, uint256 amount)
    public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }
        return true;
    }

    function _transfer(address from, address to, uint256 amount) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        _beforeTokenTransfer(from, to, amount);
        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
            _balances[to] += amount;
        }
        emit Transfer(from, to, amount);
        _afterTokenTransfer(from, to, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");
        _beforeTokenTransfer(address(0), account, amount);
        _totalSupply += amount;
        unchecked {
            _balances[account] += amount;
        }
        emit Transfer(address(0), account, amount);
        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");
        _beforeTokenTransfer(account, address(0), amount);
        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            _totalSupply -= amount;
        }
        emit Transfer(account, address(0), amount);
        _afterTokenTransfer(account, address(0), amount);
    }
    
    function _approve(
    address owner,
    address spender,
    uint256 amount
) internal virtual {
    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 _beforeTokenTransfer(
    address from,
    address to,
    uint256 amount
) internal virtual {}

function _spendAllowance(
    address owner,
    address spender,
    uint256 amount
) internal virtual {
    uint256 currentAllowance = allowance(owner, spender);
    if (currentAllowance != type(uint256).max) {
        require(
            currentAllowance >= amount,
            "ERC20: insufficient allowance"
        );
        unchecked {
            _approve(owner, spender, currentAllowance - amount);
        }
    }
}

function _afterTokenTransfer(
    address from,
    address to,
    uint256 amount
) internal virtual {}


}

 
/**
 * @dev Wrappers over Solidity's arithmetic operations.
 *
 * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler
 * now has built in overflow checking.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }
 
    /**
     * @dev Returns the subtraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }
 
    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }
 
    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }
 
    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b)
        internal
        pure
        returns (bool, uint256)
    {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }
 
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }
 
    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }
 
    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }
 
    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator.
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }
 
    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }
 
    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }
 
    /**
     * @dev Returns the integer division of two unsigned integers, reverting with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }
 
    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}
  
interface IUniswapV2Factory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint256
    );

    function feeTo() external view returns (address);
 
    function allPairsLength() external view returns (uint256);
 
    function getPair(address tokenA, address tokenB)
        external
        view
        returns (address pair);

    function feeToSetter() external view returns (address);
 
    function setFeeToSetter(address) external;

    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);

    function allPairs(uint256) external view returns (address pair);

    function setFeeTo(address) external;
}
  
interface IUniswapV2Router01 {
    function WETH() external pure returns (address);
    
    function factory() external pure returns (address);

    function getAmountsIn(uint256 amountOut, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);
    
    function quote(
        uint256 amountA,
        uint256 reserveA,
        uint256 reserveB
    ) external pure returns (uint256 amountB);
    
    function getAmountOut(
        uint256 amountIn,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountOut);

    function getAmountIn(
        uint256 amountOut,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountIn);

    function getAmountsOut(uint256 amountIn, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);

    function swapTokensForExactTokens(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);
    
    function swapExactTokensForTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA,
            uint256 amountB,
            uint256 liquidity
        );

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountA, uint256 amountB);

    function swapETHForExactTokens(
        uint256 amountOut,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function swapExactTokensForETH(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );

    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB);

    function swapTokensForExactETH(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function removeLiquidityETHWithPermit(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountToken, uint256 amountETH);

    function swapExactETHForTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);
}
 
 
interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountETH);
}
 
contract Capitalism is ERC20, Ownable {
    using SafeMath for uint256;

    bool public swapEnabled = false;
    bool private swapping;

    uint256 public maxTransactionAmount;
    uint256 private buyDevFee;
    uint256 public maxWallet;
    uint256 private tokensForMarketing;
    uint256 public buyTotalFees;
    uint256 private tokensForDevelopment;

    address public markWallet;
    address public devWallet;
    address public uniswapV2Pair;
    address public constant deadAddress = address(0xdead);
    address public burnsPartnershipsCEXWallet;

    uint256 private sellDevFee;
    uint256 public swapTokensAtAmount;
    uint256 private previousFee;
    uint256 private buyMarkFee;
    uint256 public sellTotalFees;
    uint256 private sellMarkFee;

    bool public tradingActive = false;

    IUniswapV2Router02 public immutable uniswapV2Router;

    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) private _isExcludedMaxTransactionAmount;
    mapping(address => bool) private automatedMarketMakerPairs;

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    event ExcludeFromFees(address indexed account, bool isExcluded);
    event marketingWalletUpdated(address indexed newWallet, address indexed oldWallet);
    event developmentWalletUpdated(address indexed newWallet, address indexed oldWallet);
 
 
    constructor(address _marketingWallet, address _developmentWallet, address _burnsPartnershipsCEXWallet) 
        ERC20(unicode"Capitalism", unicode"CAP") {

        uint256 totalSupply = 21_000_000 ether;

        // Set the router
        uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        _approve(address(this), address(uniswapV2Router), type(uint256).max);

        // Set maximum transaction and wallet limits
        maxTransactionAmount = (totalSupply) / 50;
        maxWallet = (totalSupply) / 50;

        // Set fee structures. Start at 10/30. Renounce at 0/0
        buyMarkFee = 5;
        buyDevFee = 5;
        sellMarkFee = 15;
        sellDevFee = 15;
        buyTotalFees = buyMarkFee + buyDevFee;
        sellTotalFees = sellMarkFee + sellDevFee;
        previousFee = sellTotalFees;

        swapTokensAtAmount = (totalSupply * 5) / 10000;

        // Set wallet addresses
        markWallet = _marketingWallet;
        devWallet = _developmentWallet;
        burnsPartnershipsCEXWallet = _burnsPartnershipsCEXWallet;

        // Exclude addresses from fees
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(markWallet, true);
        excludeFromFees(devWallet, true);
        excludeFromFees(burnsPartnershipsCEXWallet, true);
        excludeFromFees(deadAddress, true);

        // Exclude addresses from max transaction
        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(uniswapV2Router), true);
        excludeFromMaxTransaction(markWallet, true);
        excludeFromMaxTransaction(devWallet, true);
        excludeFromMaxTransaction(burnsPartnershipsCEXWallet, true);
        excludeFromMaxTransaction(deadAddress, true);

        // Minting token logic
        uint256 partnershipsPlusTokenAmount = (totalSupply * 50) / 100;
        uint256 contractAmount = totalSupply - partnershipsPlusTokenAmount;

        _mint(burnsPartnershipsCEXWallet, partnershipsPlusTokenAmount);
        _mint(address(this), contractAmount);
    }
 
    receive() external payable {}
 
    function burn(uint256 amount) external {
        _burn(msg.sender, amount);
    }
 
    function enableTrading() external onlyOwner {
        require(!tradingActive, "Trading already active.");

        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(
            address(this),
            uniswapV2Router.WETH()
        );

        uint256 tokensInWallet = balanceOf(address(this));

        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        
        _approve(address(this), address(uniswapV2Pair), type(uint256).max);
        IERC20(uniswapV2Pair).approve(
            address(uniswapV2Router),
            type(uint256).max
        );

        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            tokensInWallet, 
            0,
            0,
            owner(),
            block.timestamp
        );

        tradingActive = true;
        swapEnabled = true;
    }
    
    function updateSwapTokensAtAmount(uint256 newAmount)
        external
        onlyOwner
        returns (bool)
    {
        require(
            newAmount >= (totalSupply() * 1) / 100000,
            "ERC20: Swap amount cannot be lower than 0.001% total supply."
        );
        require(
            newAmount <= (totalSupply() * 5) / 1000,
            "ERC20: Swap amount cannot be higher than 0.5% total supply."
        );
        swapTokensAtAmount = newAmount;
        return true;
    }

    function updateMarketingWallet(address newMarketingWallet)
        external
        onlyOwner
    {
        require(newMarketingWallet != address(0), "ERC20: Address 0");
        address prevWallet = markWallet;
        markWallet = newMarketingWallet;
        emit marketingWalletUpdated(markWallet, prevWallet);
    }

    function updateDevelopmentWallet(address newDevelopmentWallet)
        external
        onlyOwner
    {
        require(newDevelopmentWallet != address(0), "ERC20: Address 0");
        address prevWallet = devWallet;
        devWallet = newDevelopmentWallet;
        emit developmentWalletUpdated(devWallet, prevWallet);
    }

    function updateBuyFees(
        uint256 _marketingFee,
        uint256 _developmentFee
    ) external onlyOwner {
        buyMarkFee = _marketingFee;
        buyDevFee = _developmentFee;
        buyTotalFees = buyMarkFee + buyDevFee;
        require(buyTotalFees <= 30, "ERC20: Must keep fees at 30% or less");
    }

    function updateSellFees(
        uint256 _marketingFee,
        uint256 _developmentFee
    ) external onlyOwner {
        sellMarkFee = _marketingFee;
        sellDevFee = _developmentFee;
        sellTotalFees = sellMarkFee + sellDevFee;
        previousFee = sellTotalFees;
        require(sellTotalFees <= 30, "ERC20: Must keep fees at 30% or less");
    }

    function updateMaxWalletAndTxnAmount(
        uint256 newTxAmount,
        uint256 newMaxWalletAmount
    ) external onlyOwner {
        require(
            newTxAmount >= ((totalSupply() * 5) / 1000),
            "ERC20: Cannot set maxTxn lower than 0.5%"
        );
        require(
            newMaxWalletAmount >= ((totalSupply() * 5) / 1000),
            "ERC20: Cannot set maxWallet lower than 0.5%"
        );
        maxWallet = newMaxWalletAmount;
        maxTransactionAmount = newTxAmount;
    }

    function excludeFromFees(address acc, bool isExcluded) public onlyOwner {
        _isExcludedFromFees[acc] = isExcluded;
        emit ExcludeFromFees(acc, isExcluded);
    }

    function excludeFromMaxTransaction(address accountAddr, bool isEx) public onlyOwner {
        _isExcludedMaxTransactionAmount[accountAddr] = isEx;
    }

    function withdrawStuckETH() public onlyOwner {
        bool success;
        (success, ) = address(msg.sender).call{value: address(this).balance}(
            ""
        );
    }
    function withdrawStuckTokens(address token) public onlyOwner {
        uint256 tokenAmount = IERC20(token).balanceOf(address(this));
        require(tokenAmount > 0, "No tokens");
        IERC20(token).transfer(msg.sender, tokenAmount);
    }

    function _setAutomatedMarketMakerPair(address pairAddr, bool val) private {
        automatedMarketMakerPairs[pairAddr] = val;
        emit SetAutomatedMarketMakerPair(pairAddr, val);
    }

    function isExcludedFromFees(address acc) public view returns (bool) {
        return _isExcludedFromFees[acc];
    }
    
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal override {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        if (amount == 0) {
            super._transfer(sender, recipient, 0);
            return;
        }

        bool isTrading = (sender != owner() && recipient != owner() && recipient != address(0) && recipient != deadAddress && !swapping);
        if (isTrading) {
            if (!tradingActive) {
                require(
                    _isExcludedFromFees[sender] || _isExcludedFromFees[recipient],
                    "ERC20: Trading is not active."
                );
            }
            
            bool isBuy = automatedMarketMakerPairs[sender] && !_isExcludedMaxTransactionAmount[recipient];
            bool isSell = automatedMarketMakerPairs[recipient] && !_isExcludedMaxTransactionAmount[sender];
            
            if (isBuy) {
                require(amount <= maxTransactionAmount, "ERC20: Buy transfer amount exceeds the maxTransactionAmount.");
                require(amount + balanceOf(recipient) <= maxWallet, "ERC20: Max wallet exceeded");
            } else if (isSell) {
                require(amount <= maxTransactionAmount, "ERC20: Sell transfer amount exceeds the maxTransactionAmount.");
            } else if (!_isExcludedMaxTransactionAmount[recipient]) {
                require(amount + balanceOf(recipient) <= maxWallet, "ERC20: Max wallet exceeded");
            }
        }

        uint256 tokensInContract = balanceOf(address(this));
        bool canSwapTokens = tokensInContract >= swapTokensAtAmount;

        if (canSwapTokens && swapEnabled && !swapping && !automatedMarketMakerPairs[sender] && !_isExcludedFromFees[sender] && !_isExcludedFromFees[recipient]) {
            swapping = true;
            swapBack();
            swapping = false;
        }

        bool applyFee = !swapping && (!_isExcludedFromFees[sender] || !_isExcludedFromFees[recipient]);
        uint256 totalFees = 0;

        if (applyFee) {
            uint256 feePercent = automatedMarketMakerPairs[recipient] ? sellTotalFees : (automatedMarketMakerPairs[sender] ? buyTotalFees : 0);
            if (feePercent > 0) {
                totalFees = amount.mul(feePercent).div(100);
                tokensForMarketing += (totalFees * (automatedMarketMakerPairs[recipient] ? sellMarkFee : buyMarkFee)) / feePercent;
                tokensForDevelopment += (totalFees * (automatedMarketMakerPairs[recipient] ? sellDevFee : buyDevFee)) / feePercent;

                super._transfer(sender, address(this), totalFees);
                amount -= totalFees;
            }
        }

        super._transfer(sender, recipient, amount);
        sellTotalFees = previousFee;
    }

    function swapTokensForEth(uint256 amount) private {
        address[] memory paths = new address[](2);
        paths[0] = address(this);
        paths[1] = uniswapV2Router.WETH();

        _approve(address(this), address(uniswapV2Router), amount);

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amount,
            0,
            paths,
            address(this),
            block.timestamp
        );
    }
 
    function swapBack() private {
        uint256 totalTokensToSwap = tokensForDevelopment + tokensForMarketing;
        bool success;

        uint256 contractTokenBalance = balanceOf(address(this));
        if (contractTokenBalance == 0 || totalTokensToSwap == 0) {
            return;
        }

        if (contractTokenBalance > swapTokensAtAmount * 20) {
            contractTokenBalance = swapTokensAtAmount * 20;
        }

        swapTokensForEth(contractTokenBalance);

        uint256 initialBalanceETH = address(this).balance;
        uint256 marketingETH = initialBalanceETH.mul(tokensForMarketing).div(totalTokensToSwap);

        tokensForDevelopment = 0;
        tokensForMarketing = 0;

        (success, ) = address(markWallet).call{value: marketingETH}("");
        (success, ) = address(devWallet).call{value: address(this).balance}("");
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"},{"internalType":"address","name":"_developmentWallet","type":"address"},{"internalType":"address","name":"_burnsPartnershipsCEXWallet","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":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","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":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"developmentWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"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":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burnsPartnershipsCEXWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"acc","type":"address"},{"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"accountAddr","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","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":"acc","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"markWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","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":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_developmentFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newDevelopmentWallet","type":"address"}],"name":"updateDevelopmentWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTxAmount","type":"uint256"},{"internalType":"uint256","name":"newMaxWalletAmount","type":"uint256"}],"name":"updateMaxWalletAndTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_developmentFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"withdrawStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526005805460ff60a01b191690556016805460ff191690553480156200002857600080fd5b5060405162002ffb38038062002ffb8339810160408190526200004b916200068a565b6040518060400160405280600a8152602001694361706974616c69736d60b01b8152506040518060400160405280600381526020016204341560ec1b81525081600090816200009b919062000778565b506001620000aa828262000778565b505050620000c7620000c16200032560201b60201c565b62000329565b737a250d5630b4cf539739df2c5dacb4c659f2488d60808190526a115eec47f6cf7e3500000090620000fe9030906000196200037b565b6200010b6032826200085a565b6006556200011b6032826200085a565b600855600560138190556007819055600f60158190556010556200014090806200087d565b600a556010546015546200015591906200087d565b60148190556012556127106200016d82600562000899565b6200017991906200085a565b601155600c80546001600160a01b03199081166001600160a01b0387811691909117909255600d80548216868416179055600f8054909116848316179055600554620001c891166001620004a7565b620001d5306001620004a7565b600c54620001ee906001600160a01b03166001620004a7565b600d5462000207906001600160a01b03166001620004a7565b600f5462000220906001600160a01b03166001620004a7565b6200022f61dead6001620004a7565b6200024e620002466005546001600160a01b031690565b600162000510565b6200025b30600162000510565b6080516200026b90600162000510565b600c5462000284906001600160a01b0316600162000510565b600d546200029d906001600160a01b0316600162000510565b600f54620002b6906001600160a01b0316600162000510565b620002c561dead600162000510565b60006064620002d683603262000899565b620002e291906200085a565b90506000620002f28284620008b3565b600f549091506200030d906001600160a01b03168362000545565b62000319308262000545565b505050505050620008c9565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038316620003e35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216620004465760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401620003da565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b620004b16200060a565b6001600160a01b038216600081815260176020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6200051a6200060a565b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b6001600160a01b0382166200059d5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620003da565b8060026000828254620005b191906200087d565b90915550506001600160a01b0382166000818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6005546001600160a01b03163314620006665760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620003da565b565b505050565b80516001600160a01b03811681146200068557600080fd5b919050565b600080600060608486031215620006a057600080fd5b620006ab846200066d565b9250620006bb602085016200066d565b9150620006cb604085016200066d565b90509250925092565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620006ff57607f821691505b6020821081036200072057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200066857600081815260208120601f850160051c810160208610156200074f5750805b601f850160051c820191505b8181101562000770578281556001016200075b565b505050505050565b81516001600160401b03811115620007945762000794620006d4565b620007ac81620007a58454620006ea565b8462000726565b602080601f831160018114620007e45760008415620007cb5750858301515b600019600386901b1c1916600185901b17855562000770565b600085815260208120601f198616915b828110156200081557888601518255948401946001909101908401620007f4565b5085821015620008345787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b6000826200087857634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111562000893576200089362000844565b92915050565b808202811582820484141762000893576200089362000844565b8181038181111562000893576200089362000844565b6080516126e562000916600039600081816102da0152818161098601528181610a1701528181610b8e01528181610c0f01528181612126015281816121df015261221b01526126e56000f3fe60806040526004361061023f5760003560e01c80638ea5220f1161012e578063cb963728116100ab578063e2f456051161006f578063e2f45605146106ce578063f023f573146106e4578063f2fde38b14610704578063f5648a4f14610724578063f8b45b051461073957600080fd5b8063cb96372814610638578063d257b34f14610658578063d85ba06314610678578063dd62ed3e1461068e578063e1d8b9f4146106ae57600080fd5b8063aacebbe3116100f2578063aacebbe3146105a8578063b170830e146105c8578063bbc0c742146105e8578063c024666814610602578063c8c8ebe41461062257600080fd5b80638ea5220f1461051357806395d89b41146105335780639618839914610548578063a457c2d714610568578063a9059cbb1461058857600080fd5b806349bd5a5e116101bc57806370a082311161018057806370a0823114610475578063715018a6146104ab5780637571336a146104c05780638a8c523c146104e05780638da5cb5b146104f557600080fd5b806349bd5a5e146103c55780634fbee193146103e557806366ca9b831461041e5780636a486a8e1461043e5780636ddd17131461045457600080fd5b806323b872dd1161020357806323b872dd1461033357806327c8f83514610353578063313ce56714610369578063395093511461038557806342966c68146103a557600080fd5b806302dbd8f81461024b57806306fdde031461026d578063095ea7b3146102985780631694505e146102c857806318160ddd1461031457600080fd5b3661024657005b600080fd5b34801561025757600080fd5b5061026b61026636600461228f565b61074f565b005b34801561027957600080fd5b506102826107a2565b60405161028f91906122b1565b60405180910390f35b3480156102a457600080fd5b506102b86102b3366004612314565b610834565b604051901515815260200161028f565b3480156102d457600080fd5b506102fc7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161028f565b34801561032057600080fd5b506002545b60405190815260200161028f565b34801561033f57600080fd5b506102b861034e366004612340565b61084e565b34801561035f57600080fd5b506102fc61dead81565b34801561037557600080fd5b506040516012815260200161028f565b34801561039157600080fd5b506102b86103a0366004612314565b610872565b3480156103b157600080fd5b5061026b6103c0366004612381565b610894565b3480156103d157600080fd5b50600e546102fc906001600160a01b031681565b3480156103f157600080fd5b506102b861040036600461239a565b6001600160a01b031660009081526017602052604090205460ff1690565b34801561042a57600080fd5b5061026b61043936600461228f565b6108a1565b34801561044a57600080fd5b5061032560145481565b34801561046057600080fd5b506005546102b890600160a01b900460ff1681565b34801561048157600080fd5b5061032561049036600461239a565b6001600160a01b031660009081526003602052604090205490565b3480156104b757600080fd5b5061026b6108e2565b3480156104cc57600080fd5b5061026b6104db3660046123c5565b6108f6565b3480156104ec57600080fd5b5061026b610929565b34801561050157600080fd5b506005546001600160a01b03166102fc565b34801561051f57600080fd5b50600d546102fc906001600160a01b031681565b34801561053f57600080fd5b50610282610d07565b34801561055457600080fd5b5061026b61056336600461228f565b610d16565b34801561057457600080fd5b506102b8610583366004612314565b610e2b565b34801561059457600080fd5b506102b86105a3366004612314565b610ea6565b3480156105b457600080fd5b5061026b6105c336600461239a565b610eb4565b3480156105d457600080fd5b50600c546102fc906001600160a01b031681565b3480156105f457600080fd5b506016546102b89060ff1681565b34801561060e57600080fd5b5061026b61061d3660046123c5565b610f56565b34801561062e57600080fd5b5061032560065481565b34801561064457600080fd5b5061026b61065336600461239a565b610fbd565b34801561066457600080fd5b506102b8610673366004612381565b6110e4565b34801561068457600080fd5b50610325600a5481565b34801561069a57600080fd5b506103256106a93660046123fe565b611224565b3480156106ba57600080fd5b50600f546102fc906001600160a01b031681565b3480156106da57600080fd5b5061032560115481565b3480156106f057600080fd5b5061026b6106ff36600461239a565b61124f565b34801561071057600080fd5b5061026b61071f36600461239a565b6112f1565b34801561073057600080fd5b5061026b611367565b34801561074557600080fd5b5061032560085481565b6107576113bc565b6015829055601081905561076b8183612442565b60148190556012819055601e101561079e5760405162461bcd60e51b815260040161079590612455565b60405180910390fd5b5050565b6060600080546107b190612499565b80601f01602080910402602001604051908101604052809291908181526020018280546107dd90612499565b801561082a5780601f106107ff5761010080835404028352916020019161082a565b820191906000526020600020905b81548152906001019060200180831161080d57829003601f168201915b5050505050905090565b600033610842818585611416565b60019150505b92915050565b60003361085c85828561153a565b6108678585856115ae565b506001949350505050565b6000336108428185856108858383611224565b61088f9190612442565b611416565b61089e3382611c5f565b50565b6108a96113bc565b601382905560078190556108bd8183612442565b600a819055601e101561079e5760405162461bcd60e51b815260040161079590612455565b6108ea6113bc565b6108f46000611d93565b565b6108fe6113bc565b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b6109316113bc565b60165460ff16156109845760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720616c7265616479206163746976652e0000000000000000006044820152606401610795565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0691906124d3565b6001600160a01b031663c9c65396307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a9791906124d3565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610ae4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0891906124d3565b600e80546001600160a01b0319166001600160a01b039290921691821790553060009081526003602052604090205490610b43906001611de5565b600e54610b5a906001600160a01b031660016108f6565b600e54610b749030906001600160a01b0316600019611416565b600e5460405163095ea7b360e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015260001960248301529091169063095ea7b3906044016020604051808303816000875af1158015610be8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c0c91906124f0565b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f305d719473084600080610c546005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610cbc573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ce1919061250d565b50506016805460ff1916600117905550506005805460ff60a01b1916600160a01b179055565b6060600180546107b190612499565b610d1e6113bc565b6103e8610d2a60025490565b610d3590600561253b565b610d3f9190612552565b821015610d9f5760405162461bcd60e51b815260206004820152602860248201527f45524332303a2043616e6e6f7420736574206d617854786e206c6f776572207460448201526768616e20302e352560c01b6064820152608401610795565b6103e8610dab60025490565b610db690600561253b565b610dc09190612552565b811015610e235760405162461bcd60e51b815260206004820152602b60248201527f45524332303a2043616e6e6f7420736574206d617857616c6c6574206c6f776560448201526a72207468616e20302e352560a81b6064820152608401610795565b600855600655565b60003381610e398286611224565b905083811015610e995760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610795565b6108678286868403611416565b6000336108428185856115ae565b610ebc6113bc565b6001600160a01b038116610f055760405162461bcd60e51b815260206004820152601060248201526f045524332303a204164647265737320360841b6044820152606401610795565b600c80546001600160a01b038381166001600160a01b03198316811790935560405191169182917fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567490600090a35050565b610f5e6113bc565b6001600160a01b038216600081815260176020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b610fc56113bc565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa15801561100c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110309190612574565b90506000811161106e5760405162461bcd60e51b81526020600482015260096024820152684e6f20746f6b656e7360b81b6044820152606401610795565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af11580156110bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110df91906124f0565b505050565b60006110ee6113bc565b620186a06110fb60025490565b61110690600161253b565b6111109190612552565b8210156111855760405162461bcd60e51b815260206004820152603c60248201527f45524332303a205377617020616d6f756e742063616e6e6f74206265206c6f7760448201527f6572207468616e20302e3030312520746f74616c20737570706c792e000000006064820152608401610795565b6103e861119160025490565b61119c90600561253b565b6111a69190612552565b82111561121b5760405162461bcd60e51b815260206004820152603b60248201527f45524332303a205377617020616d6f756e742063616e6e6f742062652068696760448201527f686572207468616e20302e352520746f74616c20737570706c792e00000000006064820152608401610795565b50601155600190565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b6112576113bc565b6001600160a01b0381166112a05760405162461bcd60e51b815260206004820152601060248201526f045524332303a204164647265737320360841b6044820152606401610795565b600d80546001600160a01b038381166001600160a01b03198316811790935560405191169182917ffaf1b77ed79f6e898c44dd8ab36b330c7b2fd39bcaab05ed6362480df870396590600090a35050565b6112f96113bc565b6001600160a01b03811661135e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610795565b61089e81611d93565b61136f6113bc565b604051600090339047908381818185875af1925050503d80600081146113b1576040519150601f19603f3d011682016040523d82523d6000602084013e6113b6565b606091505b50505050565b6005546001600160a01b031633146108f45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610795565b6001600160a01b0383166114785760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610795565b6001600160a01b0382166114d95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610795565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006115468484611224565b905060001981146113b657818110156115a15760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610795565b6113b68484848403611416565b6001600160a01b0383166115d45760405162461bcd60e51b81526004016107959061258d565b6001600160a01b0382166115fa5760405162461bcd60e51b8152600401610795906125d2565b8060000361160e576110df83836000611e39565b60006116226005546001600160a01b031690565b6001600160a01b0316846001600160a01b03161415801561165157506005546001600160a01b03848116911614155b801561166557506001600160a01b03831615155b801561167c57506001600160a01b03831661dead14155b80156116925750600554600160a81b900460ff16155b905080156119c35760165460ff1661172f576001600160a01b03841660009081526017602052604090205460ff16806116e357506001600160a01b03831660009081526017602052604090205460ff165b61172f5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a2054726164696e67206973206e6f74206163746976652e0000006044820152606401610795565b6001600160a01b03841660009081526019602052604081205460ff16801561177057506001600160a01b03841660009081526018602052604090205460ff16155b6001600160a01b0385166000908152601960205260408120549192509060ff1680156117b557506001600160a01b03861660009081526018602052604090205460ff16155b905081156118ae576006548411156118355760405162461bcd60e51b815260206004820152603c60248201527f45524332303a20427579207472616e7366657220616d6f756e7420657863656560448201527f647320746865206d61785472616e73616374696f6e416d6f756e742e000000006064820152608401610795565b6008546001600160a01b03861660009081526003602052604090205461185b9086612442565b11156118a95760405162461bcd60e51b815260206004820152601a60248201527f45524332303a204d61782077616c6c65742065786365656465640000000000006044820152606401610795565b6119c0565b801561192c576006548411156118a95760405162461bcd60e51b815260206004820152603d60248201527f45524332303a2053656c6c207472616e7366657220616d6f756e74206578636560448201527f65647320746865206d61785472616e73616374696f6e416d6f756e742e0000006064820152608401610795565b6001600160a01b03851660009081526018602052604090205460ff166119c0576008546001600160a01b0386166000908152600360205260409020546119729086612442565b11156119c05760405162461bcd60e51b815260206004820152601a60248201527f45524332303a204d61782077616c6c65742065786365656465640000000000006044820152606401610795565b50505b30600090815260036020526040902054601154811080159081906119f05750600554600160a01b900460ff165b8015611a065750600554600160a81b900460ff16155b8015611a2b57506001600160a01b03861660009081526019602052604090205460ff16155b8015611a5057506001600160a01b03861660009081526017602052604090205460ff16155b8015611a7557506001600160a01b03851660009081526017602052604090205460ff16155b15611aa3576005805460ff60a81b1916600160a81b179055611a95611f6a565b6005805460ff60a81b191690555b600554600090600160a81b900460ff16158015611afc57506001600160a01b03871660009081526017602052604090205460ff161580611afc57506001600160a01b03861660009081526017602052604090205460ff16155b905060008115611c44576001600160a01b03871660009081526019602052604081205460ff16611b55576001600160a01b03891660009081526019602052604090205460ff16611b4d576000611b59565b600a54611b59565b6014545b90508015611c4257611b766064611b7089846120b0565b906120c3565b6001600160a01b038916600090815260196020526040902054909250819060ff16611ba357601354611ba7565b6015545b611bb1908461253b565b611bbb9190612552565b60096000828254611bcc9190612442565b90915550506001600160a01b038816600090815260196020526040902054819060ff16611bfb57600754611bff565b6010545b611c09908461253b565b611c139190612552565b600b6000828254611c249190612442565b90915550611c359050893084611e39565b611c3f8288612615565b96505b505b611c4f888888611e39565b5050601254601455505050505050565b6001600160a01b038216611cbf5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610795565b6001600160a01b03821660009081526003602052604090205481811015611d335760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610795565b6001600160a01b03831660008181526003602090815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216600081815260196020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611e5f5760405162461bcd60e51b81526004016107959061258d565b6001600160a01b038216611e855760405162461bcd60e51b8152600401610795906125d2565b6001600160a01b03831660009081526003602052604090205481811015611efd5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610795565b6001600160a01b0380851660008181526003602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611f5d9086815260200190565b60405180910390a36113b6565b6000600954600b54611f7c9190612442565b3060009081526003602052604081205491925090801580611f9b575082155b15611fa557505050565b601154611fb390601461253b565b811115611fcb57601154611fc890601461253b565b90505b611fd4816120cf565b60004790506000611ff485611b70600954856120b090919063ffffffff16565b6000600b8190556009819055600c546040519293506001600160a01b031691839181818185875af1925050503d806000811461204c576040519150601f19603f3d011682016040523d82523d6000602084013e612051565b606091505b5050600d546040519195506001600160a01b0316904790600081818185875af1925050503d80600081146120a1576040519150601f19603f3d011682016040523d82523d6000602084013e6120a6565b606091505b5050505050505050565b60006120bc828461253b565b9392505050565b60006120bc8284612552565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061210457612104612628565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612182573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121a691906124d3565b816001815181106121b9576121b9612628565b60200260200101906001600160a01b031690816001600160a01b031681525050612204307f000000000000000000000000000000000000000000000000000000000000000084611416565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac9479061225990859060009086903090429060040161263e565b600060405180830381600087803b15801561227357600080fd5b505af1158015612287573d6000803e3d6000fd5b505050505050565b600080604083850312156122a257600080fd5b50508035926020909101359150565b600060208083528351808285015260005b818110156122de578581018301518582016040015282016122c2565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461089e57600080fd5b6000806040838503121561232757600080fd5b8235612332816122ff565b946020939093013593505050565b60008060006060848603121561235557600080fd5b8335612360816122ff565b92506020840135612370816122ff565b929592945050506040919091013590565b60006020828403121561239357600080fd5b5035919050565b6000602082840312156123ac57600080fd5b81356120bc816122ff565b801515811461089e57600080fd5b600080604083850312156123d857600080fd5b82356123e3816122ff565b915060208301356123f3816123b7565b809150509250929050565b6000806040838503121561241157600080fd5b823561241c816122ff565b915060208301356123f3816122ff565b634e487b7160e01b600052601160045260246000fd5b808201808211156108485761084861242c565b60208082526024908201527f45524332303a204d757374206b656570206665657320617420333025206f72206040820152636c65737360e01b606082015260800190565b600181811c908216806124ad57607f821691505b6020821081036124cd57634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156124e557600080fd5b81516120bc816122ff565b60006020828403121561250257600080fd5b81516120bc816123b7565b60008060006060848603121561252257600080fd5b8351925060208401519150604084015190509250925092565b80820281158282048414176108485761084861242c565b60008261256f57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561258657600080fd5b5051919050565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b818103818111156108485761084861242c565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561268e5784516001600160a01b031683529383019391830191600101612669565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212208bb81a9838a2724aab509c3bd6ab2c69d5b828cf09bf5a763083110f4a20179264736f6c63430008110033000000000000000000000000a593cf7b21fd9827cbea8cc7f0d1c3a927f614080000000000000000000000001e2a87d60c9b7524d70599c76e472ccb55e0336c00000000000000000000000083512d882cec151973ddf8898fc269ac67325f0b

Deployed Bytecode

0x60806040526004361061023f5760003560e01c80638ea5220f1161012e578063cb963728116100ab578063e2f456051161006f578063e2f45605146106ce578063f023f573146106e4578063f2fde38b14610704578063f5648a4f14610724578063f8b45b051461073957600080fd5b8063cb96372814610638578063d257b34f14610658578063d85ba06314610678578063dd62ed3e1461068e578063e1d8b9f4146106ae57600080fd5b8063aacebbe3116100f2578063aacebbe3146105a8578063b170830e146105c8578063bbc0c742146105e8578063c024666814610602578063c8c8ebe41461062257600080fd5b80638ea5220f1461051357806395d89b41146105335780639618839914610548578063a457c2d714610568578063a9059cbb1461058857600080fd5b806349bd5a5e116101bc57806370a082311161018057806370a0823114610475578063715018a6146104ab5780637571336a146104c05780638a8c523c146104e05780638da5cb5b146104f557600080fd5b806349bd5a5e146103c55780634fbee193146103e557806366ca9b831461041e5780636a486a8e1461043e5780636ddd17131461045457600080fd5b806323b872dd1161020357806323b872dd1461033357806327c8f83514610353578063313ce56714610369578063395093511461038557806342966c68146103a557600080fd5b806302dbd8f81461024b57806306fdde031461026d578063095ea7b3146102985780631694505e146102c857806318160ddd1461031457600080fd5b3661024657005b600080fd5b34801561025757600080fd5b5061026b61026636600461228f565b61074f565b005b34801561027957600080fd5b506102826107a2565b60405161028f91906122b1565b60405180910390f35b3480156102a457600080fd5b506102b86102b3366004612314565b610834565b604051901515815260200161028f565b3480156102d457600080fd5b506102fc7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b03909116815260200161028f565b34801561032057600080fd5b506002545b60405190815260200161028f565b34801561033f57600080fd5b506102b861034e366004612340565b61084e565b34801561035f57600080fd5b506102fc61dead81565b34801561037557600080fd5b506040516012815260200161028f565b34801561039157600080fd5b506102b86103a0366004612314565b610872565b3480156103b157600080fd5b5061026b6103c0366004612381565b610894565b3480156103d157600080fd5b50600e546102fc906001600160a01b031681565b3480156103f157600080fd5b506102b861040036600461239a565b6001600160a01b031660009081526017602052604090205460ff1690565b34801561042a57600080fd5b5061026b61043936600461228f565b6108a1565b34801561044a57600080fd5b5061032560145481565b34801561046057600080fd5b506005546102b890600160a01b900460ff1681565b34801561048157600080fd5b5061032561049036600461239a565b6001600160a01b031660009081526003602052604090205490565b3480156104b757600080fd5b5061026b6108e2565b3480156104cc57600080fd5b5061026b6104db3660046123c5565b6108f6565b3480156104ec57600080fd5b5061026b610929565b34801561050157600080fd5b506005546001600160a01b03166102fc565b34801561051f57600080fd5b50600d546102fc906001600160a01b031681565b34801561053f57600080fd5b50610282610d07565b34801561055457600080fd5b5061026b61056336600461228f565b610d16565b34801561057457600080fd5b506102b8610583366004612314565b610e2b565b34801561059457600080fd5b506102b86105a3366004612314565b610ea6565b3480156105b457600080fd5b5061026b6105c336600461239a565b610eb4565b3480156105d457600080fd5b50600c546102fc906001600160a01b031681565b3480156105f457600080fd5b506016546102b89060ff1681565b34801561060e57600080fd5b5061026b61061d3660046123c5565b610f56565b34801561062e57600080fd5b5061032560065481565b34801561064457600080fd5b5061026b61065336600461239a565b610fbd565b34801561066457600080fd5b506102b8610673366004612381565b6110e4565b34801561068457600080fd5b50610325600a5481565b34801561069a57600080fd5b506103256106a93660046123fe565b611224565b3480156106ba57600080fd5b50600f546102fc906001600160a01b031681565b3480156106da57600080fd5b5061032560115481565b3480156106f057600080fd5b5061026b6106ff36600461239a565b61124f565b34801561071057600080fd5b5061026b61071f36600461239a565b6112f1565b34801561073057600080fd5b5061026b611367565b34801561074557600080fd5b5061032560085481565b6107576113bc565b6015829055601081905561076b8183612442565b60148190556012819055601e101561079e5760405162461bcd60e51b815260040161079590612455565b60405180910390fd5b5050565b6060600080546107b190612499565b80601f01602080910402602001604051908101604052809291908181526020018280546107dd90612499565b801561082a5780601f106107ff5761010080835404028352916020019161082a565b820191906000526020600020905b81548152906001019060200180831161080d57829003601f168201915b5050505050905090565b600033610842818585611416565b60019150505b92915050565b60003361085c85828561153a565b6108678585856115ae565b506001949350505050565b6000336108428185856108858383611224565b61088f9190612442565b611416565b61089e3382611c5f565b50565b6108a96113bc565b601382905560078190556108bd8183612442565b600a819055601e101561079e5760405162461bcd60e51b815260040161079590612455565b6108ea6113bc565b6108f46000611d93565b565b6108fe6113bc565b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b6109316113bc565b60165460ff16156109845760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720616c7265616479206163746976652e0000000000000000006044820152606401610795565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0691906124d3565b6001600160a01b031663c9c65396307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a9791906124d3565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610ae4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0891906124d3565b600e80546001600160a01b0319166001600160a01b039290921691821790553060009081526003602052604090205490610b43906001611de5565b600e54610b5a906001600160a01b031660016108f6565b600e54610b749030906001600160a01b0316600019611416565b600e5460405163095ea7b360e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8116600483015260001960248301529091169063095ea7b3906044016020604051808303816000875af1158015610be8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c0c91906124f0565b507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663f305d719473084600080610c546005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610cbc573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ce1919061250d565b50506016805460ff1916600117905550506005805460ff60a01b1916600160a01b179055565b6060600180546107b190612499565b610d1e6113bc565b6103e8610d2a60025490565b610d3590600561253b565b610d3f9190612552565b821015610d9f5760405162461bcd60e51b815260206004820152602860248201527f45524332303a2043616e6e6f7420736574206d617854786e206c6f776572207460448201526768616e20302e352560c01b6064820152608401610795565b6103e8610dab60025490565b610db690600561253b565b610dc09190612552565b811015610e235760405162461bcd60e51b815260206004820152602b60248201527f45524332303a2043616e6e6f7420736574206d617857616c6c6574206c6f776560448201526a72207468616e20302e352560a81b6064820152608401610795565b600855600655565b60003381610e398286611224565b905083811015610e995760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610795565b6108678286868403611416565b6000336108428185856115ae565b610ebc6113bc565b6001600160a01b038116610f055760405162461bcd60e51b815260206004820152601060248201526f045524332303a204164647265737320360841b6044820152606401610795565b600c80546001600160a01b038381166001600160a01b03198316811790935560405191169182917fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567490600090a35050565b610f5e6113bc565b6001600160a01b038216600081815260176020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b610fc56113bc565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa15801561100c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110309190612574565b90506000811161106e5760405162461bcd60e51b81526020600482015260096024820152684e6f20746f6b656e7360b81b6044820152606401610795565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af11580156110bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110df91906124f0565b505050565b60006110ee6113bc565b620186a06110fb60025490565b61110690600161253b565b6111109190612552565b8210156111855760405162461bcd60e51b815260206004820152603c60248201527f45524332303a205377617020616d6f756e742063616e6e6f74206265206c6f7760448201527f6572207468616e20302e3030312520746f74616c20737570706c792e000000006064820152608401610795565b6103e861119160025490565b61119c90600561253b565b6111a69190612552565b82111561121b5760405162461bcd60e51b815260206004820152603b60248201527f45524332303a205377617020616d6f756e742063616e6e6f742062652068696760448201527f686572207468616e20302e352520746f74616c20737570706c792e00000000006064820152608401610795565b50601155600190565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b6112576113bc565b6001600160a01b0381166112a05760405162461bcd60e51b815260206004820152601060248201526f045524332303a204164647265737320360841b6044820152606401610795565b600d80546001600160a01b038381166001600160a01b03198316811790935560405191169182917ffaf1b77ed79f6e898c44dd8ab36b330c7b2fd39bcaab05ed6362480df870396590600090a35050565b6112f96113bc565b6001600160a01b03811661135e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610795565b61089e81611d93565b61136f6113bc565b604051600090339047908381818185875af1925050503d80600081146113b1576040519150601f19603f3d011682016040523d82523d6000602084013e6113b6565b606091505b50505050565b6005546001600160a01b031633146108f45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610795565b6001600160a01b0383166114785760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610795565b6001600160a01b0382166114d95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610795565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006115468484611224565b905060001981146113b657818110156115a15760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610795565b6113b68484848403611416565b6001600160a01b0383166115d45760405162461bcd60e51b81526004016107959061258d565b6001600160a01b0382166115fa5760405162461bcd60e51b8152600401610795906125d2565b8060000361160e576110df83836000611e39565b60006116226005546001600160a01b031690565b6001600160a01b0316846001600160a01b03161415801561165157506005546001600160a01b03848116911614155b801561166557506001600160a01b03831615155b801561167c57506001600160a01b03831661dead14155b80156116925750600554600160a81b900460ff16155b905080156119c35760165460ff1661172f576001600160a01b03841660009081526017602052604090205460ff16806116e357506001600160a01b03831660009081526017602052604090205460ff165b61172f5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a2054726164696e67206973206e6f74206163746976652e0000006044820152606401610795565b6001600160a01b03841660009081526019602052604081205460ff16801561177057506001600160a01b03841660009081526018602052604090205460ff16155b6001600160a01b0385166000908152601960205260408120549192509060ff1680156117b557506001600160a01b03861660009081526018602052604090205460ff16155b905081156118ae576006548411156118355760405162461bcd60e51b815260206004820152603c60248201527f45524332303a20427579207472616e7366657220616d6f756e7420657863656560448201527f647320746865206d61785472616e73616374696f6e416d6f756e742e000000006064820152608401610795565b6008546001600160a01b03861660009081526003602052604090205461185b9086612442565b11156118a95760405162461bcd60e51b815260206004820152601a60248201527f45524332303a204d61782077616c6c65742065786365656465640000000000006044820152606401610795565b6119c0565b801561192c576006548411156118a95760405162461bcd60e51b815260206004820152603d60248201527f45524332303a2053656c6c207472616e7366657220616d6f756e74206578636560448201527f65647320746865206d61785472616e73616374696f6e416d6f756e742e0000006064820152608401610795565b6001600160a01b03851660009081526018602052604090205460ff166119c0576008546001600160a01b0386166000908152600360205260409020546119729086612442565b11156119c05760405162461bcd60e51b815260206004820152601a60248201527f45524332303a204d61782077616c6c65742065786365656465640000000000006044820152606401610795565b50505b30600090815260036020526040902054601154811080159081906119f05750600554600160a01b900460ff165b8015611a065750600554600160a81b900460ff16155b8015611a2b57506001600160a01b03861660009081526019602052604090205460ff16155b8015611a5057506001600160a01b03861660009081526017602052604090205460ff16155b8015611a7557506001600160a01b03851660009081526017602052604090205460ff16155b15611aa3576005805460ff60a81b1916600160a81b179055611a95611f6a565b6005805460ff60a81b191690555b600554600090600160a81b900460ff16158015611afc57506001600160a01b03871660009081526017602052604090205460ff161580611afc57506001600160a01b03861660009081526017602052604090205460ff16155b905060008115611c44576001600160a01b03871660009081526019602052604081205460ff16611b55576001600160a01b03891660009081526019602052604090205460ff16611b4d576000611b59565b600a54611b59565b6014545b90508015611c4257611b766064611b7089846120b0565b906120c3565b6001600160a01b038916600090815260196020526040902054909250819060ff16611ba357601354611ba7565b6015545b611bb1908461253b565b611bbb9190612552565b60096000828254611bcc9190612442565b90915550506001600160a01b038816600090815260196020526040902054819060ff16611bfb57600754611bff565b6010545b611c09908461253b565b611c139190612552565b600b6000828254611c249190612442565b90915550611c359050893084611e39565b611c3f8288612615565b96505b505b611c4f888888611e39565b5050601254601455505050505050565b6001600160a01b038216611cbf5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610795565b6001600160a01b03821660009081526003602052604090205481811015611d335760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610795565b6001600160a01b03831660008181526003602090815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216600081815260196020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611e5f5760405162461bcd60e51b81526004016107959061258d565b6001600160a01b038216611e855760405162461bcd60e51b8152600401610795906125d2565b6001600160a01b03831660009081526003602052604090205481811015611efd5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610795565b6001600160a01b0380851660008181526003602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611f5d9086815260200190565b60405180910390a36113b6565b6000600954600b54611f7c9190612442565b3060009081526003602052604081205491925090801580611f9b575082155b15611fa557505050565b601154611fb390601461253b565b811115611fcb57601154611fc890601461253b565b90505b611fd4816120cf565b60004790506000611ff485611b70600954856120b090919063ffffffff16565b6000600b8190556009819055600c546040519293506001600160a01b031691839181818185875af1925050503d806000811461204c576040519150601f19603f3d011682016040523d82523d6000602084013e612051565b606091505b5050600d546040519195506001600160a01b0316904790600081818185875af1925050503d80600081146120a1576040519150601f19603f3d011682016040523d82523d6000602084013e6120a6565b606091505b5050505050505050565b60006120bc828461253b565b9392505050565b60006120bc8284612552565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061210457612104612628565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612182573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121a691906124d3565b816001815181106121b9576121b9612628565b60200260200101906001600160a01b031690816001600160a01b031681525050612204307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611416565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac9479061225990859060009086903090429060040161263e565b600060405180830381600087803b15801561227357600080fd5b505af1158015612287573d6000803e3d6000fd5b505050505050565b600080604083850312156122a257600080fd5b50508035926020909101359150565b600060208083528351808285015260005b818110156122de578581018301518582016040015282016122c2565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461089e57600080fd5b6000806040838503121561232757600080fd5b8235612332816122ff565b946020939093013593505050565b60008060006060848603121561235557600080fd5b8335612360816122ff565b92506020840135612370816122ff565b929592945050506040919091013590565b60006020828403121561239357600080fd5b5035919050565b6000602082840312156123ac57600080fd5b81356120bc816122ff565b801515811461089e57600080fd5b600080604083850312156123d857600080fd5b82356123e3816122ff565b915060208301356123f3816123b7565b809150509250929050565b6000806040838503121561241157600080fd5b823561241c816122ff565b915060208301356123f3816122ff565b634e487b7160e01b600052601160045260246000fd5b808201808211156108485761084861242c565b60208082526024908201527f45524332303a204d757374206b656570206665657320617420333025206f72206040820152636c65737360e01b606082015260800190565b600181811c908216806124ad57607f821691505b6020821081036124cd57634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156124e557600080fd5b81516120bc816122ff565b60006020828403121561250257600080fd5b81516120bc816123b7565b60008060006060848603121561252257600080fd5b8351925060208401519150604084015190509250925092565b80820281158282048414176108485761084861242c565b60008261256f57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561258657600080fd5b5051919050565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b818103818111156108485761084861242c565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561268e5784516001600160a01b031683529383019391830191600101612669565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212208bb81a9838a2724aab509c3bd6ab2c69d5b828cf09bf5a763083110f4a20179264736f6c63430008110033

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

000000000000000000000000a593cf7b21fd9827cbea8cc7f0d1c3a927f614080000000000000000000000001e2a87d60c9b7524d70599c76e472ccb55e0336c00000000000000000000000083512d882cec151973ddf8898fc269ac67325f0b

-----Decoded View---------------
Arg [0] : _marketingWallet (address): 0xA593cf7b21fD9827cBea8Cc7F0d1c3A927F61408
Arg [1] : _developmentWallet (address): 0x1e2A87D60c9b7524d70599C76E472CCB55E0336C
Arg [2] : _burnsPartnershipsCEXWallet (address): 0x83512d882cEc151973dDf8898fc269ac67325F0B

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000a593cf7b21fd9827cbea8cc7f0d1c3a927f61408
Arg [1] : 0000000000000000000000001e2a87d60c9b7524d70599c76e472ccb55e0336c
Arg [2] : 00000000000000000000000083512d882cec151973ddf8898fc269ac67325f0b


Deployed Bytecode Sourcemap

22813:12643:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29112:369;;;;;;;;;;-1:-1:-1;29112:369:0;;;;;:::i;:::-;;:::i;:::-;;4928:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5860:201;;;;;;;;;;-1:-1:-1;5860:201:0;;;;;:::i;:::-;;:::i;:::-;;;1441:14:1;;1434:22;1416:41;;1404:2;1389:18;5860:201:0;1276:187:1;23647:51:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1659:32:1;;;1641:51;;1629:2;1614:18;23647:51:0;1468:230:1;5249:108:0;;;;;;;;;;-1:-1:-1;5337:12:0;;5249:108;;;1849:25:1;;;1837:2;1822:18;5249:108:0;1703:177:1;6069:266:0;;;;;;;;;;-1:-1:-1;6069:266:0;;;;;:::i;:::-;;:::i;23284:53::-;;;;;;;;;;;;23330:6;23284:53;;5148:93;;;;;;;;;;-1:-1:-1;5148:93:0;;5231:2;2696:36:1;;2684:2;2669:18;5148:93:0;2554:184:1;6343:238:0;;;;;;;;;;-1:-1:-1;6343:238:0;;;;;:::i;:::-;;:::i;26510:83::-;;;;;;;;;;-1:-1:-1;26510:83:0;;;;;:::i;:::-;;:::i;23249:28::-;;;;;;;;;;-1:-1:-1;23249:28:0;;;;-1:-1:-1;;;;;23249:28:0;;;31008:118;;;;;;;;;;-1:-1:-1;31008:118:0;;;;;:::i;:::-;-1:-1:-1;;;;;31094:24:0;31070:4;31094:24;;;:19;:24;;;;;;;;;31008:118;28780:324;;;;;;;;;;-1:-1:-1;28780:324:0;;;;;:::i;:::-;;:::i;23534:28::-;;;;;;;;;;;;;;;;22893:31;;;;;;;;;;-1:-1:-1;22893:31:0;;;;-1:-1:-1;;;22893:31:0;;;;;;5365:127;;;;;;;;;;-1:-1:-1;5365:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;5466:18:0;5439:7;5466:18;;;:9;:18;;;;;;;5365:127;1710:103;;;;;;;;;;;;;:::i;30203:154::-;;;;;;;;;;-1:-1:-1;30203:154:0;;;;;:::i;:::-;;:::i;26602:970::-;;;;;;;;;;;;;:::i;1473:87::-;;;;;;;;;;-1:-1:-1;1546:6:0;;-1:-1:-1;;;;;1546:6:0;1473:87;;23218:24;;;;;;;;;;-1:-1:-1;23218:24:0;;;;-1:-1:-1;;;;;23218:24:0;;;5036:104;;;;;;;;;;;;;:::i;29489:522::-;;;;;;;;;;-1:-1:-1;29489:522:0;;;;;:::i;:::-;;:::i;6589:434::-;;;;;;;;;;-1:-1:-1;6589:434:0;;;;;:::i;:::-;;:::i;5500:193::-;;;;;;;;;;-1:-1:-1;5500:193:0;;;;;:::i;:::-;;:::i;28103:327::-;;;;;;;;;;-1:-1:-1;28103:327:0;;;;;:::i;:::-;;:::i;23186:25::-;;;;;;;;;;-1:-1:-1;23186:25:0;;;;-1:-1:-1;;;;;23186:25:0;;;23605:33;;;;;;;;;;-1:-1:-1;23605:33:0;;;;;;;;30019:176;;;;;;;;;;-1:-1:-1;30019:176:0;;;;;:::i;:::-;;:::i;22961:35::-;;;;;;;;;;;;;;;;30554:246;;;;;;;;;;-1:-1:-1;30554:246:0;;;;;:::i;:::-;;:::i;27584:511::-;;;;;;;;;;-1:-1:-1;27584:511:0;;;;;:::i;:::-;;:::i;23107:27::-;;;;;;;;;;;;;;;;5701:151;;;;;;;;;;-1:-1:-1;5701:151:0;;;;;:::i;:::-;;:::i;23344:41::-;;;;;;;;;;-1:-1:-1;23344:41:0;;;;-1:-1:-1;;;;;23344:41:0;;;23427:33;;;;;;;;;;;;;;;;28438:334;;;;;;;;;;-1:-1:-1;28438:334:0;;;;;:::i;:::-;;:::i;1822:238::-;;;;;;;;;;-1:-1:-1;1822:238:0;;;;;:::i;:::-;;:::i;30365:183::-;;;;;;;;;;;;;:::i;23035:24::-;;;;;;;;;;;;;;;;29112:369;1431:13;:11;:13::i;:::-;29239:11:::1;:27:::0;;;29277:10:::1;:28:::0;;;29332:24:::1;29290:15:::0;29253:13;29332:24:::1;:::i;:::-;29316:13;:40:::0;;;29367:11:::1;:27:::0;;;29430:2:::1;-1:-1:-1::0;29413:19:0::1;29405:68;;;;-1:-1:-1::0;;;29405:68:0::1;;;;;;;:::i;:::-;;;;;;;;;29112:369:::0;;:::o;4928:100::-;4982:13;5015:5;5008:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4928:100;:::o;5860:201::-;5943:4;993:10;5999:32;993:10;6015:7;6024:6;5999:8;:32::i;:::-;6049:4;6042:11;;;5860:201;;;;;:::o;6069:266::-;6171:4;993:10;6229:38;6245:4;993:10;6260:6;6229:15;:38::i;:::-;6278:27;6288:4;6294:2;6298:6;6278:9;:27::i;:::-;-1:-1:-1;6323:4:0;;6069:266;-1:-1:-1;;;;6069:266:0:o;6343:238::-;6431:4;993:10;6487:64;993:10;6503:7;6540:10;6512:25;993:10;6503:7;6512:9;:25::i;:::-;:38;;;;:::i;:::-;6487:8;:64::i;26510:83::-;26560:25;26566:10;26578:6;26560:5;:25::i;:::-;26510:83;:::o;28780:324::-;1431:13;:11;:13::i;:::-;28906:10:::1;:26:::0;;;28943:9:::1;:27:::0;;;28996:22:::1;28955:15:::0;28919:13;28996:22:::1;:::i;:::-;28981:12;:37:::0;;;29053:2:::1;-1:-1:-1::0;29037:18:0::1;29029:67;;;;-1:-1:-1::0;;;29029:67:0::1;;;;;;;:::i;1710:103::-:0;1431:13;:11;:13::i;:::-;1775:30:::1;1802:1;1775:18;:30::i;:::-;1710:103::o:0;30203:154::-;1431:13;:11;:13::i;:::-;-1:-1:-1;;;;;30298:44:0;;;::::1;;::::0;;;:31:::1;:44;::::0;;;;:51;;-1:-1:-1;;30298:51:0::1;::::0;::::1;;::::0;;;::::1;::::0;;30203:154::o;26602:970::-;1431:13;:11;:13::i;:::-;26666::::1;::::0;::::1;;26665:14;26657:50;;;::::0;-1:-1:-1;;;26657:50:0;;5337:2:1;26657:50:0::1;::::0;::::1;5319:21:1::0;5376:2;5356:18;;;5349:30;5415:25;5395:18;;;5388:53;5458:18;;26657:50:0::1;5135:347:1::0;26657:50:0::1;26754:15;-1:-1:-1::0;;;;;26754:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;26736:55:0::1;;26814:4;26834:15;-1:-1:-1::0;;;;;26834:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26736:131;::::0;-1:-1:-1;;;;;;26736:131:0::1;::::0;;;;;;-1:-1:-1;;;;;5973:15:1;;;26736:131:0::1;::::0;::::1;5955:34:1::0;6025:15;;6005:18;;;5998:43;5890:18;;26736:131:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26720:13;:147:::0;;-1:-1:-1;;;;;;26720:147:0::1;-1:-1:-1::0;;;;;26720:147:0;;;::::1;::::0;;::::1;::::0;;26923:4:::1;-1:-1:-1::0;5466:18:0;;;:9;:18;;;;;;;26942:58:::1;::::0;-1:-1:-1;26942:28:0::1;:58::i;:::-;27045:13;::::0;27011:55:::1;::::0;-1:-1:-1;;;;;27045:13:0::1;::::0;27011:25:::1;:55::i;:::-;27119:13;::::0;27087:66:::1;::::0;27104:4:::1;::::0;-1:-1:-1;;;;;27119:13:0::1;-1:-1:-1::0;;27087:8:0::1;:66::i;:::-;27171:13;::::0;27164:111:::1;::::0;-1:-1:-1;;;27164:111:0;;-1:-1:-1;;;;;27216:15:0::1;6244:32:1::0;;27164:111:0::1;::::0;::::1;6226:51:1::0;-1:-1:-1;;6293:18:1;;;6286:34;27171:13:0;;::::1;::::0;27164:29:::1;::::0;6199:18:1;;27164:111:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27288:15;-1:-1:-1::0;;;;;27288:31:0::1;;27327:21;27372:4;27392:14;27422:1;27438::::0;27454:7:::1;1546:6:::0;;-1:-1:-1;;;;;1546:6:0;;1473:87;27454:7:::1;27288:214;::::0;::::1;::::0;;;-1:-1:-1;;;;;;27288:214:0;;;-1:-1:-1;;;;;6940:15:1;;;27288:214:0::1;::::0;::::1;6922:34:1::0;6972:18;;;6965:34;;;;7015:18;;;7008:34;;;;7058:18;;;7051:34;7122:15;;;7101:19;;;7094:44;27476:15:0::1;7154:19:1::0;;;7147:35;6856:19;;27288:214:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;27515:13:0::1;:20:::0;;-1:-1:-1;;27515:20:0::1;27531:4;27515:20;::::0;;-1:-1:-1;;27546:11:0::1;:18:::0;;-1:-1:-1;;;;27546:18:0::1;-1:-1:-1::0;;;27546:18:0::1;::::0;;26602:970::o;5036:104::-;5092:13;5125:7;5118:14;;;;;:::i;29489:522::-;1431:13;:11;:13::i;:::-;29690:4:::1;29669:13;5337:12:::0;;;5249:108;29669:13:::1;:17;::::0;29685:1:::1;29669:17;:::i;:::-;29668:26;;;;:::i;:::-;29652:11;:43;;29630:133;;;::::0;-1:-1:-1;;;29630:133:0;;8101:2:1;29630:133:0::1;::::0;::::1;8083:21:1::0;8140:2;8120:18;;;8113:30;8179:34;8159:18;;;8152:62;-1:-1:-1;;;8230:18:1;;;8223:38;8278:19;;29630:133:0::1;7899:404:1::0;29630:133:0::1;29841:4;29820:13;5337:12:::0;;;5249:108;29820:13:::1;:17;::::0;29836:1:::1;29820:17;:::i;:::-;29819:26;;;;:::i;:::-;29796:18;:50;;29774:143;;;::::0;-1:-1:-1;;;29774:143:0;;8510:2:1;29774:143:0::1;::::0;::::1;8492:21:1::0;8549:2;8529:18;;;8522:30;8588:34;8568:18;;;8561:62;-1:-1:-1;;;8639:18:1;;;8632:41;8690:19;;29774:143:0::1;8308:407:1::0;29774:143:0::1;29928:9;:30:::0;29969:20:::1;:34:::0;29489:522::o;6589:434::-;6682:4;993:10;6682:4;6765:25;993:10;6782:7;6765:9;:25::i;:::-;6738:52;;6829:15;6809:16;:35;;6801:85;;;;-1:-1:-1;;;6801:85:0;;8922:2:1;6801:85:0;;;8904:21:1;8961:2;8941:18;;;8934:30;9000:34;8980:18;;;8973:62;-1:-1:-1;;;9051:18:1;;;9044:35;9096:19;;6801:85:0;8720:401:1;6801:85:0;6922:60;6931:5;6938:7;6966:15;6947:16;:34;6922:8;:60::i;5500:193::-;5579:4;993:10;5635:28;993:10;5652:2;5656:6;5635:9;:28::i;28103:327::-;1431:13;:11;:13::i;:::-;-1:-1:-1;;;;;28223:32:0;::::1;28215:61;;;::::0;-1:-1:-1;;;28215:61:0;;9328:2:1;28215:61:0::1;::::0;::::1;9310:21:1::0;9367:2;9347:18;;;9340:30;-1:-1:-1;;;9386:18:1;;;9379:46;9442:18;;28215:61:0::1;9126:340:1::0;28215:61:0::1;28308:10;::::0;;-1:-1:-1;;;;;28329:31:0;;::::1;-1:-1:-1::0;;;;;;28329:31:0;::::1;::::0;::::1;::::0;;;28376:46:::1;::::0;28308:10;::::1;::::0;;;28376:46:::1;::::0;28287:18:::1;::::0;28376:46:::1;28204:226;28103:327:::0;:::o;30019:176::-;1431:13;:11;:13::i;:::-;-1:-1:-1;;;;;30102:24:0;::::1;;::::0;;;:19:::1;:24;::::0;;;;;;;;:37;;-1:-1:-1;;30102:37:0::1;::::0;::::1;;::::0;;::::1;::::0;;;30155:32;;1416:41:1;;;30155:32:0::1;::::0;1389:18:1;30155:32:0::1;;;;;;;30019:176:::0;;:::o;30554:246::-;1431:13;:11;:13::i;:::-;30648:38:::1;::::0;-1:-1:-1;;;30648:38:0;;30680:4:::1;30648:38;::::0;::::1;1641:51:1::0;30626:19:0::1;::::0;-1:-1:-1;;;;;30648:23:0;::::1;::::0;::::1;::::0;1614:18:1;;30648:38:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30626:60;;30719:1;30705:11;:15;30697:37;;;::::0;-1:-1:-1;;;30697:37:0;;9862:2:1;30697:37:0::1;::::0;::::1;9844:21:1::0;9901:1;9881:18;;;9874:29;-1:-1:-1;;;9919:18:1;;;9912:39;9968:18;;30697:37:0::1;9660:332:1::0;30697:37:0::1;30745:47;::::0;-1:-1:-1;;;30745:47:0;;30768:10:::1;30745:47;::::0;::::1;6226:51:1::0;6293:18;;;6286:34;;;-1:-1:-1;;;;;30745:22:0;::::1;::::0;::::1;::::0;6199:18:1;;30745:47:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;30615:185;30554:246:::0;:::o;27584:511::-;27692:4;1431:13;:11;:13::i;:::-;27771:6:::1;27750:13;5337:12:::0;;;5249:108;27750:13:::1;:17;::::0;27766:1:::1;27750:17;:::i;:::-;27749:28;;;;:::i;:::-;27736:9;:41;;27714:151;;;::::0;-1:-1:-1;;;27714:151:0;;10199:2:1;27714:151:0::1;::::0;::::1;10181:21:1::0;10238:2;10218:18;;;10211:30;10277:34;10257:18;;;10250:62;10348:30;10328:18;;;10321:58;10396:19;;27714:151:0::1;9997:424:1::0;27714:151:0::1;27933:4;27912:13;5337:12:::0;;;5249:108;27912:13:::1;:17;::::0;27928:1:::1;27912:17;:::i;:::-;27911:26;;;;:::i;:::-;27898:9;:39;;27876:148;;;::::0;-1:-1:-1;;;27876:148:0;;10628:2:1;27876:148:0::1;::::0;::::1;10610:21:1::0;10667:2;10647:18;;;10640:30;10706:34;10686:18;;;10679:62;10777:29;10757:18;;;10750:57;10824:19;;27876:148:0::1;10426:423:1::0;27876:148:0::1;-1:-1:-1::0;28035:18:0::1;:30:::0;28083:4:::1;::::0;27584:511::o;5701:151::-;-1:-1:-1;;;;;5817:18:0;;;5790:7;5817:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;5701:151::o;28438:334::-;1431:13;:11;:13::i;:::-;-1:-1:-1;;;;;28562:34:0;::::1;28554:63;;;::::0;-1:-1:-1;;;28554:63:0;;9328:2:1;28554:63:0::1;::::0;::::1;9310:21:1::0;9367:2;9347:18;;;9340:30;-1:-1:-1;;;9386:18:1;;;9379:46;9442:18;;28554:63:0::1;9126:340:1::0;28554:63:0::1;28649:9;::::0;;-1:-1:-1;;;;;28669:32:0;;::::1;-1:-1:-1::0;;;;;;28669:32:0;::::1;::::0;::::1;::::0;;;28717:47:::1;::::0;28649:9;::::1;::::0;;;28717:47:::1;::::0;28628:18:::1;::::0;28717:47:::1;28543:229;28438:334:::0;:::o;1822:238::-;1431:13;:11;:13::i;:::-;-1:-1:-1;;;;;1925:22:0;::::1;1903:110;;;::::0;-1:-1:-1;;;1903:110:0;;11056:2:1;1903:110:0::1;::::0;::::1;11038:21:1::0;11095:2;11075:18;;;11068:30;11134:34;11114:18;;;11107:62;-1:-1:-1;;;11185:18:1;;;11178:36;11231:19;;1903:110:0::1;10854:402:1::0;1903:110:0::1;2024:28;2043:8;2024:18;:28::i;30365:183::-:0;1431:13;:11;:13::i;:::-;30458:82:::1;::::0;30421:12:::1;::::0;30466:10:::1;::::0;30490:21:::1;::::0;30421:12;30458:82;30421:12;30458:82;30490:21;30466:10;30458:82:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;30365:183:0:o;1569:132::-;1546:6;;-1:-1:-1;;;;;1546:6:0;993:10;1633:23;1625:68;;;;-1:-1:-1;;;1625:68:0;;11673:2:1;1625:68:0;;;11655:21:1;;;11692:18;;;11685:30;11751:34;11731:18;;;11724:62;11803:18;;1625:68:0;11471:356:1;8708:344:0;-1:-1:-1;;;;;8824:19:0;;8816:68;;;;-1:-1:-1;;;8816:68:0;;12034:2:1;8816:68:0;;;12016:21:1;12073:2;12053:18;;;12046:30;12112:34;12092:18;;;12085:62;-1:-1:-1;;;12163:18:1;;;12156:34;12207:19;;8816:68:0;11832:400:1;8816:68:0;-1:-1:-1;;;;;8899:21:0;;8891:68;;;;-1:-1:-1;;;8891:68:0;;12439:2:1;8891:68:0;;;12421:21:1;12478:2;12458:18;;;12451:30;12517:34;12497:18;;;12490:62;-1:-1:-1;;;12568:18:1;;;12561:32;12610:19;;8891:68:0;12237:398:1;8891:68:0;-1:-1:-1;;;;;8968:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9016:32;;1849:25:1;;;9016:32:0;;1822:18:1;9016:32:0;;;;;;;8708:344;;;:::o;9169:442::-;9284:24;9311:25;9321:5;9328:7;9311:9;:25::i;:::-;9284:52;;-1:-1:-1;;9347:16:0;:37;9343:265;;9439:6;9419:16;:26;;9397:105;;;;-1:-1:-1;;;9397:105:0;;12842:2:1;9397:105:0;;;12824:21:1;12881:2;12861:18;;;12854:30;12920:31;12900:18;;;12893:59;12969:18;;9397:105:0;12640:353:1;9397:105:0;9538:51;9547:5;9554:7;9582:6;9563:16;:25;9538:8;:51::i;31138:2951::-;-1:-1:-1;;;;;31279:20:0;;31271:70;;;;-1:-1:-1;;;31271:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;31360:23:0;;31352:71;;;;-1:-1:-1;;;31352:71:0;;;;;;;:::i;:::-;31440:6;31450:1;31440:11;31436:102;;31468:37;31484:6;31492:9;31503:1;31468:15;:37::i;31436:102::-;31550:14;31578:7;1546:6;;-1:-1:-1;;;;;1546:6:0;;1473:87;31578:7;-1:-1:-1;;;;;31568:17:0;:6;-1:-1:-1;;;;;31568:17:0;;;:41;;;;-1:-1:-1;1546:6:0;;-1:-1:-1;;;;;31589:20:0;;;1546:6;;31589:20;;31568:41;:68;;;;-1:-1:-1;;;;;;31613:23:0;;;;31568:68;:96;;;;-1:-1:-1;;;;;;31640:24:0;;23330:6;31640:24;;31568:96;:109;;;;-1:-1:-1;31669:8:0;;-1:-1:-1;;;31669:8:0;;;;31668:9;31568:109;31550:128;;31693:9;31689:1096;;;31724:13;;;;31719:219;;-1:-1:-1;;;;;31788:27:0;;;;;;:19;:27;;;;;;;;;:61;;-1:-1:-1;;;;;;31819:30:0;;;;;;:19;:30;;;;;;;;31788:61;31758:164;;;;-1:-1:-1;;;31758:164:0;;14010:2:1;31758:164:0;;;13992:21:1;14049:2;14029:18;;;14022:30;14088:31;14068:18;;;14061:59;14137:18;;31758:164:0;13808:353:1;31758:164:0;-1:-1:-1;;;;;31979:33:0;;31966:10;31979:33;;;:25;:33;;;;;;;;:80;;;;-1:-1:-1;;;;;;32017:42:0;;;;;;:31;:42;;;;;;;;32016:43;31979:80;-1:-1:-1;;;;;32088:36:0;;32074:11;32088:36;;;:25;:36;;;;;;31966:93;;-1:-1:-1;32074:11:0;32088:36;;:80;;;;-1:-1:-1;;;;;;32129:39:0;;;;;;:31;:39;;;;;;;;32128:40;32088:80;32074:94;;32201:5;32197:577;;;32245:20;;32235:6;:30;;32227:103;;;;-1:-1:-1;;;32227:103:0;;14368:2:1;32227:103:0;;;14350:21:1;14407:2;14387:18;;;14380:30;14446:34;14426:18;;;14419:62;14517:30;14497:18;;;14490:58;14565:19;;32227:103:0;14166:424:1;32227:103:0;32390:9;;-1:-1:-1;;;;;5466:18:0;;5439:7;5466:18;;;:9;:18;;;;;;32357:29;;:6;:29;:::i;:::-;:42;;32349:81;;;;-1:-1:-1;;;32349:81:0;;14797:2:1;32349:81:0;;;14779:21:1;14836:2;14816:18;;;14809:30;14875:28;14855:18;;;14848:56;14921:18;;32349:81:0;14595:350:1;32349:81:0;32197:577;;;32456:6;32452:322;;;32501:20;;32491:6;:30;;32483:104;;;;-1:-1:-1;;;32483:104:0;;15152:2:1;32483:104:0;;;15134:21:1;15191:2;15171:18;;;15164:30;15230:34;15210:18;;;15203:62;15301:31;15281:18;;;15274:59;15350:19;;32483:104:0;14950:425:1;32452:322:0;-1:-1:-1;;;;;32614:42:0;;;;;;:31;:42;;;;;;;;32609:165;;32718:9;;-1:-1:-1;;;;;5466:18:0;;5439:7;5466:18;;;:9;:18;;;;;;32685:29;;:6;:29;:::i;:::-;:42;;32677:81;;;;-1:-1:-1;;;32677:81:0;;14797:2:1;32677:81:0;;;14779:21:1;14836:2;14816:18;;;14809:30;14875:28;14855:18;;;14848:56;14921:18;;32677:81:0;14595:350:1;32677:81:0;31704:1081;;31689:1096;32842:4;32797:24;5466:18;;;:9;:18;;;;;;32900;;32880:38;;;;;;;32935:28;;-1:-1:-1;32952:11:0;;-1:-1:-1;;;32952:11:0;;;;32935:28;:41;;;;-1:-1:-1;32968:8:0;;-1:-1:-1;;;32968:8:0;;;;32967:9;32935:41;:79;;;;-1:-1:-1;;;;;;32981:33:0;;;;;;:25;:33;;;;;;;;32980:34;32935:79;:111;;;;-1:-1:-1;;;;;;33019:27:0;;;;;;:19;:27;;;;;;;;33018:28;32935:111;:146;;;;-1:-1:-1;;;;;;33051:30:0;;;;;;:19;:30;;;;;;;;33050:31;32935:146;32931:250;;;33098:8;:15;;-1:-1:-1;;;;33098:15:0;-1:-1:-1;;;33098:15:0;;;33128:10;:8;:10::i;:::-;33153:8;:16;;-1:-1:-1;;;;33153:16:0;;;32931:250;33210:8;;33193:13;;-1:-1:-1;;;33210:8:0;;;;33209:9;:78;;;;-1:-1:-1;;;;;;33224:27:0;;;;;;:19;:27;;;;;;;;33223:28;;:63;;-1:-1:-1;;;;;;33256:30:0;;;;;;:19;:30;;;;;;;;33255:31;33223:63;33193:94;;33298:17;33336:8;33332:657;;;-1:-1:-1;;;;;33382:36:0;;33361:18;33382:36;;;:25;:36;;;;;;;;:109;;-1:-1:-1;;;;;33438:33:0;;;;;;:25;:33;;;;;;;;:52;;33489:1;33382:109;;33438:52;33474:12;;33382:109;;;33421:13;;33382:109;33361:130;-1:-1:-1;33510:14:0;;33506:472;;33557:31;33584:3;33557:22;:6;33568:10;33557;:22::i;:::-;:26;;:31::i;:::-;-1:-1:-1;;;;;33643:36:0;;;;;;:25;:36;;;;;;33545:43;;-1:-1:-1;33711:10:0;;33643:36;;:63;;33696:10;;33643:63;;;33682:11;;33643:63;33630:77;;:9;:77;:::i;:::-;33629:92;;;;:::i;:::-;33607:18;;:114;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;33778:36:0;;;;;;:25;:36;;;;;;33844:10;;33778:36;;:61;;33830:9;;33778:61;;;33817:10;;33778:61;33765:75;;:9;:75;:::i;:::-;33764:90;;;;:::i;:::-;33740:20;;:114;;;;;;;:::i;:::-;;;;-1:-1:-1;33875:49:0;;-1:-1:-1;33891:6:0;33907:4;33914:9;33875:15;:49::i;:::-;33943:19;33953:9;33943:19;;:::i;:::-;;;33506:472;33346:643;33332:657;34001:42;34017:6;34025:9;34036:6;34001:15;:42::i;:::-;-1:-1:-1;;34070:11:0;;34054:13;:27;-1:-1:-1;;;;;;31138:2951:0:o;8109:587::-;-1:-1:-1;;;;;8193:21:0;;8185:67;;;;-1:-1:-1;;;8185:67:0;;15715:2:1;8185:67:0;;;15697:21:1;15754:2;15734:18;;;15727:30;15793:34;15773:18;;;15766:62;-1:-1:-1;;;15844:18:1;;;15837:31;15885:19;;8185:67:0;15513:397:1;8185:67:0;-1:-1:-1;;;;;8348:18:0;;8323:22;8348:18;;;:9;:18;;;;;;8385:24;;;;8377:71;;;;-1:-1:-1;;;8377:71:0;;16117:2:1;8377:71:0;;;16099:21:1;16156:2;16136:18;;;16129:30;16195:34;16175:18;;;16168:62;-1:-1:-1;;;16246:18:1;;;16239:32;16288:19;;8377:71:0;15915:398:1;8377:71:0;-1:-1:-1;;;;;8484:18:0;;;;;;:9;:18;;;;;;;;8505:23;;;8484:44;;8543:12;:22;;;;;;;8592:37;1849:25:1;;;8484:18:0;;;8592:37;;1822:18:1;8592:37:0;;;;;;;30745:47:::1;30615:185;30554:246:::0;:::o;2069:191::-;2162:6;;;-1:-1:-1;;;;;2179:17:0;;;-1:-1:-1;;;;;;2179:17:0;;;;;;;2212:40;;2162:6;;;2179:17;2162:6;;2212:40;;2143:16;;2212:40;2132:128;2069:191;:::o;30808:192::-;-1:-1:-1;;;;;30893:35:0;;;;;;:25;:35;;;;;;:41;;-1:-1:-1;;30893:41:0;;;;;;;;;;30950:42;;30893:41;;:35;30950:42;;;30808:192;;:::o;7031:633::-;-1:-1:-1;;;;;7128:18:0;;7120:68;;;;-1:-1:-1;;;7120:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7207:16:0;;7199:64;;;;-1:-1:-1;;;7199:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7345:15:0;;7323:19;7345:15;;;:9;:15;;;;;;7379:21;;;;7371:72;;;;-1:-1:-1;;;7371:72:0;;16520:2:1;7371:72:0;;;16502:21:1;16559:2;16539:18;;;16532:30;16598:34;16578:18;;;16571:62;-1:-1:-1;;;16649:18:1;;;16642:36;16695:19;;7371:72:0;16318:402:1;7371:72:0;-1:-1:-1;;;;;7479:15:0;;;;;;;:9;:15;;;;;;7497:20;;;7479:38;;7532:13;;;;;;;;;;:23;;;;;;7582:26;;;;;;7511:6;1849:25:1;;1837:2;1822:18;;1703:177;7582:26:0;;;;;;;;7619:37;30554:246;34570:883;34609:25;34660:18;;34637:20;;:41;;;;:::i;:::-;34763:4;34689:12;5466:18;;;:9;:18;;;;;;34609:69;;-1:-1:-1;34689:12:0;34784:25;;;:51;;-1:-1:-1;34813:22:0;;34784:51;34780:90;;;34852:7;;;34570:883::o;34780:90::-;34909:18;;:23;;34930:2;34909:23;:::i;:::-;34886:20;:46;34882:125;;;34972:18;;:23;;34993:2;34972:23;:::i;:::-;34949:46;;34882:125;35019:38;35036:20;35019:16;:38::i;:::-;35070:25;35098:21;35070:49;;35130:20;35153:64;35199:17;35153:41;35175:18;;35153:17;:21;;:41;;;;:::i;:64::-;35253:1;35230:20;:24;;;35265:18;:22;;;35322:10;;35314:49;;35130:87;;-1:-1:-1;;;;;;35322:10:0;;35130:87;;35314:49;35253:1;35314:49;35130:87;35322:10;35314:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;35396:9:0;;35388:57;;35300:63;;-1:-1:-1;;;;;;35396:9:0;;35419:21;;35388:57;;;;35419:21;35396:9;35388:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;34570:883:0:o;13195:98::-;13253:7;13280:5;13284:1;13280;:5;:::i;:::-;13273:12;13195:98;-1:-1:-1;;;13195:98:0:o;13595:::-;13653:7;13680:5;13684:1;13680;:5;:::i;34097:464::-;34183:16;;;34197:1;34183:16;;;;;;;;34158:22;;34183:16;;;;;;;;;;-1:-1:-1;34183:16:0;34158:41;;34229:4;34210:5;34216:1;34210:8;;;;;;;;:::i;:::-;;;;;;:24;-1:-1:-1;;;;;34210:24:0;;;-1:-1:-1;;;;;34210:24:0;;;;;34256:15;-1:-1:-1;;;;;34256:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34245:5;34251:1;34245:8;;;;;;;;:::i;:::-;;;;;;:33;-1:-1:-1;;;;;34245:33:0;;;-1:-1:-1;;;;;34245:33:0;;;;;34291:57;34308:4;34323:15;34341:6;34291:8;:57::i;:::-;34361:192;;-1:-1:-1;;;34361:192:0;;-1:-1:-1;;;;;34361:15:0;:66;;;;:192;;34442:6;;34463:1;;34479:5;;34507:4;;34527:15;;34361:192;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34147:414;34097:464;:::o;14:248:1:-;82:6;90;143:2;131:9;122:7;118:23;114:32;111:52;;;159:1;156;149:12;111:52;-1:-1:-1;;182:23:1;;;252:2;237:18;;;224:32;;-1:-1:-1;14:248:1:o;267:548::-;379:4;408:2;437;426:9;419:21;469:6;463:13;512:6;507:2;496:9;492:18;485:34;537:1;547:140;561:6;558:1;555:13;547:140;;;656:14;;;652:23;;646:30;622:17;;;641:2;618:26;611:66;576:10;;547:140;;;551:3;736:1;731:2;722:6;711:9;707:22;703:31;696:42;806:2;799;795:7;790:2;782:6;778:15;774:29;763:9;759:45;755:54;747:62;;;;267:548;;;;:::o;820:131::-;-1:-1:-1;;;;;895:31:1;;885:42;;875:70;;941:1;938;931:12;956:315;1024:6;1032;1085:2;1073:9;1064:7;1060:23;1056:32;1053:52;;;1101:1;1098;1091:12;1053:52;1140:9;1127:23;1159:31;1184:5;1159:31;:::i;:::-;1209:5;1261:2;1246:18;;;;1233:32;;-1:-1:-1;;;956:315:1:o;1885:456::-;1962:6;1970;1978;2031:2;2019:9;2010:7;2006:23;2002:32;1999:52;;;2047:1;2044;2037:12;1999:52;2086:9;2073:23;2105:31;2130:5;2105:31;:::i;:::-;2155:5;-1:-1:-1;2212:2:1;2197:18;;2184:32;2225:33;2184:32;2225:33;:::i;:::-;1885:456;;2277:7;;-1:-1:-1;;;2331:2:1;2316:18;;;;2303:32;;1885:456::o;2743:180::-;2802:6;2855:2;2843:9;2834:7;2830:23;2826:32;2823:52;;;2871:1;2868;2861:12;2823:52;-1:-1:-1;2894:23:1;;2743:180;-1:-1:-1;2743:180:1:o;2928:247::-;2987:6;3040:2;3028:9;3019:7;3015:23;3011:32;3008:52;;;3056:1;3053;3046:12;3008:52;3095:9;3082:23;3114:31;3139:5;3114:31;:::i;3180:118::-;3266:5;3259:13;3252:21;3245:5;3242:32;3232:60;;3288:1;3285;3278:12;3303:382;3368:6;3376;3429:2;3417:9;3408:7;3404:23;3400:32;3397:52;;;3445:1;3442;3435:12;3397:52;3484:9;3471:23;3503:31;3528:5;3503:31;:::i;:::-;3553:5;-1:-1:-1;3610:2:1;3595:18;;3582:32;3623:30;3582:32;3623:30;:::i;:::-;3672:7;3662:17;;;3303:382;;;;;:::o;3690:388::-;3758:6;3766;3819:2;3807:9;3798:7;3794:23;3790:32;3787:52;;;3835:1;3832;3825:12;3787:52;3874:9;3861:23;3893:31;3918:5;3893:31;:::i;:::-;3943:5;-1:-1:-1;4000:2:1;3985:18;;3972:32;4013:33;3972:32;4013:33;:::i;4083:127::-;4144:10;4139:3;4135:20;4132:1;4125:31;4175:4;4172:1;4165:15;4199:4;4196:1;4189:15;4215:125;4280:9;;;4301:10;;;4298:36;;;4314:18;;:::i;4345:400::-;4547:2;4529:21;;;4586:2;4566:18;;;4559:30;4625:34;4620:2;4605:18;;4598:62;-1:-1:-1;;;4691:2:1;4676:18;;4669:34;4735:3;4720:19;;4345:400::o;4750:380::-;4829:1;4825:12;;;;4872;;;4893:61;;4947:4;4939:6;4935:17;4925:27;;4893:61;5000:2;4992:6;4989:14;4969:18;4966:38;4963:161;;5046:10;5041:3;5037:20;5034:1;5027:31;5081:4;5078:1;5071:15;5109:4;5106:1;5099:15;4963:161;;4750:380;;;:::o;5487:251::-;5557:6;5610:2;5598:9;5589:7;5585:23;5581:32;5578:52;;;5626:1;5623;5616:12;5578:52;5658:9;5652:16;5677:31;5702:5;5677:31;:::i;6331:245::-;6398:6;6451:2;6439:9;6430:7;6426:23;6422:32;6419:52;;;6467:1;6464;6457:12;6419:52;6499:9;6493:16;6518:28;6540:5;6518:28;:::i;7193:306::-;7281:6;7289;7297;7350:2;7338:9;7329:7;7325:23;7321:32;7318:52;;;7366:1;7363;7356:12;7318:52;7395:9;7389:16;7379:26;;7445:2;7434:9;7430:18;7424:25;7414:35;;7489:2;7478:9;7474:18;7468:25;7458:35;;7193:306;;;;;:::o;7504:168::-;7577:9;;;7608;;7625:15;;;7619:22;;7605:37;7595:71;;7646:18;;:::i;7677:217::-;7717:1;7743;7733:132;;7787:10;7782:3;7778:20;7775:1;7768:31;7822:4;7819:1;7812:15;7850:4;7847:1;7840:15;7733:132;-1:-1:-1;7879:9:1;;7677:217::o;9471:184::-;9541:6;9594:2;9582:9;9573:7;9569:23;9565:32;9562:52;;;9610:1;9607;9600:12;9562:52;-1:-1:-1;9633:16:1;;9471:184;-1:-1:-1;9471:184:1:o;12998:401::-;13200:2;13182:21;;;13239:2;13219:18;;;13212:30;13278:34;13273:2;13258:18;;13251:62;-1:-1:-1;;;13344:2:1;13329:18;;13322:35;13389:3;13374:19;;12998:401::o;13404:399::-;13606:2;13588:21;;;13645:2;13625:18;;;13618:30;13684:34;13679:2;13664:18;;13657:62;-1:-1:-1;;;13750:2:1;13735:18;;13728:33;13793:3;13778:19;;13404:399::o;15380:128::-;15447:9;;;15468:11;;;15465:37;;;15482:18;;:::i;16857:127::-;16918:10;16913:3;16909:20;16906:1;16899:31;16949:4;16946:1;16939:15;16973:4;16970:1;16963:15;16989:980;17251:4;17299:3;17288:9;17284:19;17330:6;17319:9;17312:25;17356:2;17394:6;17389:2;17378:9;17374:18;17367:34;17437:3;17432:2;17421:9;17417:18;17410:31;17461:6;17496;17490:13;17527:6;17519;17512:22;17565:3;17554:9;17550:19;17543:26;;17604:2;17596:6;17592:15;17578:29;;17625:1;17635:195;17649:6;17646:1;17643:13;17635:195;;;17714:13;;-1:-1:-1;;;;;17710:39:1;17698:52;;17805:15;;;;17770:12;;;;17746:1;17664:9;17635:195;;;-1:-1:-1;;;;;;;17886:32:1;;;;17881:2;17866:18;;17859:60;-1:-1:-1;;;17950:3:1;17935:19;17928:35;17847:3;16989:980;-1:-1:-1;;;16989:980:1:o

Swarm Source

ipfs://8bb81a9838a2724aab509c3bd6ab2c69d5b828cf09bf5a763083110f4a201792
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.