ETH Price: $2,227.04 (-6.85%)

Token

ETHERPAD (ETHERPAD)
 

Overview

Max Total Supply

1,000,000,000 ETHERPAD

Holders

196

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
1,478,908.49123237 ETHERPAD

Value
$0.00
0xd0d7d2ab10c886230becc862529bd5b93e531bfe
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:
ETHERPAD

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-12-08
*/

/**

Website     : https://etherpad.io/
Telegram    : https://t.me/etherpadofficial
Twitter     : https://twitter.com/etherpadofc

*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;

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

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount)
        external
        returns (bool);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

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

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }

    function getTime() public view returns (uint256) {
        return block.timestamp;
    }
}

interface IUniswapV2Factory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint256
    );

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

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

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

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

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

    function name() external pure returns (string memory);

    function symbol() external pure returns (string memory);

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

    function balanceOf(address owner) external view returns (uint256);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 value) external returns (bool);

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    event Burn(
        address indexed sender,
        uint256 amount0,
        uint256 amount1,
        address indexed to
    );
    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (
            uint112 reserve0,
            uint112 reserve1,
            uint32 blockTimestampLast
        );

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function burn(address to)
        external
        returns (uint256 amount0, uint256 amount1);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

    function WETH() external pure returns (address);

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

    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 removeLiquidityETH(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountToken, uint256 amountETH);

    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 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 swapExactTokensForTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

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

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

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

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

    function swapETHForExactTokens(
        uint256 amountOut,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable 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 getAmountsIn(uint256 amountOut, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountETH);

    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 swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

contract ETHERPAD is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;

    string private _name = "ETHERPAD";
    string private _symbol = "ETHERPAD";
    uint8 private _decimals = 9;

    address payable public marketingWalletAddress =
        payable(0x979C64d3fBB6f19EB0294ccf4e76E8539c792d84);
    address payable public rndWalletAddress =
        payable(0xEeBdBbCC346d382cbbB79B425951C7DF79a19CD0);
    address public immutable deadAddress =
        0x000000000000000000000000000000000000dEaD;

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

    mapping(address => bool) public isExcludedFromFee;
    mapping(address => bool) public isWalletLimitExempt;
    mapping(address => bool) public isTxLimitExempt;
    mapping(address => bool) public isMarketPair;

    uint256 public _buyLiquidityFee = 0;
    uint256 public _buyMarketingFee = 20;
    uint256 public _buyRndFee = 10;

    uint256 public _sellLiquidityFee = 0;
    uint256 public _sellMarketingFee = 20;
    uint256 public _sellRndFee = 10;

    uint256 public _liquidityShare = 0;
    uint256 public _marketingShare = 7;
    uint256 public _rndShare = 3;

    uint256 public _totalTaxIfBuying = 30;
    uint256 public _totalTaxIfSelling = 30;
    uint256 public _totalDistributionShares = 10;

    uint256 private _totalSupply    = 1000000000* 10**_decimals;
    uint256 public _maxTxAmount     = 10000000 * 10**_decimals;
    uint256 public _walletMax       = 20000000 * 10**_decimals;
    uint256 private minimumTokensBeforeSwap = 10 * 10**_decimals;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapPair;

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public swapAndLiquifyByLimitOnly = false;
    bool public checkWalletLimit = true;

    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );

    event SwapETHForTokens(uint256 amountIn, address[] path);

    event SwapTokensForETH(uint256 amountIn, address[] path);

    modifier lockTheSwap() {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    constructor() {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(
            address(this),
            _uniswapV2Router.WETH()
        );

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

        isExcludedFromFee[owner()] = true;
        isExcludedFromFee[address(this)] = true;

        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(
            _buyRndFee
        );
        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(
            _sellRndFee
        );
        _totalDistributionShares = _liquidityShare.add(_marketingShare).add(
            _rndShare
        );

        isWalletLimitExempt[owner()] = true;
        isWalletLimitExempt[address(uniswapPair)] = true;
        isWalletLimitExempt[address(this)] = true;

        isTxLimitExempt[owner()] = true;
        isTxLimitExempt[address(this)] = true;

        isMarketPair[address(uniswapPair)] = true;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    function EtherpadSetFee(
        uint256 newBuyLiquidityTax,
        uint256 newBuyMarketingTax,
        uint256 newBuyRndTax,

        uint256 newSellLiquidityTax,
        uint256 newSellMarketingTax,
        uint256 newSellRndTax
    ) external onlyOwner {
        _buyLiquidityFee = newBuyLiquidityTax;
        _buyMarketingFee = newBuyMarketingTax;
        _buyRndFee = newBuyRndTax;

        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(
            _buyRndFee
        );

        _sellLiquidityFee = newSellLiquidityTax;
        _sellMarketingFee = newSellMarketingTax;
        _sellRndFee = newSellRndTax;

        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(
            _sellRndFee
        );
    }

    function setDistributionSettings(
        uint256 newLiquidityShare,
        uint256 newMarketingShare,
        uint256 newRndShare
    ) external onlyOwner {
        _liquidityShare = newLiquidityShare;
        _marketingShare = newMarketingShare;
        _rndShare = newRndShare;

        _totalDistributionShares = _liquidityShare.add(_marketingShare).add(
            _rndShare
        );
    }

    function EtherpadSetMax(uint256 maxTxAmount, uint256 MaxLimit) external onlyOwner {
        _maxTxAmount = maxTxAmount;
        _walletMax = MaxLimit;
    }

    function enableDisableWalletLimit(bool newValue) external onlyOwner {
        checkWalletLimit = newValue;
    }

    function EtherpadExludeMaxWallet(address holder, bool exempt)
        external
        onlyOwner
    {
        isWalletLimitExempt[holder] = exempt;
    }

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

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

    function EtherpadRndWallet(address newAddress) external onlyOwner {
        rndWalletAddress = payable(newAddress);
    }

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

    function setSwapAndLiquifyByLimitOnly(bool newValue) public onlyOwner {
        swapAndLiquifyByLimitOnly = newValue;
    }
    
    function EtherpadTransferTokenBalance(address _token, address _to, uint _value) external onlyOwner returns(bool _sent){
        if(_value == 0) {
            _value = IERC20(_token).balanceOf(address(this));
        } else {
            _sent = IERC20(_token).transfer(_to, _value);
        }
    }
    function EtherpadSwapBalance() external onlyOwner {
        uint balance = address(this).balance;
        payable(owner()).transfer(balance);
    }

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(deadAddress));
    }

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

    function changeRouterVersion(address newRouterAddress)
        public
        onlyOwner
        returns (address newPairAddress)
    {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            newRouterAddress
        );

        newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory()).getPair(
            address(this),
            _uniswapV2Router.WETH()
        );

        if (newPairAddress == address(0)) //Create If Doesnt exist
        {
            newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory())
                .createPair(address(this), _uniswapV2Router.WETH());
        }

        uniswapPair = newPairAddress; //Set new pair address
        uniswapV2Router = _uniswapV2Router; //Set new router address

        isWalletLimitExempt[address(uniswapPair)] = true;
        isMarketPair[address(uniswapPair)] = true;
    }

    //to recieve ETH from uniswapV2Router when swaping
    receive() external payable {}

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

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

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) private returns (bool) {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        if (inSwapAndLiquify) {
            return _basicTransfer(sender, recipient, amount);
        } else {
            if (!isTxLimitExempt[sender] && !isTxLimitExempt[recipient]) {
                require(
                    amount <= _maxTxAmount,
                    "Transfer amount exceeds the maxTxAmount."
                );
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >=
                minimumTokensBeforeSwap;

            if (
                overMinimumTokenBalance &&
                !inSwapAndLiquify &&
                !isMarketPair[sender] &&
                swapAndLiquifyEnabled
            ) {
                if (swapAndLiquifyByLimitOnly)
                    contractTokenBalance = minimumTokensBeforeSwap;
                swapAndLiquify(contractTokenBalance);
            }

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

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

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

            _balances[recipient] = _balances[recipient].add(finalAmount);

            emit Transfer(sender, recipient, finalAmount);
            return true;
        }
    }

    function _basicTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(
            amount,
            "Insufficient Balance"
        );
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function swapAndLiquify(uint256 tAmount) private lockTheSwap {
        uint256 tokensForLP = tAmount
            .mul(_liquidityShare)
            .div(_totalDistributionShares)
            .div(2);
        uint256 tokensForSwap = tAmount.sub(tokensForLP);

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

        uint256 totalETHFee = _totalDistributionShares.sub(
            _liquidityShare.div(2)
        );

        uint256 amountETHLiquidity = amountReceived
            .mul(_liquidityShare)
            .div(totalETHFee)
            .div(2);
        uint256 amountETHRnd = amountReceived.mul(_rndShare).div(totalETHFee);
        uint256 amountETHMarketing = amountReceived.sub(amountETHLiquidity).sub(
            amountETHRnd
        );

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

        if (amountETHRnd > 0)
            transferToAddressETH(rndWalletAddress, amountETHRnd);

        if (amountETHLiquidity > 0 && tokensForLP > 0)
            addLiquidity(tokensForLP, amountETHLiquidity);
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this), // The contract
            block.timestamp
        );

        emit SwapTokensForETH(tokenAmount, path);
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner(),
            block.timestamp
        );
    }

    function takeFee(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (uint256) {
        uint256 feeAmount = 0;

        if (isMarketPair[sender]) {
            feeAmount = amount.mul(_totalTaxIfBuying).div(100);
        } else if (isMarketPair[recipient]) {
            feeAmount = amount.mul(_totalTaxIfSelling).div(100);
        }

        if (feeAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
        }

        return amount.sub(feeAmount);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"EtherpadExcludeMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"EtherpadExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"EtherpadExludeMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"EtherpadMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"EtherpadRndWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newBuyMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newBuyRndTax","type":"uint256"},{"internalType":"uint256","name":"newSellLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newSellMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newSellRndTax","type":"uint256"}],"name":"EtherpadSetFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"},{"internalType":"uint256","name":"MaxLimit","type":"uint256"}],"name":"EtherpadSetMax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"EtherpadSwapBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"EtherpadTransferTokenBalance","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyRndFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_rndShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellRndFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalDistributionShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newRouterAddress","type":"address"}],"name":"changeRouterVersion","outputs":[{"internalType":"address","name":"newPairAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"enableDisableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwapAmount","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":"rndWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityShare","type":"uint256"},{"internalType":"uint256","name":"newMarketingShare","type":"uint256"},{"internalType":"uint256","name":"newRndShare","type":"uint256"}],"name":"setDistributionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setMarketPairStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setSwapAndLiquifyByLimitOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60e0604052600860a090815267115512115494105160c21b60c052600290620000299082620006fb565b50604080518082019091526008815267115512115494105160c21b6020820152600390620000589082620006fb565b506004805474979c64d3fbb6f19eb0294ccf4e76e8539c792d84096001600160a81b0319909116179055600580546001600160a01b03191673eebdbbcc346d382cbbb79b425951c7df79a19cd017905561dead6080526000600c8190556014600d819055600a600e819055600f83905560108290556011819055601292909255600760135560039055601e60158190556016556017819055620000fe90600990620008da565b6200010e90633b9aca00620008f2565b601855600454620001249060ff16600a620008da565b620001339062989680620008f2565b601955600454620001499060ff16600a620008da565b62000159906301312d00620008f2565b601a556004546200016f9060ff16600a620008da565b6200017c90600a620008f2565b601b55601d805462ffffff60a81b19166201000160a81b179055348015620001a357600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200023d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026391906200090c565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d791906200090c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000325573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034b91906200090c565b601d80546001600160a01b039283166001600160a01b031991821617909155601c8054928416929091168217905560185430600090815260076020908152604080832094835293905291822055600190600890620003b16000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff1995861617905530815260088352208054909216600117909155600e54600d54600c546200042793620004139290620016c7620005e7821b17901c565b620005e760201b620016c71790919060201c565b6015819055506200045260115462000413601054600f54620005e760201b620016c71790919060201c565b6016819055506200047d60145462000413601354601254620005e760201b620016c71790919060201c565b601755600160096000620004996000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055601d549091168152600990925280822080548416600190811790915530835290822080549093168117909255600a90620005096000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152600a8452828120805486166001908117909155601d549092168152600b90935290822080549093161790915560185490600690620005753390565b6001600160a01b03168152602081019190915260400160002055336001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601854604051620005d891815260200190565b60405180910390a3506200094d565b600080620005f6838562000937565b9050838110156200064d5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640160405180910390fd5b90505b92915050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200068157607f821691505b602082108103620006a257634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620006f657600081815260208120601f850160051c81016020861015620006d15750805b601f850160051c820191505b81811015620006f257828155600101620006dd565b5050505b505050565b81516001600160401b0381111562000717576200071762000656565b6200072f816200072884546200066c565b84620006a8565b602080601f8311600181146200076757600084156200074e5750858301515b600019600386901b1c1916600185901b178555620006f2565b600085815260208120601f198616915b82811015620007985788860151825594840194600190910190840162000777565b5085821015620007b75787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200081e578160001904821115620008025762000802620007c7565b808516156200081057918102915b93841c9390800290620007e2565b509250929050565b600082620008375750600162000650565b81620008465750600062000650565b81600181146200085f57600281146200086a576200088a565b600191505062000650565b60ff8411156200087e576200087e620007c7565b50506001821b62000650565b5060208310610133831016604e8410600b8410161715620008af575081810a62000650565b620008bb8383620007dd565b8060001904821115620008d257620008d2620007c7565b029392505050565b6000620008eb60ff84168362000826565b9392505050565b8082028115828204841417620006505762000650620007c7565b6000602082840312156200091f57600080fd5b81516001600160a01b03811681146200064d57600080fd5b80820180821115620006505762000650620007c7565b608051612814620009706000396000818161052d0152610e7e01526128146000f3fe6080604052600436106103855760003560e01c8063844d591c116101d1578063c49b9a8011610102578063da00097d116100a0578063f13d73391161006f578063f13d733914610a57578063f2ddc57614610a77578063f2fde38b14610a97578063f872858a14610ab757600080fd5b8063da00097d146109c4578063dc44b6a0146109e5578063dd62ed3e146109fb578063f0cd1dac14610a4157600080fd5b8063c816841b116100dc578063c816841b14610939578063c860795214610959578063c867d60b1461096f578063d158272d1461099f57600080fd5b8063c49b9a80146108ed578063c5d241891461090d578063c6b2d7b61461092357600080fd5b8063a073d37f1161016f578063a457c2d711610149578063a457c2d71461086d578063a5d69d1f1461088d578063a9059cbb146108ad578063c2d4640e146108cd57600080fd5b8063a073d37f1461082d578063a08e671f14610842578063a3370a5a1461085857600080fd5b80638da5cb5b116101ab5780638da5cb5b146107ba57806395d89b41146107d85780639a619738146107ed5780639f99e9bd1461080d57600080fd5b8063844d591c1461075457806388790a68146107745780638b42507f1461078a57600080fd5b806339509351116102b657806357a5802f1161025457806370a082311161022357806370a08231146106dc5780637d1db4a514610712578063807c2d9c1461072857806382eefb431461073e57600080fd5b806357a5802f146106705780635881f3ef1461068657806361a23c69146106a657806366e2ae46146106bc57600080fd5b80634428f105116102905780634428f105146105f65780634a74bb021461060c5780635342acb41461062d578063557ed1ba1461065d57600080fd5b806339509351146105865780633b97084a146105a65780633ecad271146105c657600080fd5b806318160ddd116103235780632563ae83116102fd5780632563ae83146104fb57806327c8f8351461051b5780632b112e491461054f578063313ce5671461056457600080fd5b806318160ddd146104a657806323b872dd146104bb578063246e2505146104db57600080fd5b806309c243671161035f57806309c243671461040c5780630a476b111461042e57806313674cd31461044e5780631694505e1461046e57600080fd5b806303d8e9541461039157806306fdde03146103ba578063095ea7b3146103dc57600080fd5b3661038c57005b600080fd5b34801561039d57600080fd5b506103a760145481565b6040519081526020015b60405180910390f35b3480156103c657600080fd5b506103cf610ad8565b6040516103b19190612351565b3480156103e857600080fd5b506103fc6103f73660046123b7565b610b6a565b60405190151581526020016103b1565b34801561041857600080fd5b5061042c6104273660046123f1565b610b81565b005b34801561043a57600080fd5b5061042c6104493660046123f1565b610bdf565b34801561045a57600080fd5b5061042c61046936600461242a565b610c34565b34801561047a57600080fd5b50601c5461048e906001600160a01b031681565b6040516001600160a01b0390911681526020016103b1565b3480156104b257600080fd5b506018546103a7565b3480156104c757600080fd5b506103fc6104d636600461246d565b610cac565b3480156104e757600080fd5b506103fc6104f636600461246d565b610d17565b34801561050757600080fd5b5061042c6105163660046124ae565b610e34565b34801561052757600080fd5b5061048e7f000000000000000000000000000000000000000000000000000000000000000081565b34801561055b57600080fd5b506103a7610e7c565b34801561057057600080fd5b5060045460405160ff90911681526020016103b1565b34801561059257600080fd5b506103fc6105a13660046123b7565b610ec6565b3480156105b257600080fd5b5061042c6105c13660046124cb565b610efc565b3480156105d257600080fd5b506103fc6105e13660046124e4565b600b6020526000908152604090205460ff1681565b34801561060257600080fd5b506103a760115481565b34801561061857600080fd5b50601d546103fc90600160a81b900460ff1681565b34801561063957600080fd5b506103fc6106483660046124e4565b60086020526000908152604090205460ff1681565b34801561066957600080fd5b50426103a7565b34801561067c57600080fd5b506103a760125481565b34801561069257600080fd5b5061048e6106a13660046124e4565b610f2b565b3480156106b257600080fd5b506103a760135481565b3480156106c857600080fd5b5061042c6106d7366004612501565b611263565b3480156106e857600080fd5b506103a76106f73660046124e4565b6001600160a01b031660009081526006602052604090205490565b34801561071e57600080fd5b506103a760195481565b34801561073457600080fd5b506103a7601a5481565b34801561074a57600080fd5b506103a760165481565b34801561076057600080fd5b5061042c61076f3660046123f1565b611298565b34801561078057600080fd5b506103a7600f5481565b34801561079657600080fd5b506103fc6107a53660046124e4565b600a6020526000908152604090205460ff1681565b3480156107c657600080fd5b506000546001600160a01b031661048e565b3480156107e457600080fd5b506103cf6112ed565b3480156107f957600080fd5b5061042c6108083660046124e4565b6112fc565b34801561081957600080fd5b5060055461048e906001600160a01b031681565b34801561083957600080fd5b50601b546103a7565b34801561084e57600080fd5b506103a760175481565b34801561086457600080fd5b5061042c611348565b34801561087957600080fd5b506103fc6108883660046123b7565b6113c1565b34801561089957600080fd5b5061042c6108a83660046124ae565b611410565b3480156108b957600080fd5b506103fc6108c83660046123b7565b611458565b3480156108d957600080fd5b5061042c6108e8366004612523565b611465565b3480156108f957600080fd5b5061042c6109083660046124ae565b6114b4565b34801561091957600080fd5b506103a7600d5481565b34801561092f57600080fd5b506103a7600e5481565b34801561094557600080fd5b50601d5461048e906001600160a01b031681565b34801561096557600080fd5b506103a760105481565b34801561097b57600080fd5b506103fc61098a3660046124e4565b60096020526000908152604090205460ff1681565b3480156109ab57600080fd5b5060045461048e9061010090046001600160a01b031681565b3480156109d057600080fd5b50601d546103fc90600160b01b900460ff1681565b3480156109f157600080fd5b506103a7600c5481565b348015610a0757600080fd5b506103a7610a1636600461254f565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b348015610a4d57600080fd5b506103a760155481565b348015610a6357600080fd5b5061042c610a723660046123f1565b611536565b348015610a8357600080fd5b5061042c610a923660046124e4565b61158b565b348015610aa357600080fd5b5061042c610ab23660046124e4565b6115dd565b348015610ac357600080fd5b50601d546103fc90600160b81b900460ff1681565b606060028054610ae79061257d565b80601f0160208091040260200160405190810160405280929190818152602001828054610b139061257d565b8015610b605780601f10610b3557610100808354040283529160200191610b60565b820191906000526020600020905b815481529060010190602001808311610b4357829003601f168201915b5050505050905090565b6000610b77338484611726565b5060015b92915050565b6000546001600160a01b03163314610bb45760405162461bcd60e51b8152600401610bab906125b7565b60405180910390fd5b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610c095760405162461bcd60e51b8152600401610bab906125b7565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610c5e5760405162461bcd60e51b8152600401610bab906125b7565b600c869055600d859055600e849055610c8184610c7b88886116c7565b906116c7565b601555600f83905560108290556011819055610ca181610c7b85856116c7565b601655505050505050565b6000610cb984848461184a565b50610d0c8433610d0785604051806060016040528060288152602001612792602891396001600160a01b038a1660009081526007602090815260408083203384529091529020549190611c19565b611726565b5060015b9392505050565b600080546001600160a01b03163314610d425760405162461bcd60e51b8152600401610bab906125b7565b81600003610db9576040516370a0823160e01b81523060048201526001600160a01b038516906370a0823190602401602060405180830381865afa158015610d8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db291906125ec565b9150610d10565b60405163a9059cbb60e01b81526001600160a01b0384811660048301526024820184905285169063a9059cbb906044016020604051808303816000875af1158015610e08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2c9190612605565b949350505050565b6000546001600160a01b03163314610e5e5760405162461bcd60e51b8152600401610bab906125b7565b601d8054911515600160b81b0260ff60b81b19909216919091179055565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316600090815260066020526040812054601854610ec191611c53565b905090565b3360008181526007602090815260408083206001600160a01b03871684529091528120549091610b77918590610d0790866116c7565b6000546001600160a01b03163314610f265760405162461bcd60e51b8152600401610bab906125b7565b601b55565b600080546001600160a01b03163314610f565760405162461bcd60e51b8152600401610bab906125b7565b6000829050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fbd9190612622565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561100a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102e9190612622565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611079573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109d9190612622565b91506001600160a01b0382166111f457806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110f9190612622565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561115c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111809190612622565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156111cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f19190612622565b91505b601d80546001600160a01b03199081166001600160a01b038581169182178455601c8054909316948116949094179091556000908152600960209081526040808320805460ff19908116600190811790925594549095168352600b909152902080549091169091179055919050565b6000546001600160a01b0316331461128d5760405162461bcd60e51b8152600401610bab906125b7565b601991909155601a55565b6000546001600160a01b031633146112c25760405162461bcd60e51b8152600401610bab906125b7565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b606060038054610ae79061257d565b6000546001600160a01b031633146113265760405162461bcd60e51b8152600401610bab906125b7565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146113725760405162461bcd60e51b8152600401610bab906125b7565b476113856000546001600160a01b031690565b6001600160a01b03166108fc829081150290604051600060405180830381858888f193505050501580156113bd573d6000803e3d6000fd5b5050565b6000610b773384610d07856040518060600160405280602581526020016127ba602591393360009081526007602090815260408083206001600160a01b038d1684529091529020549190611c19565b6000546001600160a01b0316331461143a5760405162461bcd60e51b8152600401610bab906125b7565b601d8054911515600160b01b0260ff60b01b19909216919091179055565b6000610d0c33848461184a565b6000546001600160a01b0316331461148f5760405162461bcd60e51b8152600401610bab906125b7565b6012839055601382905560148190556114ac81610c7b85856116c7565b601755505050565b6000546001600160a01b031633146114de5760405162461bcd60e51b8152600401610bab906125b7565b601d8054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061152b90831515815260200190565b60405180910390a150565b6000546001600160a01b031633146115605760405162461bcd60e51b8152600401610bab906125b7565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146115b55760405162461bcd60e51b8152600401610bab906125b7565b600480546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6000546001600160a01b031633146116075760405162461bcd60e51b8152600401610bab906125b7565b6001600160a01b03811661166c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610bab565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000806116d48385612655565b905083811015610d105760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610bab565b6001600160a01b0383166117885760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610bab565b6001600160a01b0382166117e95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610bab565b6001600160a01b0383811660008181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166118b05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610bab565b6001600160a01b0383166119125760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610bab565b601d54600160a01b900460ff16156119365761192f848484611c95565b9050610d10565b6001600160a01b0384166000908152600a602052604090205460ff1615801561197857506001600160a01b0383166000908152600a602052604090205460ff16155b156119e0576019548211156119e05760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610bab565b30600090815260066020526040902054601b5481108015908190611a0e5750601d54600160a01b900460ff16155b8015611a3357506001600160a01b0386166000908152600b602052604090205460ff16155b8015611a485750601d54600160a81b900460ff165b15611a6e57601d54600160b01b900460ff1615611a6557601b5491505b611a6e82611d7b565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038916600090815260069091529190912054611ac0918690611c19565b6001600160a01b038716600090815260066020908152604080832093909355600890529081205460ff1680611b0d57506001600160a01b03861660009081526008602052604090205460ff165b611b2157611b1c878787611eb6565b611b23565b845b601d54909150600160b81b900460ff168015611b5857506001600160a01b03861660009081526009602052604090205460ff16155b15611b8e57601a54611b8382610c7b896001600160a01b031660009081526006602052604090205490565b1115611b8e57600080fd5b6001600160a01b038616600090815260066020526040902054611bb190826116c7565b6001600160a01b0380881660008181526006602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611c059085815260200190565b60405180910390a360019350505050610d10565b60008184841115611c3d5760405162461bcd60e51b8152600401610bab9190612351565b506000611c4a8486612668565b95945050505050565b6000610d1083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c19565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600690915291822054611ce6918490611c19565b6001600160a01b038086166000908152600660205260408082209390935590851681522054611d1590836116c7565b6001600160a01b0380851660008181526006602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611d699086815260200190565b60405180910390a35060019392505050565b601d805460ff60a01b1916600160a01b179055601754601254600091611db191600291611dab9182908790611fbc565b9061203e565b90506000611dbf8383611c53565b9050611dca81612080565b6012544790600090611dea90611de190600261203e565b60175490611c53565b90506000611e0c6002611dab84611dab60125488611fbc90919063ffffffff16565b90506000611e2983611dab60145487611fbc90919063ffffffff16565b90506000611e4182611e3b8786611c53565b90611c53565b90508015611e6457600454611e649061010090046001600160a01b031682612213565b8115611e8057600554611e80906001600160a01b031683612213565b600083118015611e905750600087115b15611e9f57611e9f878461224e565b5050601d805460ff60a01b19169055505050505050565b6001600160a01b0383166000908152600b6020526040812054819060ff1615611efa57611ef36064611dab60155486611fbc90919063ffffffff16565b9050611f38565b6001600160a01b0384166000908152600b602052604090205460ff1615611f3857611f356064611dab60165486611fbc90919063ffffffff16565b90505b8015611fb25730600090815260066020526040902054611f5890826116c7565b30600081815260066020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611fa99085815260200190565b60405180910390a35b611c4a8382611c53565b600082600003611fce57506000610b7b565b6000611fda838561267b565b905082611fe78583612692565b14610d105760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610bab565b6000610d1083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612323565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106120b5576120b56126b4565b6001600160a01b03928316602091820292909201810191909152601c54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561210e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121329190612622565b81600181518110612145576121456126b4565b6001600160a01b039283166020918202929092010152601c5461216b9130911684611726565b601c5460405163791ac94760e01b81526001600160a01b039091169063791ac947906121a490859060009086903090429060040161270e565b600060405180830381600087803b1580156121be57600080fd5b505af11580156121d2573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a7828260405161220792919061274a565b60405180910390a15050565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015612249573d6000803e3d6000fd5b505050565b601c546122669030906001600160a01b031684611726565b601c546001600160a01b031663f305d71982308560008061228f6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156122f7573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061231c9190612763565b5050505050565b600081836123445760405162461bcd60e51b8152600401610bab9190612351565b506000611c4a8486612692565b600060208083528351808285015260005b8181101561237e57858101830151858201604001528201612362565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146123b457600080fd5b50565b600080604083850312156123ca57600080fd5b82356123d58161239f565b946020939093013593505050565b80151581146123b457600080fd5b6000806040838503121561240457600080fd5b823561240f8161239f565b9150602083013561241f816123e3565b809150509250929050565b60008060008060008060c0878903121561244357600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b60008060006060848603121561248257600080fd5b833561248d8161239f565b9250602084013561249d8161239f565b929592945050506040919091013590565b6000602082840312156124c057600080fd5b8135610d10816123e3565b6000602082840312156124dd57600080fd5b5035919050565b6000602082840312156124f657600080fd5b8135610d108161239f565b6000806040838503121561251457600080fd5b50508035926020909101359150565b60008060006060848603121561253857600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561256257600080fd5b823561256d8161239f565b9150602083013561241f8161239f565b600181811c9082168061259157607f821691505b6020821081036125b157634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000602082840312156125fe57600080fd5b5051919050565b60006020828403121561261757600080fd5b8151610d10816123e3565b60006020828403121561263457600080fd5b8151610d108161239f565b634e487b7160e01b600052601160045260246000fd5b80820180821115610b7b57610b7b61263f565b81810381811115610b7b57610b7b61263f565b8082028115828204841417610b7b57610b7b61263f565b6000826126af57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b838110156127035781516001600160a01b0316875295820195908201906001016126de565b509495945050505050565b85815284602082015260a06040820152600061272d60a08301866126ca565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201526000610e2c60408301846126ca565b60008060006060848603121561277857600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122067f24ea3f6118edff878bdfbed21f5f206e23f0aba6e1f5f75d32228b886cbdf64736f6c63430008120033

Deployed Bytecode

0x6080604052600436106103855760003560e01c8063844d591c116101d1578063c49b9a8011610102578063da00097d116100a0578063f13d73391161006f578063f13d733914610a57578063f2ddc57614610a77578063f2fde38b14610a97578063f872858a14610ab757600080fd5b8063da00097d146109c4578063dc44b6a0146109e5578063dd62ed3e146109fb578063f0cd1dac14610a4157600080fd5b8063c816841b116100dc578063c816841b14610939578063c860795214610959578063c867d60b1461096f578063d158272d1461099f57600080fd5b8063c49b9a80146108ed578063c5d241891461090d578063c6b2d7b61461092357600080fd5b8063a073d37f1161016f578063a457c2d711610149578063a457c2d71461086d578063a5d69d1f1461088d578063a9059cbb146108ad578063c2d4640e146108cd57600080fd5b8063a073d37f1461082d578063a08e671f14610842578063a3370a5a1461085857600080fd5b80638da5cb5b116101ab5780638da5cb5b146107ba57806395d89b41146107d85780639a619738146107ed5780639f99e9bd1461080d57600080fd5b8063844d591c1461075457806388790a68146107745780638b42507f1461078a57600080fd5b806339509351116102b657806357a5802f1161025457806370a082311161022357806370a08231146106dc5780637d1db4a514610712578063807c2d9c1461072857806382eefb431461073e57600080fd5b806357a5802f146106705780635881f3ef1461068657806361a23c69146106a657806366e2ae46146106bc57600080fd5b80634428f105116102905780634428f105146105f65780634a74bb021461060c5780635342acb41461062d578063557ed1ba1461065d57600080fd5b806339509351146105865780633b97084a146105a65780633ecad271146105c657600080fd5b806318160ddd116103235780632563ae83116102fd5780632563ae83146104fb57806327c8f8351461051b5780632b112e491461054f578063313ce5671461056457600080fd5b806318160ddd146104a657806323b872dd146104bb578063246e2505146104db57600080fd5b806309c243671161035f57806309c243671461040c5780630a476b111461042e57806313674cd31461044e5780631694505e1461046e57600080fd5b806303d8e9541461039157806306fdde03146103ba578063095ea7b3146103dc57600080fd5b3661038c57005b600080fd5b34801561039d57600080fd5b506103a760145481565b6040519081526020015b60405180910390f35b3480156103c657600080fd5b506103cf610ad8565b6040516103b19190612351565b3480156103e857600080fd5b506103fc6103f73660046123b7565b610b6a565b60405190151581526020016103b1565b34801561041857600080fd5b5061042c6104273660046123f1565b610b81565b005b34801561043a57600080fd5b5061042c6104493660046123f1565b610bdf565b34801561045a57600080fd5b5061042c61046936600461242a565b610c34565b34801561047a57600080fd5b50601c5461048e906001600160a01b031681565b6040516001600160a01b0390911681526020016103b1565b3480156104b257600080fd5b506018546103a7565b3480156104c757600080fd5b506103fc6104d636600461246d565b610cac565b3480156104e757600080fd5b506103fc6104f636600461246d565b610d17565b34801561050757600080fd5b5061042c6105163660046124ae565b610e34565b34801561052757600080fd5b5061048e7f000000000000000000000000000000000000000000000000000000000000dead81565b34801561055b57600080fd5b506103a7610e7c565b34801561057057600080fd5b5060045460405160ff90911681526020016103b1565b34801561059257600080fd5b506103fc6105a13660046123b7565b610ec6565b3480156105b257600080fd5b5061042c6105c13660046124cb565b610efc565b3480156105d257600080fd5b506103fc6105e13660046124e4565b600b6020526000908152604090205460ff1681565b34801561060257600080fd5b506103a760115481565b34801561061857600080fd5b50601d546103fc90600160a81b900460ff1681565b34801561063957600080fd5b506103fc6106483660046124e4565b60086020526000908152604090205460ff1681565b34801561066957600080fd5b50426103a7565b34801561067c57600080fd5b506103a760125481565b34801561069257600080fd5b5061048e6106a13660046124e4565b610f2b565b3480156106b257600080fd5b506103a760135481565b3480156106c857600080fd5b5061042c6106d7366004612501565b611263565b3480156106e857600080fd5b506103a76106f73660046124e4565b6001600160a01b031660009081526006602052604090205490565b34801561071e57600080fd5b506103a760195481565b34801561073457600080fd5b506103a7601a5481565b34801561074a57600080fd5b506103a760165481565b34801561076057600080fd5b5061042c61076f3660046123f1565b611298565b34801561078057600080fd5b506103a7600f5481565b34801561079657600080fd5b506103fc6107a53660046124e4565b600a6020526000908152604090205460ff1681565b3480156107c657600080fd5b506000546001600160a01b031661048e565b3480156107e457600080fd5b506103cf6112ed565b3480156107f957600080fd5b5061042c6108083660046124e4565b6112fc565b34801561081957600080fd5b5060055461048e906001600160a01b031681565b34801561083957600080fd5b50601b546103a7565b34801561084e57600080fd5b506103a760175481565b34801561086457600080fd5b5061042c611348565b34801561087957600080fd5b506103fc6108883660046123b7565b6113c1565b34801561089957600080fd5b5061042c6108a83660046124ae565b611410565b3480156108b957600080fd5b506103fc6108c83660046123b7565b611458565b3480156108d957600080fd5b5061042c6108e8366004612523565b611465565b3480156108f957600080fd5b5061042c6109083660046124ae565b6114b4565b34801561091957600080fd5b506103a7600d5481565b34801561092f57600080fd5b506103a7600e5481565b34801561094557600080fd5b50601d5461048e906001600160a01b031681565b34801561096557600080fd5b506103a760105481565b34801561097b57600080fd5b506103fc61098a3660046124e4565b60096020526000908152604090205460ff1681565b3480156109ab57600080fd5b5060045461048e9061010090046001600160a01b031681565b3480156109d057600080fd5b50601d546103fc90600160b01b900460ff1681565b3480156109f157600080fd5b506103a7600c5481565b348015610a0757600080fd5b506103a7610a1636600461254f565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b348015610a4d57600080fd5b506103a760155481565b348015610a6357600080fd5b5061042c610a723660046123f1565b611536565b348015610a8357600080fd5b5061042c610a923660046124e4565b61158b565b348015610aa357600080fd5b5061042c610ab23660046124e4565b6115dd565b348015610ac357600080fd5b50601d546103fc90600160b81b900460ff1681565b606060028054610ae79061257d565b80601f0160208091040260200160405190810160405280929190818152602001828054610b139061257d565b8015610b605780601f10610b3557610100808354040283529160200191610b60565b820191906000526020600020905b815481529060010190602001808311610b4357829003601f168201915b5050505050905090565b6000610b77338484611726565b5060015b92915050565b6000546001600160a01b03163314610bb45760405162461bcd60e51b8152600401610bab906125b7565b60405180910390fd5b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610c095760405162461bcd60e51b8152600401610bab906125b7565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610c5e5760405162461bcd60e51b8152600401610bab906125b7565b600c869055600d859055600e849055610c8184610c7b88886116c7565b906116c7565b601555600f83905560108290556011819055610ca181610c7b85856116c7565b601655505050505050565b6000610cb984848461184a565b50610d0c8433610d0785604051806060016040528060288152602001612792602891396001600160a01b038a1660009081526007602090815260408083203384529091529020549190611c19565b611726565b5060015b9392505050565b600080546001600160a01b03163314610d425760405162461bcd60e51b8152600401610bab906125b7565b81600003610db9576040516370a0823160e01b81523060048201526001600160a01b038516906370a0823190602401602060405180830381865afa158015610d8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db291906125ec565b9150610d10565b60405163a9059cbb60e01b81526001600160a01b0384811660048301526024820184905285169063a9059cbb906044016020604051808303816000875af1158015610e08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2c9190612605565b949350505050565b6000546001600160a01b03163314610e5e5760405162461bcd60e51b8152600401610bab906125b7565b601d8054911515600160b81b0260ff60b81b19909216919091179055565b7f000000000000000000000000000000000000000000000000000000000000dead6001600160a01b0316600090815260066020526040812054601854610ec191611c53565b905090565b3360008181526007602090815260408083206001600160a01b03871684529091528120549091610b77918590610d0790866116c7565b6000546001600160a01b03163314610f265760405162461bcd60e51b8152600401610bab906125b7565b601b55565b600080546001600160a01b03163314610f565760405162461bcd60e51b8152600401610bab906125b7565b6000829050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fbd9190612622565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561100a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102e9190612622565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611079573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109d9190612622565b91506001600160a01b0382166111f457806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110f9190612622565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561115c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111809190612622565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156111cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f19190612622565b91505b601d80546001600160a01b03199081166001600160a01b038581169182178455601c8054909316948116949094179091556000908152600960209081526040808320805460ff19908116600190811790925594549095168352600b909152902080549091169091179055919050565b6000546001600160a01b0316331461128d5760405162461bcd60e51b8152600401610bab906125b7565b601991909155601a55565b6000546001600160a01b031633146112c25760405162461bcd60e51b8152600401610bab906125b7565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b606060038054610ae79061257d565b6000546001600160a01b031633146113265760405162461bcd60e51b8152600401610bab906125b7565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146113725760405162461bcd60e51b8152600401610bab906125b7565b476113856000546001600160a01b031690565b6001600160a01b03166108fc829081150290604051600060405180830381858888f193505050501580156113bd573d6000803e3d6000fd5b5050565b6000610b773384610d07856040518060600160405280602581526020016127ba602591393360009081526007602090815260408083206001600160a01b038d1684529091529020549190611c19565b6000546001600160a01b0316331461143a5760405162461bcd60e51b8152600401610bab906125b7565b601d8054911515600160b01b0260ff60b01b19909216919091179055565b6000610d0c33848461184a565b6000546001600160a01b0316331461148f5760405162461bcd60e51b8152600401610bab906125b7565b6012839055601382905560148190556114ac81610c7b85856116c7565b601755505050565b6000546001600160a01b031633146114de5760405162461bcd60e51b8152600401610bab906125b7565b601d8054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061152b90831515815260200190565b60405180910390a150565b6000546001600160a01b031633146115605760405162461bcd60e51b8152600401610bab906125b7565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146115b55760405162461bcd60e51b8152600401610bab906125b7565b600480546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6000546001600160a01b031633146116075760405162461bcd60e51b8152600401610bab906125b7565b6001600160a01b03811661166c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610bab565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000806116d48385612655565b905083811015610d105760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610bab565b6001600160a01b0383166117885760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610bab565b6001600160a01b0382166117e95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610bab565b6001600160a01b0383811660008181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166118b05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610bab565b6001600160a01b0383166119125760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610bab565b601d54600160a01b900460ff16156119365761192f848484611c95565b9050610d10565b6001600160a01b0384166000908152600a602052604090205460ff1615801561197857506001600160a01b0383166000908152600a602052604090205460ff16155b156119e0576019548211156119e05760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610bab565b30600090815260066020526040902054601b5481108015908190611a0e5750601d54600160a01b900460ff16155b8015611a3357506001600160a01b0386166000908152600b602052604090205460ff16155b8015611a485750601d54600160a81b900460ff165b15611a6e57601d54600160b01b900460ff1615611a6557601b5491505b611a6e82611d7b565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038916600090815260069091529190912054611ac0918690611c19565b6001600160a01b038716600090815260066020908152604080832093909355600890529081205460ff1680611b0d57506001600160a01b03861660009081526008602052604090205460ff165b611b2157611b1c878787611eb6565b611b23565b845b601d54909150600160b81b900460ff168015611b5857506001600160a01b03861660009081526009602052604090205460ff16155b15611b8e57601a54611b8382610c7b896001600160a01b031660009081526006602052604090205490565b1115611b8e57600080fd5b6001600160a01b038616600090815260066020526040902054611bb190826116c7565b6001600160a01b0380881660008181526006602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611c059085815260200190565b60405180910390a360019350505050610d10565b60008184841115611c3d5760405162461bcd60e51b8152600401610bab9190612351565b506000611c4a8486612668565b95945050505050565b6000610d1083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c19565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600690915291822054611ce6918490611c19565b6001600160a01b038086166000908152600660205260408082209390935590851681522054611d1590836116c7565b6001600160a01b0380851660008181526006602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611d699086815260200190565b60405180910390a35060019392505050565b601d805460ff60a01b1916600160a01b179055601754601254600091611db191600291611dab9182908790611fbc565b9061203e565b90506000611dbf8383611c53565b9050611dca81612080565b6012544790600090611dea90611de190600261203e565b60175490611c53565b90506000611e0c6002611dab84611dab60125488611fbc90919063ffffffff16565b90506000611e2983611dab60145487611fbc90919063ffffffff16565b90506000611e4182611e3b8786611c53565b90611c53565b90508015611e6457600454611e649061010090046001600160a01b031682612213565b8115611e8057600554611e80906001600160a01b031683612213565b600083118015611e905750600087115b15611e9f57611e9f878461224e565b5050601d805460ff60a01b19169055505050505050565b6001600160a01b0383166000908152600b6020526040812054819060ff1615611efa57611ef36064611dab60155486611fbc90919063ffffffff16565b9050611f38565b6001600160a01b0384166000908152600b602052604090205460ff1615611f3857611f356064611dab60165486611fbc90919063ffffffff16565b90505b8015611fb25730600090815260066020526040902054611f5890826116c7565b30600081815260066020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611fa99085815260200190565b60405180910390a35b611c4a8382611c53565b600082600003611fce57506000610b7b565b6000611fda838561267b565b905082611fe78583612692565b14610d105760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610bab565b6000610d1083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612323565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106120b5576120b56126b4565b6001600160a01b03928316602091820292909201810191909152601c54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561210e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121329190612622565b81600181518110612145576121456126b4565b6001600160a01b039283166020918202929092010152601c5461216b9130911684611726565b601c5460405163791ac94760e01b81526001600160a01b039091169063791ac947906121a490859060009086903090429060040161270e565b600060405180830381600087803b1580156121be57600080fd5b505af11580156121d2573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a7828260405161220792919061274a565b60405180910390a15050565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015612249573d6000803e3d6000fd5b505050565b601c546122669030906001600160a01b031684611726565b601c546001600160a01b031663f305d71982308560008061228f6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156122f7573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061231c9190612763565b5050505050565b600081836123445760405162461bcd60e51b8152600401610bab9190612351565b506000611c4a8486612692565b600060208083528351808285015260005b8181101561237e57858101830151858201604001528201612362565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146123b457600080fd5b50565b600080604083850312156123ca57600080fd5b82356123d58161239f565b946020939093013593505050565b80151581146123b457600080fd5b6000806040838503121561240457600080fd5b823561240f8161239f565b9150602083013561241f816123e3565b809150509250929050565b60008060008060008060c0878903121561244357600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b60008060006060848603121561248257600080fd5b833561248d8161239f565b9250602084013561249d8161239f565b929592945050506040919091013590565b6000602082840312156124c057600080fd5b8135610d10816123e3565b6000602082840312156124dd57600080fd5b5035919050565b6000602082840312156124f657600080fd5b8135610d108161239f565b6000806040838503121561251457600080fd5b50508035926020909101359150565b60008060006060848603121561253857600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561256257600080fd5b823561256d8161239f565b9150602083013561241f8161239f565b600181811c9082168061259157607f821691505b6020821081036125b157634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000602082840312156125fe57600080fd5b5051919050565b60006020828403121561261757600080fd5b8151610d10816123e3565b60006020828403121561263457600080fd5b8151610d108161239f565b634e487b7160e01b600052601160045260246000fd5b80820180821115610b7b57610b7b61263f565b81810381811115610b7b57610b7b61263f565b8082028115828204841417610b7b57610b7b61263f565b6000826126af57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b838110156127035781516001600160a01b0316875295820195908201906001016126de565b509495945050505050565b85815284602082015260a06040820152600061272d60a08301866126ca565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201526000610e2c60408301846126ca565b60008060006060848603121561277857600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122067f24ea3f6118edff878bdfbed21f5f206e23f0aba6e1f5f75d32228b886cbdf64736f6c63430008120033

Deployed Bytecode Sourcemap

16072:16341:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17307:28;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;17307:28:0;;;;;;;;19722:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;21270:193::-;;;;;;;;;;-1:-1:-1;21270:193:0;;;;;:::i;:::-;;:::i;:::-;;;1370:14:1;;1363:22;1345:41;;1333:2;1318:18;21270:193:0;1205:187:1;22170:161:0;;;;;;;;;;-1:-1:-1;22170:161:0;;;;;:::i;:::-;;:::i;:::-;;22010:152;;;;;;;;;;-1:-1:-1;22010:152:0;;;;;:::i;:::-;;:::i;22339:771::-;;;;;;;;;;-1:-1:-1;22339:771:0;;;;;:::i;:::-;;:::i;17751:41::-;;;;;;;;;;-1:-1:-1;17751:41:0;;;;-1:-1:-1;;;;;17751:41:0;;;;;;-1:-1:-1;;;;;2626:32:1;;;2608:51;;2596:2;2581:18;17751:41:0;2435:230:1;19999:100:0;;;;;;;;;;-1:-1:-1;20079:12:0;;19999:100;;26671:446;;;;;;;;;;-1:-1:-1;26671:446:0;;;;;:::i;:::-;;:::i;24712:304::-;;;;;;;;;;-1:-1:-1;24712:304:0;;;;;:::i;:::-;;:::i;23703:114::-;;;;;;;;;;-1:-1:-1;23703:114:0;;;;;:::i;:::-;;:::i;16534:90::-;;;;;;;;;;;;;;;25180:128;;;;;;;;;;;;;:::i;19908:83::-;;;;;;;;;;-1:-1:-1;19974:9:0;;19908:83;;19974:9;;;;3727:36:1;;3715:2;3700:18;19908:83:0;3585:184:1;20426:300:0;;;;;;;;;;-1:-1:-1;20426:300:0;;;;;:::i;:::-;;:::i;23992:122::-;;;;;;;;;;-1:-1:-1;23992:122:0;;;;;:::i;:::-;;:::i;16921:44::-;;;;;;;;;;-1:-1:-1;16921:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;17185:31;;;;;;;;;;;;;;;;17862:40;;;;;;;;;;-1:-1:-1;17862:40:0;;;;-1:-1:-1;;;17862:40:0;;;;;;16753:49;;;;;;;;;;-1:-1:-1;16753:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6778:90;;;;;;;;;;-1:-1:-1;6845:15:0;6778:90;;17225:34;;;;;;;;;;;;;;;;25464:899;;;;;;;;;;-1:-1:-1;25464:899:0;;;;;:::i;:::-;;:::i;17266:34::-;;;;;;;;;;;;;;;;23536:159;;;;;;;;;;-1:-1:-1;23536:159:0;;;;;:::i;:::-;;:::i;20107:119::-;;;;;;;;;;-1:-1:-1;20107:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;20200:18:0;20173:7;20200:18;;;:9;:18;;;;;;;20107:119;17552:58;;;;;;;;;;;;;;;;17617;;;;;;;;;;;;;;;;17388:38;;;;;;;;;;;;;;;;21850:152;;;;;;;;;;-1:-1:-1;21850:152:0;;;;;:::i;:::-;;:::i;17098:36::-;;;;;;;;;;;;;;;;16867:47;;;;;;;;;;-1:-1:-1;16867:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6275:79;;;;;;;;;;-1:-1:-1;6313:7:0;6340:6;-1:-1:-1;;;;;6340:6:0;6275:79;;19813:87;;;;;;;;;;;;;:::i;24265:123::-;;;;;;;;;;-1:-1:-1;24265:123:0;;;;;:::i;:::-;;:::i;16425:102::-;;;;;;;;;;-1:-1:-1;16425:102:0;;;;-1:-1:-1;;;;;16425:102:0;;;21142:120;;;;;;;;;;-1:-1:-1;21231:23:0;;21142:120;;17433:44;;;;;;;;;;;;;;;;25022:150;;;;;;;;;;;;;:::i;20734:400::-;;;;;;;;;;-1:-1:-1;20734:400:0;;;;;:::i;:::-;;:::i;24575:125::-;;;;;;;;;;-1:-1:-1;24575:125:0;;;;;:::i;:::-;;:::i;26464:199::-;;;;;;;;;;-1:-1:-1;26464:199:0;;;;;:::i;:::-;;:::i;23118:410::-;;;;;;;;;;-1:-1:-1;23118:410:0;;;;;:::i;:::-;;:::i;24396:171::-;;;;;;;;;;-1:-1:-1;24396:171:0;;;;;:::i;:::-;;:::i;17016:36::-;;;;;;;;;;;;;;;;17059:30;;;;;;;;;;;;;;;;17799:26;;;;;;;;;;-1:-1:-1;17799:26:0;;;;-1:-1:-1;;;;;17799:26:0;;;17141:37;;;;;;;;;;;;;;;;16809:51;;;;;;;;;;-1:-1:-1;16809:51:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16310:108;;;;;;;;;;-1:-1:-1;16310:108:0;;;;;;;-1:-1:-1;;;;;16310:108:0;;;17909:45;;;;;;;;;;-1:-1:-1;17909:45:0;;;;-1:-1:-1;;;17909:45:0;;;;;;16974:35;;;;;;;;;;;;;;;;20234:184;;;;;;;;;;-1:-1:-1;20234:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;20383:18:0;;;20351:7;20383:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;20234:184;17344:37;;;;;;;;;;;;;;;;23825:159;;;;;;;;;;-1:-1:-1;23825:159:0;;;;;:::i;:::-;;:::i;24122:135::-;;;;;;;;;;-1:-1:-1;24122:135:0;;;;;:::i;:::-;;:::i;6489:281::-;;;;;;;;;;-1:-1:-1;6489:281:0;;;;;:::i;:::-;;:::i;17961:35::-;;;;;;;;;;-1:-1:-1;17961:35:0;;;;-1:-1:-1;;;17961:35:0;;;;;;19722:83;19759:13;19792:5;19785:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19722:83;:::o;21270:193::-;21372:4;21394:39;333:10;21417:7;21426:6;21394:8;:39::i;:::-;-1:-1:-1;21451:4:0;21270:193;;;;;:::o;22170:161::-;6402:6;;-1:-1:-1;;;;;6402:6:0;333:10;6402:22;6394:67;;;;-1:-1:-1;;;6394:67:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;22286:26:0;;;::::1;;::::0;;;:17:::1;:26;::::0;;;;:37;;-1:-1:-1;;22286:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22170:161::o;22010:152::-;6402:6;;-1:-1:-1;;;;;6402:6:0;333:10;6402:22;6394:67;;;;-1:-1:-1;;;6394:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22122:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;22122:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22010:152::o;22339:771::-;6402:6;;-1:-1:-1;;;;;6402:6:0;333:10;6402:22;6394:67;;;;-1:-1:-1;;;6394:67:0;;;;;;;:::i;:::-;22615:16:::1;:37:::0;;;22663:16:::1;:37:::0;;;22711:10:::1;:25:::0;;;22769:78:::1;22724:12:::0;22769:38:::1;22634:18:::0;22682;22769:20:::1;:38::i;:::-;:42:::0;::::1;:78::i;:::-;22749:17;:98:::0;22860:17:::1;:39:::0;;;22910:17:::1;:39:::0;;;22960:11:::1;:27:::0;;;23021:81:::1;22974:13:::0;23021:40:::1;22880:19:::0;22930;23021:21:::1;:40::i;:81::-;23000:18;:102:::0;-1:-1:-1;;;;;;22339:771:0:o;26671:446::-;26803:4;26820:36;26830:6;26838:9;26849:6;26820:9;:36::i;:::-;-1:-1:-1;26867:220:0;26890:6;333:10;26938:138;26994:6;26938:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26938:19:0;;;;;;:11;:19;;;;;;;;333:10;26938:33;;;;;;;;;;:37;:138::i;:::-;26867:8;:220::i;:::-;-1:-1:-1;27105:4:0;26671:446;;;;;;:::o;24712:304::-;24819:10;6402:6;;-1:-1:-1;;;;;6402:6:0;333:10;6402:22;6394:67;;;;-1:-1:-1;;;6394:67:0;;;;;;;:::i;:::-;24844:6:::1;24854:1;24844:11:::0;24841:168:::1;;24881:39;::::0;-1:-1:-1;;;24881:39:0;;24914:4:::1;24881:39;::::0;::::1;2608:51:1::0;-1:-1:-1;;;;;24881:24:0;::::1;::::0;::::1;::::0;2581:18:1;;24881:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24872:48;;24841:168;;;24961:36;::::0;-1:-1:-1;;;24961:36:0;;-1:-1:-1;;;;;6529:32:1;;;24961:36:0::1;::::0;::::1;6511:51:1::0;6578:18;;;6571:34;;;24961:23:0;::::1;::::0;::::1;::::0;6484:18:1;;24961:36:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24953:44:::0;24712:304;-1:-1:-1;;;;24712:304:0:o;23703:114::-;6402:6;;-1:-1:-1;;;;;6402:6:0;333:10;6402:22;6394:67;;;;-1:-1:-1;;;6394:67:0;;;;;;;:::i;:::-;23782:16:::1;:27:::0;;;::::1;;-1:-1:-1::0;;;23782:27:0::1;-1:-1:-1::0;;;;23782:27:0;;::::1;::::0;;;::::1;::::0;;23703:114::o;25180:128::-;25287:11;-1:-1:-1;;;;;20200:18:0;25233:7;20200:18;;;:9;:18;;;;;;25260:12;;:40;;:16;:40::i;:::-;25253:47;;25180:128;:::o;20426:300::-;333:10;20541:4;20635:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;20635:34:0;;;;;;;;;;20541:4;;20563:133;;20613:7;;20635:50;;20674:10;20635:38;:50::i;23992:122::-;6402:6;;-1:-1:-1;;;;;6402:6:0;333:10;6402:22;6394:67;;;;-1:-1:-1;;;6394:67:0;;;;;;;:::i;:::-;24072:23:::1;:34:::0;23992:122::o;25464:899::-;25572:22;6402:6;;-1:-1:-1;;;;;6402:6:0;333:10;6402:22;6394:67;;;;-1:-1:-1;;;6394:67:0;;;;;;;:::i;:::-;25612:35:::1;25683:16;25612:98;;25758:16;-1:-1:-1::0;;;;;25758:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;25740:53:0::1;;25816:4;25836:16;-1:-1:-1::0;;;;;25836:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25740:130;::::0;-1:-1:-1;;;;;;25740:130:0::1;::::0;;;;;;-1:-1:-1;;;;;7352:15:1;;;25740:130:0::1;::::0;::::1;7334:34:1::0;7404:15;;7384:18;;;7377:43;7269:18;;25740:130:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25723:147:::0;-1:-1:-1;;;;;;25887:28:0;::::1;25883:226;;26001:16;-1:-1:-1::0;;;;;26001:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;25983:74:0::1;;26066:4;26073:16;-1:-1:-1::0;;;;;26073:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25983:114;::::0;-1:-1:-1;;;;;;25983:114:0::1;::::0;;;;;;-1:-1:-1;;;;;7352:15:1;;;25983:114:0::1;::::0;::::1;7334:34:1::0;7404:15;;7384:18;;;7377:43;7269:18;;25983:114:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25966:131;;25883:226;26121:11;:28:::0;;-1:-1:-1;;;;;;26121:28:0;;::::1;-1:-1:-1::0;;;;;26121:28:0;;::::1;::::0;;::::1;::::0;;26183:15:::1;:34:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;26255:41:0;;;:19:::1;:41;::::0;;;;;;;:48;;-1:-1:-1;;26255:48:0;;::::1;-1:-1:-1::0;26255:48:0;;::::1;::::0;;;26335:11;;;;::::1;26314:34:::0;;:12:::1;:34:::0;;;;;:41;;;;::::1;::::0;;::::1;::::0;;26121:28;26135:14;-1:-1:-1;25464:899:0:o;23536:159::-;6402:6;;-1:-1:-1;;;;;6402:6:0;333:10;6402:22;6394:67;;;;-1:-1:-1;;;6394:67:0;;;;;;;:::i;:::-;23629:12:::1;:26:::0;;;;23666:10:::1;:21:::0;23536:159::o;21850:152::-;6402:6;;-1:-1:-1;;;;;6402:6:0;333:10;6402:22;6394:67;;;;-1:-1:-1;;;6394:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21962:21:0;;;::::1;;::::0;;;:12:::1;:21;::::0;;;;:32;;-1:-1:-1;;21962:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21850:152::o;19813:87::-;19852:13;19885:7;19878:14;;;;;:::i;24265:123::-;6402:6;;-1:-1:-1;;;;;6402:6:0;333:10;6402:22;6394:67;;;;-1:-1:-1;;;6394:67:0;;;;;;;:::i;:::-;24342:16:::1;:38:::0;;-1:-1:-1;;;;;;24342:38:0::1;-1:-1:-1::0;;;;;24342:38:0;;;::::1;::::0;;;::::1;::::0;;24265:123::o;25022:150::-;6402:6;;-1:-1:-1;;;;;6402:6:0;333:10;6402:22;6394:67;;;;-1:-1:-1;;;6394:67:0;;;;;;;:::i;:::-;25098:21:::1;25138:7;6313::::0;6340:6;-1:-1:-1;;;;;6340:6:0;;6275:79;25138:7:::1;-1:-1:-1::0;;;;;25130:25:0::1;:34;25156:7;25130:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;25072:100;25022:150::o:0;20734:400::-;20854:4;20876:228;333:10;20926:7;20948:145;21005:15;20948:145;;;;;;;;;;;;;;;;;333:10;20948:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;20948:34:0;;;;;;;;;;;;:38;:145::i;24575:125::-;6402:6;;-1:-1:-1;;;;;6402:6:0;333:10;6402:22;6394:67;;;;-1:-1:-1;;;6394:67:0;;;;;;;:::i;:::-;24656:25:::1;:36:::0;;;::::1;;-1:-1:-1::0;;;24656:36:0::1;-1:-1:-1::0;;;;24656:36:0;;::::1;::::0;;;::::1;::::0;;24575:125::o;26464:199::-;26569:4;26591:42;333:10;26615:9;26626:6;26591:9;:42::i;23118:410::-;6402:6;;-1:-1:-1;;;;;6402:6:0;333:10;6402:22;6394:67;;;;-1:-1:-1;;;6394:67:0;;;;;;;:::i;:::-;23290:15:::1;:35:::0;;;23336:15:::1;:35:::0;;;23382:9:::1;:23:::0;;;23445:75:::1;23394:11:::0;23445:36:::1;23308:17:::0;23354;23445:19:::1;:36::i;:75::-;23418:24;:102:::0;-1:-1:-1;;;23118:410:0:o;24396:171::-;6402:6;;-1:-1:-1;;;;;6402:6:0;333:10;6402:22;6394:67;;;;-1:-1:-1;;;6394:67:0;;;;;;;:::i;:::-;24473:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;24473:32:0::1;-1:-1:-1::0;;;;24473:32:0;;::::1;;::::0;;24521:38:::1;::::0;::::1;::::0;::::1;::::0;24497:8;1370:14:1;1363:22;1345:41;;1333:2;1318:18;;1205:187;24521:38:0::1;;;;;;;;24396:171:::0;:::o;23825:159::-;6402:6;;-1:-1:-1;;;;;6402:6:0;333:10;6402:22;6394:67;;;;-1:-1:-1;;;6394:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23940:27:0;;;::::1;;::::0;;;:19:::1;:27;::::0;;;;:36;;-1:-1:-1;;23940:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23825:159::o;24122:135::-;6402:6;;-1:-1:-1;;;;;6402:6:0;333:10;6402:22;6394:67;;;;-1:-1:-1;;;6394:67:0;;;;;;;:::i;:::-;24205:22:::1;:44:::0;;-1:-1:-1;;;;;24205:44:0;;::::1;;;-1:-1:-1::0;;;;;;24205:44:0;;::::1;::::0;;;::::1;::::0;;24122:135::o;6489:281::-;6402:6;;-1:-1:-1;;;;;6402:6:0;333:10;6402:22;6394:67;;;;-1:-1:-1;;;6394:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6592:22:0;::::1;6570:110;;;::::0;-1:-1:-1;;;6570:110:0;;7633:2:1;6570:110:0::1;::::0;::::1;7615:21:1::0;7672:2;7652:18;;;7645:30;7711:34;7691:18;;;7684:62;-1:-1:-1;;;7762:18:1;;;7755:36;7808:19;;6570:110:0::1;7431:402:1::0;6570:110:0::1;6717:6;::::0;;6696:38:::1;::::0;-1:-1:-1;;;;;6696:38:0;;::::1;::::0;6717:6;::::1;::::0;6696:38:::1;::::0;::::1;6745:6;:17:::0;;-1:-1:-1;;;;;;6745:17:0::1;-1:-1:-1::0;;;;;6745:17:0;;;::::1;::::0;;;::::1;::::0;;6489:281::o;1426:181::-;1484:7;;1516:5;1520:1;1516;:5;:::i;:::-;1504:17;;1545:1;1540;:6;;1532:46;;;;-1:-1:-1;;;1532:46:0;;8302:2:1;1532:46:0;;;8284:21:1;8341:2;8321:18;;;8314:30;8380:29;8360:18;;;8353:57;8427:18;;1532:46:0;8100:351:1;21471:371:0;-1:-1:-1;;;;;21598:19:0;;21590:68;;;;-1:-1:-1;;;21590:68:0;;8658:2:1;21590:68:0;;;8640:21:1;8697:2;8677:18;;;8670:30;8736:34;8716:18;;;8709:62;-1:-1:-1;;;8787:18:1;;;8780:34;8831:19;;21590:68:0;8456:400:1;21590:68:0;-1:-1:-1;;;;;21677:21:0;;21669:68;;;;-1:-1:-1;;;21669:68:0;;9063:2:1;21669:68:0;;;9045:21:1;9102:2;9082:18;;;9075:30;9141:34;9121:18;;;9114:62;-1:-1:-1;;;9192:18:1;;;9185:32;9234:19;;21669:68:0;8861:398:1;21669:68:0;-1:-1:-1;;;;;21750:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;21802:32;;160:25:1;;;21802:32:0;;133:18:1;21802:32:0;;;;;;;21471:371;;;:::o;27125:1890::-;27246:4;-1:-1:-1;;;;;27271:20:0;;27263:70;;;;-1:-1:-1;;;27263:70:0;;9466:2:1;27263:70:0;;;9448:21:1;9505:2;9485:18;;;9478:30;9544:34;9524:18;;;9517:62;-1:-1:-1;;;9595:18:1;;;9588:35;9640:19;;27263:70:0;9264:401:1;27263:70:0;-1:-1:-1;;;;;27352:23:0;;27344:71;;;;-1:-1:-1;;;27344:71:0;;9872:2:1;27344:71:0;;;9854:21:1;9911:2;9891:18;;;9884:30;9950:34;9930:18;;;9923:62;-1:-1:-1;;;10001:18:1;;;9994:33;10044:19;;27344:71:0;9670:399:1;27344:71:0;27432:16;;-1:-1:-1;;;27432:16:0;;;;27428:1580;;;27472:41;27487:6;27495:9;27506:6;27472:14;:41::i;:::-;27465:48;;;;27428:1580;-1:-1:-1;;;;;27551:23:0;;;;;;:15;:23;;;;;;;;27550:24;:55;;;;-1:-1:-1;;;;;;27579:26:0;;;;;;:15;:26;;;;;;;;27578:27;27550:55;27546:232;;;27666:12;;27656:6;:22;;27626:136;;;;-1:-1:-1;;;27626:136:0;;10276:2:1;27626:136:0;;;10258:21:1;10315:2;10295:18;;;10288:30;10354:34;10334:18;;;10327:62;-1:-1:-1;;;10405:18:1;;;10398:38;10453:19;;27626:136:0;10074:404:1;27626:136:0;27843:4;27794:28;20200:18;;;:9;:18;;;;;;27936:23;;27895:64;;;;;;;27998:61;;-1:-1:-1;28043:16:0;;-1:-1:-1;;;28043:16:0;;;;28042:17;27998:61;:103;;;;-1:-1:-1;;;;;;28081:20:0;;;;;;:12;:20;;;;;;;;28080:21;27998:103;:145;;;;-1:-1:-1;28122:21:0;;-1:-1:-1;;;28122:21:0;;;;27998:145;27976:371;;;28182:25;;-1:-1:-1;;;28182:25:0;;;;28178:98;;;28253:23;;28230:46;;28178:98;28295:36;28310:20;28295:14;:36::i;:::-;28383:102;;;;;;;;;;;-1:-1:-1;;;28383:102:0;;;;;;;;-1:-1:-1;;;;;28383:17:0;;-1:-1:-1;28383:17:0;;;:9;:17;;;;;;;;:102;;28423:6;;28383:21;:102::i;:::-;-1:-1:-1;;;;;28363:17:0;;;;;;:9;:17;;;;;;;;:122;;;;28525:17;:25;;;;;;;;;:74;;-1:-1:-1;;;;;;28571:28:0;;;;;;:17;:28;;;;;;;;28525:74;28524:156;;28646:34;28654:6;28662:9;28673:6;28646:7;:34::i;:::-;28524:156;;;28620:6;28524:156;28701:16;;28502:178;;-1:-1:-1;;;;28701:16:0;;;;:51;;;;-1:-1:-1;;;;;;28722:30:0;;;;;;:19;:30;;;;;;;;28721:31;28701:51;28697:134;;;28820:10;;28779:37;28804:11;28779:20;28789:9;-1:-1:-1;;;;;20200:18:0;20173:7;20200:18;;;:9;:18;;;;;;;20107:119;28779:37;:51;;28771:60;;;;;;-1:-1:-1;;;;;28871:20:0;;;;;;:9;:20;;;;;;:37;;28896:11;28871:24;:37::i;:::-;-1:-1:-1;;;;;28848:20:0;;;;;;;:9;:20;;;;;;;:60;;;;28930:40;;;;;;;;;;28958:11;160:25:1;;148:2;133:18;;14:177;28930:40:0;;;;;;;;28992:4;28985:11;;;;;;;1759:226;1879:7;1915:12;1907:6;;;;1899:29;;;;-1:-1:-1;;;1899:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1939:9:0;1951:5;1955:1;1951;:5;:::i;:::-;1939:17;1759:226;-1:-1:-1;;;;;1759:226:0:o;1615:136::-;1673:7;1700:43;1704:1;1707;1700:43;;;;;;;;;;;;;;;;;:3;:43::i;29023:401::-;29187:90;;;;;;;;;;;-1:-1:-1;;;29187:90:0;;;;;;;;-1:-1:-1;;;;;29187:17:0;;29150:4;29187:17;;;:9;:17;;;;;;;:90;;29223:6;;29187:21;:90::i;:::-;-1:-1:-1;;;;;29167:17:0;;;;;;;:9;:17;;;;;;:110;;;;29311:20;;;;;;;:32;;29336:6;29311:24;:32::i;:::-;-1:-1:-1;;;;;29288:20:0;;;;;;;:9;:20;;;;;;;:55;;;;29359:35;;;;;;;;;;29387:6;160:25:1;;148:2;133:18;;14:177;29359:35:0;;;;;;;;-1:-1:-1;29412:4:0;29023:401;;;;;:::o;29432:1159::-;18359:16;:23;;-1:-1:-1;;;;18359:23:0;-1:-1:-1;;;18359:23:0;;;29587:24:::1;::::0;29552:15:::1;::::0;18359:23;;29526:107:::1;::::0;29631:1:::1;::::0;29526:86:::1;::::0;;;:7;;:25:::1;:42::i;:::-;:60:::0;::::1;:86::i;:107::-;29504:129:::0;-1:-1:-1;29644:21:0::1;29668:24;:7:::0;29504:129;29668:11:::1;:24::i;:::-;29644:48;;29705:31;29722:13;29705:16;:31::i;:::-;29871:15;::::0;29772:21:::1;::::0;29747:22:::1;::::0;29828:76:::1;::::0;29871:22:::1;::::0;29891:1:::1;29871:19;:22::i;:::-;29828:24;::::0;;:28:::1;:76::i;:::-;29806:98;;29917:26;29946:101;30045:1;29946:80;30014:11;29946:49;29979:15;;29946:14;:32;;:49;;;;:::i;:101::-;29917:130;;30058:20;30081:46;30115:11;30081:29;30100:9;;30081:14;:18;;:29;;;;:::i;:46::-;30058:69:::0;-1:-1:-1;30138:26:0::1;30167:80;30058:69:::0;30167:38:::1;:14:::0;30186:18;30167::::1;:38::i;:::-;:42:::0;::::1;:80::i;:::-;30138:109:::0;-1:-1:-1;30264:22:0;;30260:105:::1;;30322:22;::::0;30301:64:::1;::::0;30322:22:::1;::::0;::::1;-1:-1:-1::0;;;;;30322:22:0::1;30346:18:::0;30301:20:::1;:64::i;:::-;30382:16:::0;;30378:87:::1;;30434:16;::::0;30413:52:::1;::::0;-1:-1:-1;;;;;30434:16:0::1;30452:12:::0;30413:20:::1;:52::i;:::-;30503:1;30482:18;:22;:41;;;;;30522:1;30508:11;:15;30482:41;30478:105;;;30538:45;30551:11;30564:18;30538:12;:45::i;:::-;-1:-1:-1::0;;18405:16:0;:24;;-1:-1:-1;;;;18405:24:0;;;-1:-1:-1;;;;;;29432:1159:0:o;31786:624::-;-1:-1:-1;;;;;31964:20:0;;31906:7;31964:20;;;:12;:20;;;;;;31906:7;;31964:20;;31960:216;;;32013:38;32047:3;32013:29;32024:17;;32013:6;:10;;:29;;;;:::i;:38::-;32001:50;;31960:216;;;-1:-1:-1;;;;;32073:23:0;;;;;;:12;:23;;;;;;;;32069:107;;;32125:39;32160:3;32125:30;32136:18;;32125:6;:10;;:30;;;;:::i;:39::-;32113:51;;32069:107;32192:13;;32188:174;;32267:4;32249:24;;;;:9;:24;;;;;;:39;;32278:9;32249:28;:39::i;:::-;32240:4;32222:24;;;;:9;:24;;;;;;;:66;;;;32308:42;;-1:-1:-1;;;;;32308:42:0;;;;;;;32340:9;160:25:1;;148:2;133:18;;14:177;32308:42:0;;;;;;;;32188:174;32381:21;:6;32392:9;32381:10;:21::i;1993:250::-;2051:7;2075:1;2080;2075:6;2071:47;;-1:-1:-1;2105:1:0;2098:8;;2071:47;2130:9;2142:5;2146:1;2142;:5;:::i;:::-;2130:17;-1:-1:-1;2175:1:0;2166:5;2170:1;2130:17;2166:5;:::i;:::-;:10;2158:56;;;;-1:-1:-1;;;2158:56:0;;11213:2:1;2158:56:0;;;11195:21:1;11252:2;11232:18;;;11225:30;11291:34;11271:18;;;11264:62;-1:-1:-1;;;11342:18:1;;;11335:31;11383:19;;2158:56:0;11011:397:1;2251:132:0;2309:7;2336:39;2340:1;2343;2336:39;;;;;;;;;;;;;;;;;:3;:39::i;30599:658::-;30749:16;;;30763:1;30749:16;;;;;;;;30725:21;;30749:16;;;;;;;;;;-1:-1:-1;30749:16:0;30725:40;;30794:4;30776;30781:1;30776:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;30776:23:0;;;:7;;;;;;;;;;:23;;;;30820:15;;:22;;;-1:-1:-1;;;30820:22:0;;;;:15;;;;;:20;;:22;;;;;30776:7;;30820:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30810:4;30815:1;30810:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;30810:32:0;;;:7;;;;;;;;;:32;30887:15;;30855:62;;30872:4;;30887:15;30905:11;30855:8;:62::i;:::-;30956:15;;:240;;-1:-1:-1;;;30956:240:0;;-1:-1:-1;;;;;30956:15:0;;;;:66;;:240;;31037:11;;30956:15;;31107:4;;31134;;31170:15;;30956:240;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31214:35;31231:11;31244:4;31214:35;;;;;;;:::i;:::-;;;;;;;;30654:603;30599:658;:::o;25316:140::-;25422:26;;-1:-1:-1;;;;;25422:18:0;;;:26;;;;;25441:6;;25422:26;;;;25441:6;25422:18;:26;;;;;;;;;;;;;;;;;;;;;25316:140;;:::o;31265:513::-;31445:15;;31413:62;;31430:4;;-1:-1:-1;;;;;31445:15:0;31463:11;31413:8;:62::i;:::-;31518:15;;-1:-1:-1;;;;;31518:15:0;:31;31557:9;31590:4;31610:11;31518:15;;31722:7;6313;6340:6;-1:-1:-1;;;;;6340:6:0;;6275:79;31722:7;31518:252;;;;;;-1:-1:-1;;;;;;31518:252:0;;;-1:-1:-1;;;;;13426:15:1;;;31518:252:0;;;13408:34:1;13458:18;;;13451:34;;;;13501:18;;;13494:34;;;;13544:18;;;13537:34;13608:15;;;13587:19;;;13580:44;31744:15:0;13640:19:1;;;13633:35;13342:19;;31518:252:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;31265:513;;:::o;2391:312::-;2511:7;2546:12;2539:5;2531:28;;;;-1:-1:-1;;;2531:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2570:9:0;2582:5;2586:1;2582;:5;:::i;196:548:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:131::-;-1:-1:-1;;;;;824:31:1;;814:42;;804:70;;870:1;867;860:12;804:70;749:131;:::o;885:315::-;953:6;961;1014:2;1002:9;993:7;989:23;985:32;982:52;;;1030:1;1027;1020:12;982:52;1069:9;1056:23;1088:31;1113:5;1088:31;:::i;:::-;1138:5;1190:2;1175:18;;;;1162:32;;-1:-1:-1;;;885:315:1:o;1397:118::-;1483:5;1476:13;1469:21;1462:5;1459:32;1449:60;;1505:1;1502;1495:12;1520:382;1585:6;1593;1646:2;1634:9;1625:7;1621:23;1617:32;1614:52;;;1662:1;1659;1652:12;1614:52;1701:9;1688:23;1720:31;1745:5;1720:31;:::i;:::-;1770:5;-1:-1:-1;1827:2:1;1812:18;;1799:32;1840:30;1799:32;1840:30;:::i;:::-;1889:7;1879:17;;;1520:382;;;;;:::o;1907:523::-;2011:6;2019;2027;2035;2043;2051;2104:3;2092:9;2083:7;2079:23;2075:33;2072:53;;;2121:1;2118;2111:12;2072:53;-1:-1:-1;;2144:23:1;;;2214:2;2199:18;;2186:32;;-1:-1:-1;2265:2:1;2250:18;;2237:32;;2316:2;2301:18;;2288:32;;-1:-1:-1;2367:3:1;2352:19;;2339:33;;-1:-1:-1;2419:3:1;2404:19;2391:33;;-1:-1:-1;1907:523:1;-1:-1:-1;1907:523:1:o;2670:456::-;2747:6;2755;2763;2816:2;2804:9;2795:7;2791:23;2787:32;2784:52;;;2832:1;2829;2822:12;2784:52;2871:9;2858:23;2890:31;2915:5;2890:31;:::i;:::-;2940:5;-1:-1:-1;2997:2:1;2982:18;;2969:32;3010:33;2969:32;3010:33;:::i;:::-;2670:456;;3062:7;;-1:-1:-1;;;3116:2:1;3101:18;;;;3088:32;;2670:456::o;3131:241::-;3187:6;3240:2;3228:9;3219:7;3215:23;3211:32;3208:52;;;3256:1;3253;3246:12;3208:52;3295:9;3282:23;3314:28;3336:5;3314:28;:::i;3774:180::-;3833:6;3886:2;3874:9;3865:7;3861:23;3857:32;3854:52;;;3902:1;3899;3892:12;3854:52;-1:-1:-1;3925:23:1;;3774:180;-1:-1:-1;3774:180:1:o;3959:247::-;4018:6;4071:2;4059:9;4050:7;4046:23;4042:32;4039:52;;;4087:1;4084;4077:12;4039:52;4126:9;4113:23;4145:31;4170:5;4145:31;:::i;4211:248::-;4279:6;4287;4340:2;4328:9;4319:7;4315:23;4311:32;4308:52;;;4356:1;4353;4346:12;4308:52;-1:-1:-1;;4379:23:1;;;4449:2;4434:18;;;4421:32;;-1:-1:-1;4211:248:1:o;4688:316::-;4765:6;4773;4781;4834:2;4822:9;4813:7;4809:23;4805:32;4802:52;;;4850:1;4847;4840:12;4802:52;-1:-1:-1;;4873:23:1;;;4943:2;4928:18;;4915:32;;-1:-1:-1;4994:2:1;4979:18;;;4966:32;;4688:316;-1:-1:-1;4688:316:1:o;5009:388::-;5077:6;5085;5138:2;5126:9;5117:7;5113:23;5109:32;5106:52;;;5154:1;5151;5144:12;5106:52;5193:9;5180:23;5212:31;5237:5;5212:31;:::i;:::-;5262:5;-1:-1:-1;5319:2:1;5304:18;;5291:32;5332:33;5291:32;5332:33;:::i;5402:380::-;5481:1;5477:12;;;;5524;;;5545:61;;5599:4;5591:6;5587:17;5577:27;;5545:61;5652:2;5644:6;5641:14;5621:18;5618:38;5615:161;;5698:10;5693:3;5689:20;5686:1;5679:31;5733:4;5730:1;5723:15;5761:4;5758:1;5751:15;5615:161;;5402:380;;;:::o;5787:356::-;5989:2;5971:21;;;6008:18;;;6001:30;6067:34;6062:2;6047:18;;6040:62;6134:2;6119:18;;5787:356::o;6148:184::-;6218:6;6271:2;6259:9;6250:7;6246:23;6242:32;6239:52;;;6287:1;6284;6277:12;6239:52;-1:-1:-1;6310:16:1;;6148:184;-1:-1:-1;6148:184:1:o;6616:245::-;6683:6;6736:2;6724:9;6715:7;6711:23;6707:32;6704:52;;;6752:1;6749;6742:12;6704:52;6784:9;6778:16;6803:28;6825:5;6803:28;:::i;6866:251::-;6936:6;6989:2;6977:9;6968:7;6964:23;6960:32;6957:52;;;7005:1;7002;6995:12;6957:52;7037:9;7031:16;7056:31;7081:5;7056:31;:::i;7838:127::-;7899:10;7894:3;7890:20;7887:1;7880:31;7930:4;7927:1;7920:15;7954:4;7951:1;7944:15;7970:125;8035:9;;;8056:10;;;8053:36;;;8069:18;;:::i;10483:128::-;10550:9;;;10571:11;;;10568:37;;;10585:18;;:::i;10616:168::-;10689:9;;;10720;;10737:15;;;10731:22;;10717:37;10707:71;;10758:18;;:::i;10789:217::-;10829:1;10855;10845:132;;10899:10;10894:3;10890:20;10887:1;10880:31;10934:4;10931:1;10924:15;10962:4;10959:1;10952:15;10845:132;-1:-1:-1;10991:9:1;;10789:217::o;11545:127::-;11606:10;11601:3;11597:20;11594:1;11587:31;11637:4;11634:1;11627:15;11661:4;11658:1;11651:15;11677:461;11730:3;11768:5;11762:12;11795:6;11790:3;11783:19;11821:4;11850:2;11845:3;11841:12;11834:19;;11887:2;11880:5;11876:14;11908:1;11918:195;11932:6;11929:1;11926:13;11918:195;;;11997:13;;-1:-1:-1;;;;;11993:39:1;11981:52;;12053:12;;;;12088:15;;;;12029:1;11947:9;11918:195;;;-1:-1:-1;12129:3:1;;11677:461;-1:-1:-1;;;;;11677:461:1:o;12143:582::-;12442:6;12431:9;12424:25;12485:6;12480:2;12469:9;12465:18;12458:34;12528:3;12523:2;12512:9;12508:18;12501:31;12405:4;12549:57;12601:3;12590:9;12586:19;12578:6;12549:57;:::i;:::-;-1:-1:-1;;;;;12642:32:1;;;;12637:2;12622:18;;12615:60;-1:-1:-1;12706:3:1;12691:19;12684:35;12541:65;12143:582;-1:-1:-1;;;12143:582:1:o;12730:332::-;12937:6;12926:9;12919:25;12980:2;12975;12964:9;12960:18;12953:30;12900:4;13000:56;13052:2;13041:9;13037:18;13029:6;13000:56;:::i;13679:306::-;13767:6;13775;13783;13836:2;13824:9;13815:7;13811:23;13807:32;13804:52;;;13852:1;13849;13842:12;13804:52;13881:9;13875:16;13865:26;;13931:2;13920:9;13916:18;13910:25;13900:35;;13975:2;13964:9;13960:18;13954:25;13944:35;;13679:306;;;;;:::o

Swarm Source

ipfs://67f24ea3f6118edff878bdfbed21f5f206e23f0aba6e1f5f75d32228b886cbdf
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.