ETH Price: $3,699.28 (+2.93%)

Token

Lillian Token (LYF)
 

Overview

Max Total Supply

120,000,000 LYF

Holders

6,737

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
685.4075288 LYF

Value
$0.00
0x57de06f08e102228d8ac438daa4a19a1077d0d7e
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:
LYF

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-06-26
*/

//SPDX-License-Identifier: MIT
pragma solidity 0.8.19;

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

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

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

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

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }
        return true;
    }

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

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

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

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

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

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

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

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

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_msgSender());
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.

library SafeMath {

    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

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

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

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

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

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

    function WETH() external pure returns (address);

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

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

contract LYF is ERC20, Ownable {
    using SafeMath for uint256;


    uint256 private constant _totalSupply = 120_000_000 * 1e18;

    //Router
    DexRouter public immutable uniswapRouter;
    address public immutable pairAddress;

    //Buy Taxes
    uint256 public BuyFinanceTax = 20;
    uint256 public BuyTreasury = 13;
    uint256 public BuyFoundation = 17;
    uint256 public BuyRewards = 10;
    uint256 public BuyAutoLiquidity = 0;

    uint256 public buyTaxes = BuyFinanceTax + BuyTreasury + BuyFoundation+ BuyRewards + BuyAutoLiquidity;

    //Sell Taxes
    uint256 public SellFinanceTax = 25;
    uint256 public SellTreasury = 15;
    uint256 public SellFoundation = 20;
    uint256 public SellRewards = 10;
    uint256 public SellAutoLiquidity = 10;

    uint256 public sellTaxes = SellFinanceTax + SellTreasury + SellFoundation + SellRewards + SellAutoLiquidity;

    //Transfer Taxes
    uint256 public transferTaxes = 0;

    //Whitelisting from taxes and trading limits
    mapping(address => bool) private whitelisted;

    //Blacklist wallets
    mapping(address => bool) private blacklisted;

    //Swapping
    uint256 public swapTokensAtAmount = _totalSupply / 100000; //Collect 0.001% of total supply to swap to taxes
    bool public swapAndLiquifyEnabled = true;
    bool public isSwapping = false;
    bool public tradingEnabled = false;
    uint256 public startTradingBlock;

    //Wallets

    address payable public FinanceAddress = payable(0x313DF74b4C441c1aD253D89Bb172141B8bA213b1);
    address payable public TreasuryAddress = payable(0x92C2a076680c0B47f717ac587bf0b895Dde3B252);
    address payable public FoundationAddress = payable(0xE4752A7EBC1948Cb8E01234df49e6e576e1931e3);
    address payable public RewardsAddress = payable(0x16dDbD8D5C7E11Fb7a819B55D6A78E03A909d828);

    //Events
    event FinanceAddressChanged(address indexed _trWallet); 
    event TreasuryAddressChanged(address indexed _trWallet);
    event FoundationAddressChanged(address indexed _trWallet);
    event RewardsAddressChanged(address indexed _trWallet);
    event BuyFeesUpdated(uint256 indexed newBuyFinanceTax, uint256 newBuyTreasury, uint256 newBuyFoundation, uint256 newBuyRewards, uint256 newBuyAutoLiquidity);
    event SellFeesUpdated(uint256 indexed newSellFinanceTax, uint256 newSellTreasury, uint256 newSellFoundation, uint256 newSellRewards, uint256 newSellAutoLiquidity);
    event SwapThresholdUpdated(uint256 indexed _newThreshold);
    event InternalSwapStatusUpdated(bool indexed _status);
    event Whitelist(address indexed _target, bool indexed _status);
    event Blacklist(address indexed _target, bool indexed _status);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );

    constructor() ERC20("Lillian Token", "LYF") {

        uniswapRouter = DexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        pairAddress = DexFactory(uniswapRouter.factory()).createPair(
            address(this),
            uniswapRouter.WETH()
        );
        whitelisted[msg.sender] = true;
        whitelisted[address(uniswapRouter)] = true;
        whitelisted[FoundationAddress] = true;
        whitelisted[TreasuryAddress] = true;
        whitelisted[FinanceAddress] = true;
        whitelisted[RewardsAddress] = true;
        whitelisted[address(this)] = true;       
        _mint(0xeCe1129c4518dA93C802648d5220D34Bcc7e9AC0, _totalSupply);

    }

    function setFinanceAddress(address _newaddress) external onlyOwner {
        require(_newaddress != address(0), "can not set marketing to dead wallet");
        FinanceAddress = payable(_newaddress);
        emit FinanceAddressChanged(_newaddress);
    }

    function setTreasuryAddress(address _newaddress) external onlyOwner {
        require(_newaddress != address(0), "can not set marketing to dead wallet");
        TreasuryAddress = payable(_newaddress);
        emit TreasuryAddressChanged(_newaddress);
    }

    function setFoundationAddress(address _newaddress) external onlyOwner {
        require(_newaddress != address(0), "can not set marketing to dead wallet");
        FoundationAddress = payable(_newaddress);
        emit FoundationAddressChanged(_newaddress);
    }

    function setRewardsAddress(address _newaddress) external onlyOwner {
        require(_newaddress != address(0), "can not set marketing to dead wallet");
        RewardsAddress = payable(_newaddress);
        emit RewardsAddressChanged(_newaddress);
    }

    function enableTrading() external onlyOwner {
        require(!tradingEnabled, "Trading is already enabled");
        tradingEnabled = true;
        startTradingBlock = block.number;
    }

    function disableTrading() external onlyOwner {
        require(tradingEnabled, "Trading is already disabled");
        tradingEnabled = false;
    }

    function setBuyTaxes(uint256 _newBuyFinanceTax, uint256 _newBuyTreasury, uint256 _newBuyFoundation, uint256 _newBuyRewards, uint256 _newBuyAutoLiquidity) external onlyOwner {
        BuyFinanceTax = _newBuyFinanceTax;
        BuyTreasury = _newBuyTreasury;
        BuyFoundation = _newBuyFoundation;
        BuyRewards = _newBuyRewards;
        BuyAutoLiquidity = _newBuyAutoLiquidity;
        buyTaxes = BuyFinanceTax.add(BuyTreasury).add(BuyFoundation).add(BuyRewards).add(BuyAutoLiquidity);
        emit BuyFeesUpdated(BuyFinanceTax, BuyTreasury, BuyFoundation, BuyRewards, BuyAutoLiquidity);
    }

    function setSellTaxes(uint256 _newSellFinanceTax, uint256 _newSellTreasury, uint256 _newSellFoundation, uint256 _newSellRewards, uint256 _newSellAutoLiquidity) external onlyOwner {
        SellFinanceTax = _newSellFinanceTax;
        SellTreasury = _newSellTreasury;
        SellFoundation = _newSellFoundation;
        SellRewards = _newSellRewards;
        SellAutoLiquidity = _newSellAutoLiquidity;
        sellTaxes = SellFinanceTax.add(SellTreasury).add(SellFoundation).add(SellRewards).add(SellAutoLiquidity);
        emit SellFeesUpdated(SellFinanceTax, SellTreasury, SellFoundation, SellRewards, SellAutoLiquidity);
    }

    function setSwapTokensAtAmount(uint256 _newAmount) external onlyOwner {
        require(_newAmount > 0 && _newAmount <= (_totalSupply * 5) / 1000, "Minimum swap amount must be greater than 0 and less than 0.5% of total supply!");
        swapTokensAtAmount = _newAmount;
        emit SwapThresholdUpdated(swapTokensAtAmount);
    }

    function toggleSwapping() external onlyOwner {
        swapAndLiquifyEnabled = (swapAndLiquifyEnabled) ? false : true;
    }

    function setWhitelistStatus(address _wallet, bool _status) external onlyOwner {
        whitelisted[_wallet] = _status;
        emit Whitelist(_wallet, _status);
    }

    function setBlacklist(address _address, bool _isBlacklisted) external onlyOwner {
        blacklisted[_address] = _isBlacklisted;
        emit Blacklist(_address, _isBlacklisted);
    }

    function checkWhitelist(address _wallet) external view returns (bool) {
        return whitelisted[_wallet];
    }

    function checkBlacklist(address _address) external view returns (bool) {
        return blacklisted[_address];
    }

    // this function is reponsible for managing tax, if _from or _to is whitelisted, we simply return _amount and skip all the limitations
    function _takeTax(
        address _from,
        address _to,
        uint256 _amount
    ) internal returns (uint256) {
        if (whitelisted[_from] || whitelisted[_to]) {
            return _amount;
        }
        uint256 totalTax = transferTaxes;

        if (_to == pairAddress) {
            totalTax = sellTaxes;
        } else if (_from == pairAddress) {
            totalTax = buyTaxes;
        }

        uint256 tax = 0;
        if (totalTax > 0) {
            tax = (_amount * totalTax) / 1000;
            super._transfer(_from, address(this), tax);
        }
        return (_amount - tax);
    }

function _transfer(
    address _from,
    address _to,
    uint256 _amount
) internal virtual override {
    require(_from != address(0), "transfer from address zero");
    require(_to != address(0), "transfer to address zero");
    require(_amount > 0, "Transfer amount must be greater than zero");
    require(!blacklisted[_from], "Transfer from blacklisted address");
    require(!blacklisted[_to], "Transfer to blacklisted address");
    uint256 toTransfer = _takeTax(_from, _to, _amount);

    bool canSwap = balanceOf(address(this)) >= swapTokensAtAmount;
    if (
        !whitelisted[_from] &&
        !whitelisted[_to] &&
        !blacklisted[_from] &&
        !blacklisted[_to] 
    ) {
        require(tradingEnabled, "Trading not active");
        if (
            pairAddress == _to &&
            swapAndLiquifyEnabled &&
            canSwap &&
            !isSwapping
        ) {
            internalSwap();
        }
    }
    super._transfer(_from, _to, toTransfer);
}

    function internalSwap() internal {
    isSwapping = true;
    uint256 taxAmount = balanceOf(address(this)); 
    if (taxAmount == 0) {
        return;
    }

    uint256 totalFee = (buyTaxes).add(sellTaxes);

    uint256 FinanceShare =(BuyFinanceTax).add(SellFinanceTax);
    uint256 TreasuryShare = (BuyTreasury).add(SellTreasury);
    uint256 FoundationShare =(BuyFoundation).add(SellFoundation);
    uint256 RewardsShare =(BuyRewards).add(SellRewards);
    uint256 LiquidityShare =(BuyAutoLiquidity).add(SellAutoLiquidity);

    if (LiquidityShare == 0) {
        totalFee = FinanceShare.add(TreasuryShare).add(FoundationShare).add(RewardsShare);
    }

    uint256 halfLPTokens = 0;
    if (totalFee > 0) {
        halfLPTokens = taxAmount.mul(LiquidityShare).div(totalFee).div(2);
    }
    uint256 swapTokens = taxAmount.sub(halfLPTokens);
    uint256 initialBalance = address(this).balance;
    swapToETH(swapTokens);
    uint256 newBalance = address(this).balance.sub(initialBalance);

    uint256 ethForLiquidity = 0;
    if (LiquidityShare > 0) {
        ethForLiquidity = newBalance.mul(LiquidityShare).div(totalFee).div(2);
    
    addLiquidity(halfLPTokens, ethForLiquidity);
    emit SwapAndLiquify(halfLPTokens, ethForLiquidity, halfLPTokens);
    }
    uint256 ethForFinance = newBalance.mul(FinanceShare).div(totalFee);
    uint256 ethForTreasury = newBalance.mul(TreasuryShare).div(totalFee);
    uint256 ethForFoundation = newBalance.mul(FoundationShare).div(totalFee);
    uint256 ethForRewards = newBalance.mul(RewardsShare).div(totalFee);

    transferToAddressETH(FinanceAddress, ethForFinance);
    transferToAddressETH(TreasuryAddress, ethForTreasury);
    transferToAddressETH(FoundationAddress, ethForFoundation);
    transferToAddressETH(RewardsAddress, ethForRewards);

    isSwapping = false;
}

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

    function swapToETH(uint256 _amount) internal {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapRouter.WETH();
        _approve(address(this), address(uniswapRouter), _amount);
        uniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            _amount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
    
    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapRouter), tokenAmount);

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

    function withdrawStuckETH() external onlyOwner {
        uint256 balance = address(this).balance;
        require(balance > 0, "No ETH available to withdraw");

        (bool success, ) = address(msg.sender).call{value: balance}("");
        require(success, "transferring ETH failed");
    }

    function withdrawStuckTokens(address ERC20_token) external onlyOwner {
        require(ERC20_token != address(this), "Owner cannot claim native tokens");

        uint256 tokenBalance = IERC20(ERC20_token).balanceOf(address(this));
        require(tokenBalance > 0, "No tokens available to withdraw");

        bool success = IERC20(ERC20_token).transfer(msg.sender, tokenBalance);
        require(success, "transferring tokens failed!");
    }

    receive() external payable {}
}

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":"_target","type":"address"},{"indexed":true,"internalType":"bool","name":"_status","type":"bool"}],"name":"Blacklist","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newBuyFinanceTax","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBuyTreasury","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBuyFoundation","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBuyRewards","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBuyAutoLiquidity","type":"uint256"}],"name":"BuyFeesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_trWallet","type":"address"}],"name":"FinanceAddressChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_trWallet","type":"address"}],"name":"FoundationAddressChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"_status","type":"bool"}],"name":"InternalSwapStatusUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_trWallet","type":"address"}],"name":"RewardsAddressChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newSellFinanceTax","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newSellTreasury","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newSellFoundation","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newSellRewards","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newSellAutoLiquidity","type":"uint256"}],"name":"SellFeesUpdated","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":true,"internalType":"uint256","name":"_newThreshold","type":"uint256"}],"name":"SwapThresholdUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_trWallet","type":"address"}],"name":"TreasuryAddressChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_target","type":"address"},{"indexed":true,"internalType":"bool","name":"_status","type":"bool"}],"name":"Whitelist","type":"event"},{"inputs":[],"name":"BuyAutoLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BuyFinanceTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BuyFoundation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BuyRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BuyTreasury","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FinanceAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FoundationAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RewardsAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SellAutoLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SellFinanceTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SellFoundation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SellRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SellTreasury","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TreasuryAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"checkBlacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"checkWhitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isSwapping","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"pairAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_isBlacklisted","type":"bool"}],"name":"setBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newBuyFinanceTax","type":"uint256"},{"internalType":"uint256","name":"_newBuyTreasury","type":"uint256"},{"internalType":"uint256","name":"_newBuyFoundation","type":"uint256"},{"internalType":"uint256","name":"_newBuyRewards","type":"uint256"},{"internalType":"uint256","name":"_newBuyAutoLiquidity","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newaddress","type":"address"}],"name":"setFinanceAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newaddress","type":"address"}],"name":"setFoundationAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newaddress","type":"address"}],"name":"setRewardsAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newSellFinanceTax","type":"uint256"},{"internalType":"uint256","name":"_newSellTreasury","type":"uint256"},{"internalType":"uint256","name":"_newSellFoundation","type":"uint256"},{"internalType":"uint256","name":"_newSellRewards","type":"uint256"},{"internalType":"uint256","name":"_newSellAutoLiquidity","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newAmount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newaddress","type":"address"}],"name":"setTreasuryAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setWhitelistStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTradingBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toggleSwapping","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"transferTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapRouter","outputs":[{"internalType":"contract DexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"ERC20_token","type":"address"}],"name":"withdrawStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526014600655600d6007556011600855600a6009556000600a55600a546009546008546007546006546200003891906200056b565b6200004491906200056b565b6200005091906200056b565b6200005c91906200056b565b600b556019600c55600f600d556014600e55600a600f55600a601055601054600f54600e54600d54600c546200009391906200056b565b6200009f91906200056b565b620000ab91906200056b565b620000b791906200056b565b6011556000601255620000d9620186a06a6342fd08f00f637800000062000593565b6015556016805462ffffff19166001179055601880546001600160a01b031990811673313df74b4c441c1ad253d89bb172141b8ba213b1179091556019805482167392c2a076680c0b47f717ac587bf0b895dde3b252179055601a8054821673e4752a7ebc1948cb8e01234df49e6e576e1931e3179055601b80549091167316ddbd8d5c7e11fb7a819b55d6a78e03a909d8281790553480156200017c57600080fd5b506040518060400160405280600d81526020016c2634b63634b0b7102a37b5b2b760991b81525060405180604001604052806003815260200162262ca360e91b8152508160039081620001d091906200065a565b506004620001df82826200065a565b505050620001fc620001f66200042860201b60201c565b6200042c565b737a250d5630b4cf539739df2c5dacb4c659f2488d60808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000252573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000278919062000726565b6001600160a01b031663c9c65396306080516001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002c8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ee919062000726565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200033c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000362919062000726565b6001600160a01b0390811660a052336000908152601360205260408082208054600160ff199182168117909255608051851684528284208054821683179055601a54851684528284208054821683179055601954851684528284208054821683179055601854851684528284208054821683179055601b5490941683528183208054851682179055308352912080549092161790556200042273ece1129c4518da93c802648d5220d34bcc7e9ac06a6342fd08f00f63780000006200047e565b62000758565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216620004d95760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060026000828254620004ed91906200056b565b90915550506001600160a01b038216600090815260208190526040812080548392906200051c9084906200056b565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b808201808211156200058d57634e487b7160e01b600052601160045260246000fd5b92915050565b600082620005b157634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620005e157607f821691505b6020821081036200060257634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200056657600081815260208120601f850160051c81016020861015620006315750805b601f850160051c820191505b8181101562000652578281556001016200063d565b505050505050565b81516001600160401b03811115620006765762000676620005b6565b6200068e81620006878454620005cc565b8462000608565b602080601f831160018114620006c65760008415620006ad5750858301515b600019600386901b1c1916600185901b17855562000652565b600085815260208120601f198616915b82811015620006f757888601518255948401946001909101908401620006d6565b5085821015620007165787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200073957600080fd5b81516001600160a01b03811681146200075157600080fd5b9392505050565b60805160a0516128cd620007b66000396000818161074601528181611b9a01528181611cc30152611cf701526000818161063201528181612213015281816122cc015281816123080152818161238201526123a901526128cd6000f3fe6080604052600436106103395760003560e01c80638da5cb5b116101ab578063cb963728116100f7578063e7d08c0711610095578063f41377ca1161006f578063f41377ca14610989578063f5648a4f146109a9578063f66895a3146109be578063fa5a8792146109d457600080fd5b8063e7d08c071461093e578063ef586f7114610954578063f2fde38b1461096957600080fd5b8063dd6c7689116100d1578063dd6c7689146108c3578063de5e7f86146108d9578063e2f45605146108ef578063e6807ca91461090557600080fd5b8063cb9637281461083d578063ce7ca6151461085d578063dd62ed3e1461087d57600080fd5b8063a9059cbb11610164578063b88631151161013e578063b8863115146107be578063c054f2f4146107dd578063c2dd47a8146107fd578063c791fc541461081d57600080fd5b8063a9059cbb14610768578063ac4cf0c014610788578063afa4f3b21461079e57600080fd5b80638da5cb5b146106b557806395d89b41146106d3578063a44ae040146106e8578063a457c2d7146106fe578063a4744d731461071e578063a8b089821461073457600080fd5b80634ada218b1161028557806370a082311161022357806376be96f3116101fd57806376be96f314610654578063864701a51461066a5780638906758d146106805780638a8c523c146106a057600080fd5b806370a08231146105d5578063715018a61461060b578063735de9f71461062057600080fd5b80635b5c251f1161025f5780635b5c251f146105515780636605bfda1461058957806368831a80146105a9578063707b51f6146105bf57600080fd5b80634ada218b146104fb5780634e5df7501461051b5780635331803c1461053b57600080fd5b80631950c218116102f2578063313ce567116102cc578063313ce5671461048557806339509351146104a157806340ac48d3146104c15780634a74bb02146104e157600080fd5b80631950c21814610416578063232272ff1461044f57806323b872dd1461046557600080fd5b806306fdde0314610345578063095ea7b3146103705780630c424284146103a0578063153b0d1e146103c257806317700f01146103e257806318160ddd146103f757600080fd5b3661034057005b600080fd5b34801561035157600080fd5b5061035a6109ea565b60405161036791906124b1565b60405180910390f35b34801561037c57600080fd5b5061039061038b366004612514565b610a7c565b6040519015158152602001610367565b3480156103ac57600080fd5b506103c06103bb36600461254e565b610a93565b005b3480156103ce57600080fd5b506103c06103dd36600461254e565b610b1a565b3480156103ee57600080fd5b506103c0610b98565b34801561040357600080fd5b506002545b604051908152602001610367565b34801561042257600080fd5b50610390610431366004612587565b6001600160a01b031660009081526013602052604090205460ff1690565b34801561045b57600080fd5b5061040860085481565b34801561047157600080fd5b506103906104803660046125a4565b610c28565b34801561049157600080fd5b5060405160128152602001610367565b3480156104ad57600080fd5b506103906104bc366004612514565b610cd4565b3480156104cd57600080fd5b506103c06104dc3660046125e5565b610d10565b3480156104ed57600080fd5b506016546103909060ff1681565b34801561050757600080fd5b506016546103909062010000900460ff1681565b34801561052757600080fd5b506103c0610536366004612587565b610dca565b34801561054757600080fd5b5061040860125481565b34801561055d57600080fd5b50601954610571906001600160a01b031681565b6040516001600160a01b039091168152602001610367565b34801561059557600080fd5b506103c06105a4366004612587565b610e64565b3480156105b557600080fd5b50610408600a5481565b3480156105cb57600080fd5b5061040860095481565b3480156105e157600080fd5b506104086105f0366004612587565b6001600160a01b031660009081526020819052604090205490565b34801561061757600080fd5b506103c0610efe565b34801561062c57600080fd5b506105717f000000000000000000000000000000000000000000000000000000000000000081565b34801561066057600080fd5b5061040860175481565b34801561067657600080fd5b50610408600b5481565b34801561068c57600080fd5b506103c061069b366004612587565b610f34565b3480156106ac57600080fd5b506103c0610fce565b3480156106c157600080fd5b506005546001600160a01b0316610571565b3480156106df57600080fd5b5061035a611068565b3480156106f457600080fd5b5061040860075481565b34801561070a57600080fd5b50610390610719366004612514565b611077565b34801561072a57600080fd5b5061040860065481565b34801561074057600080fd5b506105717f000000000000000000000000000000000000000000000000000000000000000081565b34801561077457600080fd5b50610390610783366004612514565b611110565b34801561079457600080fd5b50610408600d5481565b3480156107aa57600080fd5b506103c06107b9366004612620565b61111d565b3480156107ca57600080fd5b5060165461039090610100900460ff1681565b3480156107e957600080fd5b50601b54610571906001600160a01b031681565b34801561080957600080fd5b50601854610571906001600160a01b031681565b34801561082957600080fd5b506103c06108383660046125e5565b611235565b34801561084957600080fd5b506103c0610858366004612587565b6112de565b34801561086957600080fd5b50601a54610571906001600160a01b031681565b34801561088957600080fd5b50610408610898366004612639565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156108cf57600080fd5b50610408600f5481565b3480156108e557600080fd5b5061040860105481565b3480156108fb57600080fd5b5061040860155481565b34801561091157600080fd5b50610390610920366004612587565b6001600160a01b031660009081526014602052604090205460ff1690565b34801561094a57600080fd5b50610408600c5481565b34801561096057600080fd5b506103c06114e5565b34801561097557600080fd5b506103c0610984366004612587565b611536565b34801561099557600080fd5b506103c06109a4366004612587565b6115d1565b3480156109b557600080fd5b506103c061166b565b3480156109ca57600080fd5b5061040860115481565b3480156109e057600080fd5b50610408600e5481565b6060600380546109f990612667565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2590612667565b8015610a725780601f10610a4757610100808354040283529160200191610a72565b820191906000526020600020905b815481529060010190602001808311610a5557829003601f168201915b5050505050905090565b6000610a8933848461177f565b5060015b92915050565b6005546001600160a01b03163314610ac65760405162461bcd60e51b8152600401610abd906126a1565b60405180910390fd5b6001600160a01b038216600081815260136020526040808220805460ff191685151590811790915590519092917f5a25e09a5dba33161281055e015f1279b6b10204d8f90dd56a8ce2b82322d43d91a35050565b6005546001600160a01b03163314610b445760405162461bcd60e51b8152600401610abd906126a1565b6001600160a01b038216600081815260146020526040808220805460ff191685151590811790915590519092917ff7e58a63a036e3a7ef7921f83b6ae47930cf5c293dd3bfe7a857c6863409046d91a35050565b6005546001600160a01b03163314610bc25760405162461bcd60e51b8152600401610abd906126a1565b60165462010000900460ff16610c1a5760405162461bcd60e51b815260206004820152601b60248201527f54726164696e6720697320616c72656164792064697361626c656400000000006044820152606401610abd565b6016805462ff000019169055565b6000610c358484846118a3565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610cba5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610abd565b610cc7853385840361177f565b60019150505b9392505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610a89918590610d0b9086906126ec565b61177f565b6005546001600160a01b03163314610d3a5760405162461bcd60e51b8152600401610abd906126a1565b6006859055600784905560088390556009829055600a819055610d6b81610d65848187818b8b611c0d565b90611c0d565b600b55600654600754600854600954600a546040805194855260208501939093529183015260608201527f733eb8db6a5cd6df046e76030e911fe8600da82fc87cd448268aa418efcad5f9906080015b60405180910390a25050505050565b6005546001600160a01b03163314610df45760405162461bcd60e51b8152600401610abd906126a1565b6001600160a01b038116610e1a5760405162461bcd60e51b8152600401610abd906126ff565b601880546001600160a01b0319166001600160a01b0383169081179091556040517f64d07b7b0d48d6c3b5e1005826e76097aaee8adef5bea0f66f453ee05f0f896790600090a250565b6005546001600160a01b03163314610e8e5760405162461bcd60e51b8152600401610abd906126a1565b6001600160a01b038116610eb45760405162461bcd60e51b8152600401610abd906126ff565b601980546001600160a01b0319166001600160a01b0383169081179091556040517f9073dfac663173e64aa95665faedae52e2246f9bcdd3890fbfaf6733b46bba1390600090a250565b6005546001600160a01b03163314610f285760405162461bcd60e51b8152600401610abd906126a1565b610f326000611c19565b565b6005546001600160a01b03163314610f5e5760405162461bcd60e51b8152600401610abd906126a1565b6001600160a01b038116610f845760405162461bcd60e51b8152600401610abd906126ff565b601b80546001600160a01b0319166001600160a01b0383169081179091556040517f251a2e4478aadd97db6528862f79a28a6813b79f35d6760c60b67be5e84bba5190600090a250565b6005546001600160a01b03163314610ff85760405162461bcd60e51b8152600401610abd906126a1565b60165462010000900460ff16156110515760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c65640000000000006044820152606401610abd565b6016805462ff000019166201000017905543601755565b6060600480546109f990612667565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156110f95760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610abd565b611106338585840361177f565b5060019392505050565b6000610a893384846118a3565b6005546001600160a01b031633146111475760405162461bcd60e51b8152600401610abd906126a1565b60008111801561117957506103e861116b6a6342fd08f00f63780000006005612743565b611175919061275a565b8111155b6112025760405162461bcd60e51b815260206004820152604e60248201527f4d696e696d756d207377617020616d6f756e74206d757374206265206772656160448201527f746572207468616e203020616e64206c657373207468616e20302e3525206f6660648201526d20746f74616c20737570706c792160901b608482015260a401610abd565b601581905560405181907f18ff2fc8464635e4f668567019152095047e34d7a2ab4b97661ba4dc7fd0647690600090a250565b6005546001600160a01b0316331461125f5760405162461bcd60e51b8152600401610abd906126a1565b600c859055600d849055600e839055600f829055601081905561128a81610d65848187818b8b611c0d565b601155600c54600d54600e54600f546010546040805194855260208501939093529183015260608201527fa52bd0cf705f42201d4097dc2e9c2b39d0a1b7529e8d121faed89fd30bcf236f90608001610dbb565b6005546001600160a01b031633146113085760405162461bcd60e51b8152600401610abd906126a1565b306001600160a01b038216036113605760405162461bcd60e51b815260206004820181905260248201527f4f776e65722063616e6e6f7420636c61696d206e617469766520746f6b656e736044820152606401610abd565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156113a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113cb919061277c565b90506000811161141d5760405162461bcd60e51b815260206004820152601f60248201527f4e6f20746f6b656e7320617661696c61626c6520746f207769746864726177006044820152606401610abd565b60405163a9059cbb60e01b8152336004820152602481018290526000906001600160a01b0384169063a9059cbb906044016020604051808303816000875af115801561146d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114919190612795565b9050806114e05760405162461bcd60e51b815260206004820152601b60248201527f7472616e7366657272696e6720746f6b656e73206661696c65642100000000006044820152606401610abd565b505050565b6005546001600160a01b0316331461150f5760405162461bcd60e51b8152600401610abd906126a1565b60165460ff16611520576001611523565b60005b6016805460ff1916911515919091179055565b6005546001600160a01b031633146115605760405162461bcd60e51b8152600401610abd906126a1565b6001600160a01b0381166115c55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610abd565b6115ce81611c19565b50565b6005546001600160a01b031633146115fb5760405162461bcd60e51b8152600401610abd906126a1565b6001600160a01b0381166116215760405162461bcd60e51b8152600401610abd906126ff565b601a80546001600160a01b0319166001600160a01b0383169081179091556040517f95203be801b3b4835c73e166c564816fba4ae2f167907273eb1c85263ec9882d90600090a250565b6005546001600160a01b031633146116955760405162461bcd60e51b8152600401610abd906126a1565b47806116e35760405162461bcd60e51b815260206004820152601c60248201527f4e6f2045544820617661696c61626c6520746f207769746864726177000000006044820152606401610abd565b604051600090339083908381818185875af1925050503d8060008114611725576040519150601f19603f3d011682016040523d82523d6000602084013e61172a565b606091505b505090508061177b5760405162461bcd60e51b815260206004820152601760248201527f7472616e7366657272696e6720455448206661696c65640000000000000000006044820152606401610abd565b5050565b6001600160a01b0383166117e15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610abd565b6001600160a01b0382166118425760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610abd565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166118f95760405162461bcd60e51b815260206004820152601a60248201527f7472616e736665722066726f6d2061646472657373207a65726f0000000000006044820152606401610abd565b6001600160a01b03821661194f5760405162461bcd60e51b815260206004820152601860248201527f7472616e7366657220746f2061646472657373207a65726f00000000000000006044820152606401610abd565b600081116119b15760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610abd565b6001600160a01b03831660009081526014602052604090205460ff1615611a245760405162461bcd60e51b815260206004820152602160248201527f5472616e736665722066726f6d20626c61636b6c6973746564206164647265736044820152607360f81b6064820152608401610abd565b6001600160a01b03821660009081526014602052604090205460ff1615611a8d5760405162461bcd60e51b815260206004820152601f60248201527f5472616e7366657220746f20626c61636b6c69737465642061646472657373006044820152606401610abd565b6000611a9a848484611c6b565b60155430600090815260208181526040808320546001600160a01b038a16845260139092529091205492935010159060ff16158015611af257506001600160a01b03841660009081526013602052604090205460ff16155b8015611b1757506001600160a01b03851660009081526014602052604090205460ff16155b8015611b3c57506001600160a01b03841660009081526014602052604090205460ff16155b15611bfb5760165462010000900460ff16611b8e5760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f742061637469766560701b6044820152606401610abd565b836001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316148015611bd1575060165460ff165b8015611bda5750805b8015611bee5750601654610100900460ff16155b15611bfb57611bfb611d73565b611c06858584611fc9565b5050505050565b6000610ccd82846126ec565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03831660009081526013602052604081205460ff1680611caa57506001600160a01b03831660009081526013602052604090205460ff165b15611cb6575080610ccd565b6012546001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811690851603611cf55750601154611d33565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031603611d335750600b545b60008115611d5f576103e8611d488386612743565b611d52919061275a565b9050611d5f863083611fc9565b611d6981856127b2565b9695505050505050565b6016805461ff00191661010017905530600090815260208190526040812054905080600003611d9f5750565b6000611db8601154600b54611c0d90919063ffffffff16565b90506000611dd3600c54600654611c0d90919063ffffffff16565b90506000611dee600d54600754611c0d90919063ffffffff16565b90506000611e09600e54600854611c0d90919063ffffffff16565b90506000611e24600f54600954611c0d90919063ffffffff16565b90506000611e3f601054600a54611c0d90919063ffffffff16565b905080600003611e5c57611e5982610d6585818989611c0d565b95505b60008615611e7e57611e7b6002611e7589818c87612198565b906121a4565b90505b6000611e8a89836121b0565b905047611e96826121bc565b6000611ea247836121b0565b905060008515611f0b57611ebd6002611e758d81868b612198565b9050611ec9858261237c565b60408051868152602081018390529081018690527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b6000611f1b8c611e75858e612198565b90506000611f2d8d611e75868e612198565b90506000611f3f8e611e75878e612198565b90506000611f518f611e75888e612198565b601854909150611f6a906001600160a01b03168561247b565b601954611f80906001600160a01b03168461247b565b601a54611f96906001600160a01b03168361247b565b601b54611fac906001600160a01b03168261247b565b50506016805461ff00191690555050505050505050505050505050565b6001600160a01b03831661202d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610abd565b6001600160a01b03821661208f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610abd565b6001600160a01b038316600090815260208190526040902054818110156121075760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610abd565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061213e9084906126ec565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161218a91815260200190565b60405180910390a350505050565b6000610ccd8284612743565b6000610ccd828461275a565b6000610ccd82846127b2565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106121f1576121f16127c5565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561226f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061229391906127db565b816001815181106122a6576122a66127c5565b60200260200101906001600160a01b031690816001600160a01b0316815250506122f1307f00000000000000000000000000000000000000000000000000000000000000008461177f565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac947906123469085906000908690309042906004016127f8565b600060405180830381600087803b15801561236057600080fd5b505af1158015612374573d6000803e3d6000fd5b505050505050565b6123a7307f00000000000000000000000000000000000000000000000000000000000000008461177f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f305d7198230856000806123ee6005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015612456573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611c069190612869565b6040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156114e0573d6000803e3d6000fd5b600060208083528351808285015260005b818110156124de578581018301518582016040015282016124c2565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146115ce57600080fd5b6000806040838503121561252757600080fd5b8235612532816124ff565b946020939093013593505050565b80151581146115ce57600080fd5b6000806040838503121561256157600080fd5b823561256c816124ff565b9150602083013561257c81612540565b809150509250929050565b60006020828403121561259957600080fd5b8135610ccd816124ff565b6000806000606084860312156125b957600080fd5b83356125c4816124ff565b925060208401356125d4816124ff565b929592945050506040919091013590565b600080600080600060a086880312156125fd57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60006020828403121561263257600080fd5b5035919050565b6000806040838503121561264c57600080fd5b8235612657816124ff565b9150602083013561257c816124ff565b600181811c9082168061267b57607f821691505b60208210810361269b57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820180821115610a8d57610a8d6126d6565b60208082526024908201527f63616e206e6f7420736574206d61726b6574696e6720746f20646561642077616040820152631b1b195d60e21b606082015260800190565b8082028115828204841417610a8d57610a8d6126d6565b60008261277757634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561278e57600080fd5b5051919050565b6000602082840312156127a757600080fd5b8151610ccd81612540565b81810381811115610a8d57610a8d6126d6565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156127ed57600080fd5b8151610ccd816124ff565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156128485784516001600160a01b031683529383019391830191600101612823565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561287e57600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220d5059759ec8cb10bd5bcf37fbf0908978c51512d6118ed04673e3007e28f279d64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106103395760003560e01c80638da5cb5b116101ab578063cb963728116100f7578063e7d08c0711610095578063f41377ca1161006f578063f41377ca14610989578063f5648a4f146109a9578063f66895a3146109be578063fa5a8792146109d457600080fd5b8063e7d08c071461093e578063ef586f7114610954578063f2fde38b1461096957600080fd5b8063dd6c7689116100d1578063dd6c7689146108c3578063de5e7f86146108d9578063e2f45605146108ef578063e6807ca91461090557600080fd5b8063cb9637281461083d578063ce7ca6151461085d578063dd62ed3e1461087d57600080fd5b8063a9059cbb11610164578063b88631151161013e578063b8863115146107be578063c054f2f4146107dd578063c2dd47a8146107fd578063c791fc541461081d57600080fd5b8063a9059cbb14610768578063ac4cf0c014610788578063afa4f3b21461079e57600080fd5b80638da5cb5b146106b557806395d89b41146106d3578063a44ae040146106e8578063a457c2d7146106fe578063a4744d731461071e578063a8b089821461073457600080fd5b80634ada218b1161028557806370a082311161022357806376be96f3116101fd57806376be96f314610654578063864701a51461066a5780638906758d146106805780638a8c523c146106a057600080fd5b806370a08231146105d5578063715018a61461060b578063735de9f71461062057600080fd5b80635b5c251f1161025f5780635b5c251f146105515780636605bfda1461058957806368831a80146105a9578063707b51f6146105bf57600080fd5b80634ada218b146104fb5780634e5df7501461051b5780635331803c1461053b57600080fd5b80631950c218116102f2578063313ce567116102cc578063313ce5671461048557806339509351146104a157806340ac48d3146104c15780634a74bb02146104e157600080fd5b80631950c21814610416578063232272ff1461044f57806323b872dd1461046557600080fd5b806306fdde0314610345578063095ea7b3146103705780630c424284146103a0578063153b0d1e146103c257806317700f01146103e257806318160ddd146103f757600080fd5b3661034057005b600080fd5b34801561035157600080fd5b5061035a6109ea565b60405161036791906124b1565b60405180910390f35b34801561037c57600080fd5b5061039061038b366004612514565b610a7c565b6040519015158152602001610367565b3480156103ac57600080fd5b506103c06103bb36600461254e565b610a93565b005b3480156103ce57600080fd5b506103c06103dd36600461254e565b610b1a565b3480156103ee57600080fd5b506103c0610b98565b34801561040357600080fd5b506002545b604051908152602001610367565b34801561042257600080fd5b50610390610431366004612587565b6001600160a01b031660009081526013602052604090205460ff1690565b34801561045b57600080fd5b5061040860085481565b34801561047157600080fd5b506103906104803660046125a4565b610c28565b34801561049157600080fd5b5060405160128152602001610367565b3480156104ad57600080fd5b506103906104bc366004612514565b610cd4565b3480156104cd57600080fd5b506103c06104dc3660046125e5565b610d10565b3480156104ed57600080fd5b506016546103909060ff1681565b34801561050757600080fd5b506016546103909062010000900460ff1681565b34801561052757600080fd5b506103c0610536366004612587565b610dca565b34801561054757600080fd5b5061040860125481565b34801561055d57600080fd5b50601954610571906001600160a01b031681565b6040516001600160a01b039091168152602001610367565b34801561059557600080fd5b506103c06105a4366004612587565b610e64565b3480156105b557600080fd5b50610408600a5481565b3480156105cb57600080fd5b5061040860095481565b3480156105e157600080fd5b506104086105f0366004612587565b6001600160a01b031660009081526020819052604090205490565b34801561061757600080fd5b506103c0610efe565b34801561062c57600080fd5b506105717f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b34801561066057600080fd5b5061040860175481565b34801561067657600080fd5b50610408600b5481565b34801561068c57600080fd5b506103c061069b366004612587565b610f34565b3480156106ac57600080fd5b506103c0610fce565b3480156106c157600080fd5b506005546001600160a01b0316610571565b3480156106df57600080fd5b5061035a611068565b3480156106f457600080fd5b5061040860075481565b34801561070a57600080fd5b50610390610719366004612514565b611077565b34801561072a57600080fd5b5061040860065481565b34801561074057600080fd5b506105717f000000000000000000000000c587312213e1cb20b8dff891ca593d896dae240a81565b34801561077457600080fd5b50610390610783366004612514565b611110565b34801561079457600080fd5b50610408600d5481565b3480156107aa57600080fd5b506103c06107b9366004612620565b61111d565b3480156107ca57600080fd5b5060165461039090610100900460ff1681565b3480156107e957600080fd5b50601b54610571906001600160a01b031681565b34801561080957600080fd5b50601854610571906001600160a01b031681565b34801561082957600080fd5b506103c06108383660046125e5565b611235565b34801561084957600080fd5b506103c0610858366004612587565b6112de565b34801561086957600080fd5b50601a54610571906001600160a01b031681565b34801561088957600080fd5b50610408610898366004612639565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156108cf57600080fd5b50610408600f5481565b3480156108e557600080fd5b5061040860105481565b3480156108fb57600080fd5b5061040860155481565b34801561091157600080fd5b50610390610920366004612587565b6001600160a01b031660009081526014602052604090205460ff1690565b34801561094a57600080fd5b50610408600c5481565b34801561096057600080fd5b506103c06114e5565b34801561097557600080fd5b506103c0610984366004612587565b611536565b34801561099557600080fd5b506103c06109a4366004612587565b6115d1565b3480156109b557600080fd5b506103c061166b565b3480156109ca57600080fd5b5061040860115481565b3480156109e057600080fd5b50610408600e5481565b6060600380546109f990612667565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2590612667565b8015610a725780601f10610a4757610100808354040283529160200191610a72565b820191906000526020600020905b815481529060010190602001808311610a5557829003601f168201915b5050505050905090565b6000610a8933848461177f565b5060015b92915050565b6005546001600160a01b03163314610ac65760405162461bcd60e51b8152600401610abd906126a1565b60405180910390fd5b6001600160a01b038216600081815260136020526040808220805460ff191685151590811790915590519092917f5a25e09a5dba33161281055e015f1279b6b10204d8f90dd56a8ce2b82322d43d91a35050565b6005546001600160a01b03163314610b445760405162461bcd60e51b8152600401610abd906126a1565b6001600160a01b038216600081815260146020526040808220805460ff191685151590811790915590519092917ff7e58a63a036e3a7ef7921f83b6ae47930cf5c293dd3bfe7a857c6863409046d91a35050565b6005546001600160a01b03163314610bc25760405162461bcd60e51b8152600401610abd906126a1565b60165462010000900460ff16610c1a5760405162461bcd60e51b815260206004820152601b60248201527f54726164696e6720697320616c72656164792064697361626c656400000000006044820152606401610abd565b6016805462ff000019169055565b6000610c358484846118a3565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610cba5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610abd565b610cc7853385840361177f565b60019150505b9392505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610a89918590610d0b9086906126ec565b61177f565b6005546001600160a01b03163314610d3a5760405162461bcd60e51b8152600401610abd906126a1565b6006859055600784905560088390556009829055600a819055610d6b81610d65848187818b8b611c0d565b90611c0d565b600b55600654600754600854600954600a546040805194855260208501939093529183015260608201527f733eb8db6a5cd6df046e76030e911fe8600da82fc87cd448268aa418efcad5f9906080015b60405180910390a25050505050565b6005546001600160a01b03163314610df45760405162461bcd60e51b8152600401610abd906126a1565b6001600160a01b038116610e1a5760405162461bcd60e51b8152600401610abd906126ff565b601880546001600160a01b0319166001600160a01b0383169081179091556040517f64d07b7b0d48d6c3b5e1005826e76097aaee8adef5bea0f66f453ee05f0f896790600090a250565b6005546001600160a01b03163314610e8e5760405162461bcd60e51b8152600401610abd906126a1565b6001600160a01b038116610eb45760405162461bcd60e51b8152600401610abd906126ff565b601980546001600160a01b0319166001600160a01b0383169081179091556040517f9073dfac663173e64aa95665faedae52e2246f9bcdd3890fbfaf6733b46bba1390600090a250565b6005546001600160a01b03163314610f285760405162461bcd60e51b8152600401610abd906126a1565b610f326000611c19565b565b6005546001600160a01b03163314610f5e5760405162461bcd60e51b8152600401610abd906126a1565b6001600160a01b038116610f845760405162461bcd60e51b8152600401610abd906126ff565b601b80546001600160a01b0319166001600160a01b0383169081179091556040517f251a2e4478aadd97db6528862f79a28a6813b79f35d6760c60b67be5e84bba5190600090a250565b6005546001600160a01b03163314610ff85760405162461bcd60e51b8152600401610abd906126a1565b60165462010000900460ff16156110515760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c65640000000000006044820152606401610abd565b6016805462ff000019166201000017905543601755565b6060600480546109f990612667565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156110f95760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610abd565b611106338585840361177f565b5060019392505050565b6000610a893384846118a3565b6005546001600160a01b031633146111475760405162461bcd60e51b8152600401610abd906126a1565b60008111801561117957506103e861116b6a6342fd08f00f63780000006005612743565b611175919061275a565b8111155b6112025760405162461bcd60e51b815260206004820152604e60248201527f4d696e696d756d207377617020616d6f756e74206d757374206265206772656160448201527f746572207468616e203020616e64206c657373207468616e20302e3525206f6660648201526d20746f74616c20737570706c792160901b608482015260a401610abd565b601581905560405181907f18ff2fc8464635e4f668567019152095047e34d7a2ab4b97661ba4dc7fd0647690600090a250565b6005546001600160a01b0316331461125f5760405162461bcd60e51b8152600401610abd906126a1565b600c859055600d849055600e839055600f829055601081905561128a81610d65848187818b8b611c0d565b601155600c54600d54600e54600f546010546040805194855260208501939093529183015260608201527fa52bd0cf705f42201d4097dc2e9c2b39d0a1b7529e8d121faed89fd30bcf236f90608001610dbb565b6005546001600160a01b031633146113085760405162461bcd60e51b8152600401610abd906126a1565b306001600160a01b038216036113605760405162461bcd60e51b815260206004820181905260248201527f4f776e65722063616e6e6f7420636c61696d206e617469766520746f6b656e736044820152606401610abd565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156113a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113cb919061277c565b90506000811161141d5760405162461bcd60e51b815260206004820152601f60248201527f4e6f20746f6b656e7320617661696c61626c6520746f207769746864726177006044820152606401610abd565b60405163a9059cbb60e01b8152336004820152602481018290526000906001600160a01b0384169063a9059cbb906044016020604051808303816000875af115801561146d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114919190612795565b9050806114e05760405162461bcd60e51b815260206004820152601b60248201527f7472616e7366657272696e6720746f6b656e73206661696c65642100000000006044820152606401610abd565b505050565b6005546001600160a01b0316331461150f5760405162461bcd60e51b8152600401610abd906126a1565b60165460ff16611520576001611523565b60005b6016805460ff1916911515919091179055565b6005546001600160a01b031633146115605760405162461bcd60e51b8152600401610abd906126a1565b6001600160a01b0381166115c55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610abd565b6115ce81611c19565b50565b6005546001600160a01b031633146115fb5760405162461bcd60e51b8152600401610abd906126a1565b6001600160a01b0381166116215760405162461bcd60e51b8152600401610abd906126ff565b601a80546001600160a01b0319166001600160a01b0383169081179091556040517f95203be801b3b4835c73e166c564816fba4ae2f167907273eb1c85263ec9882d90600090a250565b6005546001600160a01b031633146116955760405162461bcd60e51b8152600401610abd906126a1565b47806116e35760405162461bcd60e51b815260206004820152601c60248201527f4e6f2045544820617661696c61626c6520746f207769746864726177000000006044820152606401610abd565b604051600090339083908381818185875af1925050503d8060008114611725576040519150601f19603f3d011682016040523d82523d6000602084013e61172a565b606091505b505090508061177b5760405162461bcd60e51b815260206004820152601760248201527f7472616e7366657272696e6720455448206661696c65640000000000000000006044820152606401610abd565b5050565b6001600160a01b0383166117e15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610abd565b6001600160a01b0382166118425760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610abd565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166118f95760405162461bcd60e51b815260206004820152601a60248201527f7472616e736665722066726f6d2061646472657373207a65726f0000000000006044820152606401610abd565b6001600160a01b03821661194f5760405162461bcd60e51b815260206004820152601860248201527f7472616e7366657220746f2061646472657373207a65726f00000000000000006044820152606401610abd565b600081116119b15760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610abd565b6001600160a01b03831660009081526014602052604090205460ff1615611a245760405162461bcd60e51b815260206004820152602160248201527f5472616e736665722066726f6d20626c61636b6c6973746564206164647265736044820152607360f81b6064820152608401610abd565b6001600160a01b03821660009081526014602052604090205460ff1615611a8d5760405162461bcd60e51b815260206004820152601f60248201527f5472616e7366657220746f20626c61636b6c69737465642061646472657373006044820152606401610abd565b6000611a9a848484611c6b565b60155430600090815260208181526040808320546001600160a01b038a16845260139092529091205492935010159060ff16158015611af257506001600160a01b03841660009081526013602052604090205460ff16155b8015611b1757506001600160a01b03851660009081526014602052604090205460ff16155b8015611b3c57506001600160a01b03841660009081526014602052604090205460ff16155b15611bfb5760165462010000900460ff16611b8e5760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f742061637469766560701b6044820152606401610abd565b836001600160a01b03167f000000000000000000000000c587312213e1cb20b8dff891ca593d896dae240a6001600160a01b0316148015611bd1575060165460ff165b8015611bda5750805b8015611bee5750601654610100900460ff16155b15611bfb57611bfb611d73565b611c06858584611fc9565b5050505050565b6000610ccd82846126ec565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03831660009081526013602052604081205460ff1680611caa57506001600160a01b03831660009081526013602052604090205460ff165b15611cb6575080610ccd565b6012546001600160a01b037f000000000000000000000000c587312213e1cb20b8dff891ca593d896dae240a811690851603611cf55750601154611d33565b7f000000000000000000000000c587312213e1cb20b8dff891ca593d896dae240a6001600160a01b0316856001600160a01b031603611d335750600b545b60008115611d5f576103e8611d488386612743565b611d52919061275a565b9050611d5f863083611fc9565b611d6981856127b2565b9695505050505050565b6016805461ff00191661010017905530600090815260208190526040812054905080600003611d9f5750565b6000611db8601154600b54611c0d90919063ffffffff16565b90506000611dd3600c54600654611c0d90919063ffffffff16565b90506000611dee600d54600754611c0d90919063ffffffff16565b90506000611e09600e54600854611c0d90919063ffffffff16565b90506000611e24600f54600954611c0d90919063ffffffff16565b90506000611e3f601054600a54611c0d90919063ffffffff16565b905080600003611e5c57611e5982610d6585818989611c0d565b95505b60008615611e7e57611e7b6002611e7589818c87612198565b906121a4565b90505b6000611e8a89836121b0565b905047611e96826121bc565b6000611ea247836121b0565b905060008515611f0b57611ebd6002611e758d81868b612198565b9050611ec9858261237c565b60408051868152602081018390529081018690527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b6000611f1b8c611e75858e612198565b90506000611f2d8d611e75868e612198565b90506000611f3f8e611e75878e612198565b90506000611f518f611e75888e612198565b601854909150611f6a906001600160a01b03168561247b565b601954611f80906001600160a01b03168461247b565b601a54611f96906001600160a01b03168361247b565b601b54611fac906001600160a01b03168261247b565b50506016805461ff00191690555050505050505050505050505050565b6001600160a01b03831661202d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610abd565b6001600160a01b03821661208f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610abd565b6001600160a01b038316600090815260208190526040902054818110156121075760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610abd565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061213e9084906126ec565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161218a91815260200190565b60405180910390a350505050565b6000610ccd8284612743565b6000610ccd828461275a565b6000610ccd82846127b2565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106121f1576121f16127c5565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561226f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061229391906127db565b816001815181106122a6576122a66127c5565b60200260200101906001600160a01b031690816001600160a01b0316815250506122f1307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461177f565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac947906123469085906000908690309042906004016127f8565b600060405180830381600087803b15801561236057600080fd5b505af1158015612374573d6000803e3d6000fd5b505050505050565b6123a7307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461177f565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663f305d7198230856000806123ee6005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015612456573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611c069190612869565b6040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156114e0573d6000803e3d6000fd5b600060208083528351808285015260005b818110156124de578581018301518582016040015282016124c2565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146115ce57600080fd5b6000806040838503121561252757600080fd5b8235612532816124ff565b946020939093013593505050565b80151581146115ce57600080fd5b6000806040838503121561256157600080fd5b823561256c816124ff565b9150602083013561257c81612540565b809150509250929050565b60006020828403121561259957600080fd5b8135610ccd816124ff565b6000806000606084860312156125b957600080fd5b83356125c4816124ff565b925060208401356125d4816124ff565b929592945050506040919091013590565b600080600080600060a086880312156125fd57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60006020828403121561263257600080fd5b5035919050565b6000806040838503121561264c57600080fd5b8235612657816124ff565b9150602083013561257c816124ff565b600181811c9082168061267b57607f821691505b60208210810361269b57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820180821115610a8d57610a8d6126d6565b60208082526024908201527f63616e206e6f7420736574206d61726b6574696e6720746f20646561642077616040820152631b1b195d60e21b606082015260800190565b8082028115828204841417610a8d57610a8d6126d6565b60008261277757634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561278e57600080fd5b5051919050565b6000602082840312156127a757600080fd5b8151610ccd81612540565b81810381811115610a8d57610a8d6126d6565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156127ed57600080fd5b8151610ccd816124ff565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156128485784516001600160a01b031683529383019391830191600101612823565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561287e57600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220d5059759ec8cb10bd5bcf37fbf0908978c51512d6118ed04673e3007e28f279d64736f6c63430008130033

Deployed Bytecode Sourcemap

10788:12951:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1610:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2524:169;;;;;;;;;;-1:-1:-1;2524:169:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;2524:169:0;1023:187:1;17513:170:0;;;;;;;;;;-1:-1:-1;17513:170:0;;;;;:::i;:::-;;:::i;:::-;;17691:188;;;;;;;;;;-1:-1:-1;17691:188:0;;;;;:::i;:::-;;:::i;15615:151::-;;;;;;;;;;;;;:::i;1931:108::-;;;;;;;;;;-1:-1:-1;2019:12:0;;1931:108;;;1871:25:1;;;1859:2;1844:18;1931:108:0;1725:177:1;17887:116:0;;;;;;;;;;-1:-1:-1;17887:116:0;;;;;:::i;:::-;-1:-1:-1;;;;;17975:20:0;17951:4;17975:20;;;:11;:20;;;;;;;;;17887:116;11131:33;;;;;;;;;;;;;;;;2701:490;;;;;;;;;;-1:-1:-1;2701:490:0;;;;;:::i;:::-;;:::i;1830:93::-;;;;;;;;;;-1:-1:-1;1830:93:0;;1913:2;2762:36:1;;2750:2;2735:18;1830:93:0;2620:184:1;3199:215:0;;;;;;;;;;-1:-1:-1;3199:215:0;;;;;:::i;:::-;;:::i;15774:609::-;;;;;;;;;;-1:-1:-1;15774:609:0;;;;;:::i;:::-;;:::i;12074:40::-;;;;;;;;;;-1:-1:-1;12074:40:0;;;;;;;;12158:34;;;;;;;;;;-1:-1:-1;12158:34:0;;;;;;;;;;;14339:258;;;;;;;;;;-1:-1:-1;14339:258:0;;;;;:::i;:::-;;:::i;11722:32::-;;;;;;;;;;;;;;;;12355:92;;;;;;;;;;-1:-1:-1;12355:92:0;;;;-1:-1:-1;;;;;12355:92:0;;;;;;-1:-1:-1;;;;;3448:32:1;;;3430:51;;3418:2;3403:18;12355:92:0;3268:219:1;14605:261:0;;;;;;;;;;-1:-1:-1;14605:261:0;;;;;:::i;:::-;;:::i;11208:35::-;;;;;;;;;;;;;;;;11171:30;;;;;;;;;;;;;;;;2047:127;;;;;;;;;;-1:-1:-1;2047:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;2148:18:0;2121:7;2148:18;;;;;;;;;;;;2047:127;6694:94;;;;;;;;;;;;;:::i;10944:40::-;;;;;;;;;;;;;;;12199:32;;;;;;;;;;;;;;;;11252:100;;;;;;;;;;;;;;;;15149:258;;;;;;;;;;-1:-1:-1;15149:258:0;;;;;:::i;:::-;;:::i;15415:192::-;;;;;;;;;;;;;:::i;6471:87::-;;;;;;;;;;-1:-1:-1;6544:6:0;;-1:-1:-1;;;;;6544:6:0;6471:87;;1718:104;;;;;;;;;;;;;:::i;11093:31::-;;;;;;;;;;;;;;;;3422:411;;;;;;;;;;-1:-1:-1;3422:411:0;;;;;:::i;:::-;;:::i;11053:33::-;;;;;;;;;;;;;;;;10991:36;;;;;;;;;;;;;;;2182:175;;;;;;;;;;-1:-1:-1;2182:175:0;;;;;:::i;:::-;;:::i;11420:32::-;;;;;;;;;;;;;;;;17036:335;;;;;;;;;;-1:-1:-1;17036:335:0;;;;;:::i;:::-;;:::i;12121:30::-;;;;;;;;;;-1:-1:-1;12121:30:0;;;;;;;;;;;12555:91;;;;;;;;;;-1:-1:-1;12555:91:0;;;;-1:-1:-1;;;;;12555:91:0;;;12257;;;;;;;;;;-1:-1:-1;12257:91:0;;;;-1:-1:-1;;;;;12257:91:0;;;16391:637;;;;;;;;;;-1:-1:-1;16391:637:0;;;;;:::i;:::-;;:::i;23247:452::-;;;;;;;;;;-1:-1:-1;23247:452:0;;;;;:::i;:::-;;:::i;12454:94::-;;;;;;;;;;-1:-1:-1;12454:94:0;;;;-1:-1:-1;;;;;12454:94:0;;;2365:151;;;;;;;;;;-1:-1:-1;2365:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;2481:18:0;;;2454:7;2481:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2365:151;11500:31;;;;;;;;;;;;;;;;11538:37;;;;;;;;;;;;;;;;11960:57;;;;;;;;;;;;;;;;18011:118;;;;;;;;;;-1:-1:-1;18011:118:0;;;;;:::i;:::-;-1:-1:-1;;;;;18100:21:0;18076:4;18100:21;;;:11;:21;;;;;;;;;18011:118;11379:34;;;;;;;;;;;;;;;;17379:126;;;;;;;;;;;;;:::i;6796:192::-;;;;;;;;;;-1:-1:-1;6796:192:0;;;;;:::i;:::-;;:::i;14874:267::-;;;;;;;;;;-1:-1:-1;14874:267:0;;;;;:::i;:::-;;:::i;22941:298::-;;;;;;;;;;;;;:::i;11584:107::-;;;;;;;;;;;;;;;;11459:34;;;;;;;;;;;;;;;;1610:100;1664:13;1697:5;1690:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1610:100;:::o;2524:169::-;2607:4;2624:39;1072:10;2647:7;2656:6;2624:8;:39::i;:::-;-1:-1:-1;2681:4:0;2524:169;;;;;:::o;17513:170::-;6544:6;;-1:-1:-1;;;;;6544:6:0;1072:10;6606:23;6598:68;;;;-1:-1:-1;;;6598:68:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;17602:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;:30;;-1:-1:-1;;17602:30:0::1;::::0;::::1;;::::0;;::::1;::::0;;;17648:27;;17602:30;;:20;17648:27:::1;::::0;::::1;17513:170:::0;;:::o;17691:188::-;6544:6;;-1:-1:-1;;;;;6544:6:0;1072:10;6606:23;6598:68;;;;-1:-1:-1;;;6598:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17782:21:0;::::1;;::::0;;;:11:::1;:21;::::0;;;;;:38;;-1:-1:-1;;17782:38:0::1;::::0;::::1;;::::0;;::::1;::::0;;;17836:35;;17782:38;;:21;17836:35:::1;::::0;::::1;17691:188:::0;;:::o;15615:151::-;6544:6;;-1:-1:-1;;;;;6544:6:0;1072:10;6606:23;6598:68;;;;-1:-1:-1;;;6598:68:0;;;;;;;:::i;:::-;15679:14:::1;::::0;;;::::1;;;15671:54;;;::::0;-1:-1:-1;;;15671:54:0;;5452:2:1;15671:54:0::1;::::0;::::1;5434:21:1::0;5491:2;5471:18;;;5464:30;5530:29;5510:18;;;5503:57;5577:18;;15671:54:0::1;5250:351:1::0;15671:54:0::1;15736:14;:22:::0;;-1:-1:-1;;15736:22:0::1;::::0;;15615:151::o;2701:490::-;2841:4;2858:36;2868:6;2876:9;2887:6;2858:9;:36::i;:::-;-1:-1:-1;;;;;2934:19:0;;2907:24;2934:19;;;:11;:19;;;;;;;;1072:10;2934:33;;;;;;;;2986:26;;;;2978:79;;;;-1:-1:-1;;;2978:79:0;;5808:2:1;2978:79:0;;;5790:21:1;5847:2;5827:18;;;5820:30;5886:34;5866:18;;;5859:62;-1:-1:-1;;;5937:18:1;;;5930:38;5985:19;;2978:79:0;5606:404:1;2978:79:0;3093:57;3102:6;1072:10;3143:6;3124:16;:25;3093:8;:57::i;:::-;3179:4;3172:11;;;2701:490;;;;;;:::o;3199:215::-;1072:10;3287:4;3336:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;3336:34:0;;;;;;;;;;3287:4;;3304:80;;3327:7;;3336:47;;3373:10;;3336:47;:::i;:::-;3304:8;:80::i;15774:609::-;6544:6;;-1:-1:-1;;;;;6544:6:0;1072:10;6606:23;6598:68;;;;-1:-1:-1;;;6598:68:0;;;;;;;:::i;:::-;15958:13:::1;:33:::0;;;16002:11:::1;:29:::0;;;16042:13:::1;:33:::0;;;16086:10:::1;:27:::0;;;16124:16:::1;:39:::0;;;16185:87:::1;16143:20:::0;16185:65:::1;16099:14:::0;16185:65;16058:17;16185:65;15974:17;16016:15;16185:17:::1;:30::i;:::-;:34:::0;::::1;:49::i;:87::-;16174:8;:98:::0;16303:13:::1;::::0;16318:11:::1;::::0;16331:13:::1;::::0;16346:10:::1;::::0;16358:16:::1;::::0;16288:87:::1;::::0;;6508:25:1;;;6564:2;6549:18;;6542:34;;;;6592:18;;;6585:34;6650:2;6635:18;;6628:34;16288:87:0::1;::::0;6495:3:1;6480:19;16288:87:0::1;;;;;;;;15774:609:::0;;;;;:::o;14339:258::-;6544:6;;-1:-1:-1;;;;;6544:6:0;1072:10;6606:23;6598:68;;;;-1:-1:-1;;;6598:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14425:25:0;::::1;14417:74;;;;-1:-1:-1::0;;;14417:74:0::1;;;;;;;:::i;:::-;14502:14;:37:::0;;-1:-1:-1;;;;;;14502:37:0::1;-1:-1:-1::0;;;;;14502:37:0;::::1;::::0;;::::1;::::0;;;14555:34:::1;::::0;::::1;::::0;-1:-1:-1;;14555:34:0::1;14339:258:::0;:::o;14605:261::-;6544:6;;-1:-1:-1;;;;;6544:6:0;1072:10;6606:23;6598:68;;;;-1:-1:-1;;;6598:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14692:25:0;::::1;14684:74;;;;-1:-1:-1::0;;;14684:74:0::1;;;;;;;:::i;:::-;14769:15;:38:::0;;-1:-1:-1;;;;;;14769:38:0::1;-1:-1:-1::0;;;;;14769:38:0;::::1;::::0;;::::1;::::0;;;14823:35:::1;::::0;::::1;::::0;-1:-1:-1;;14823:35:0::1;14605:261:::0;:::o;6694:94::-;6544:6;;-1:-1:-1;;;;;6544:6:0;1072:10;6606:23;6598:68;;;;-1:-1:-1;;;6598:68:0;;;;;;;:::i;:::-;6759:21:::1;6777:1;6759:9;:21::i;:::-;6694:94::o:0;15149:258::-;6544:6;;-1:-1:-1;;;;;6544:6:0;1072:10;6606:23;6598:68;;;;-1:-1:-1;;;6598:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15235:25:0;::::1;15227:74;;;;-1:-1:-1::0;;;15227:74:0::1;;;;;;;:::i;:::-;15312:14;:37:::0;;-1:-1:-1;;;;;;15312:37:0::1;-1:-1:-1::0;;;;;15312:37:0;::::1;::::0;;::::1;::::0;;;15365:34:::1;::::0;::::1;::::0;-1:-1:-1;;15365:34:0::1;15149:258:::0;:::o;15415:192::-;6544:6;;-1:-1:-1;;;;;6544:6:0;1072:10;6606:23;6598:68;;;;-1:-1:-1;;;6598:68:0;;;;;;;:::i;:::-;15479:14:::1;::::0;;;::::1;;;15478:15;15470:54;;;::::0;-1:-1:-1;;;15470:54:0;;7280:2:1;15470:54:0::1;::::0;::::1;7262:21:1::0;7319:2;7299:18;;;7292:30;7358:28;7338:18;;;7331:56;7404:18;;15470:54:0::1;7078:350:1::0;15470:54:0::1;15535:14;:21:::0;;-1:-1:-1;;15535:21:0::1;::::0;::::1;::::0;;15587:12:::1;15567:17;:32:::0;15415:192::o;1718:104::-;1774:13;1807:7;1800:14;;;;;:::i;3422:411::-;1072:10;3515:4;3559:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;3559:34:0;;;;;;;;;;3612:35;;;;3604:85;;;;-1:-1:-1;;;3604:85:0;;7635:2:1;3604:85:0;;;7617:21:1;7674:2;7654:18;;;7647:30;7713:34;7693:18;;;7686:62;-1:-1:-1;;;7764:18:1;;;7757:35;7809:19;;3604:85:0;7433:401:1;3604:85:0;3725:67;1072:10;3748:7;3776:15;3757:16;:34;3725:8;:67::i;:::-;-1:-1:-1;3821:4:0;;3422:411;-1:-1:-1;;;3422:411:0:o;2182:175::-;2268:4;2285:42;1072:10;2309:9;2320:6;2285:9;:42::i;17036:335::-;6544:6;;-1:-1:-1;;;;;6544:6:0;1072:10;6606:23;6598:68;;;;-1:-1:-1;;;6598:68:0;;;;;;;:::i;:::-;17138:1:::1;17125:10;:14;:57;;;;-1:-1:-1::0;17178:4:0::1;17158:16;10903:18;17173:1;17158:16;:::i;:::-;17157:25;;;;:::i;:::-;17143:10;:39;;17125:57;17117:148;;;::::0;-1:-1:-1;;;17117:148:0;;8436:2:1;17117:148:0::1;::::0;::::1;8418:21:1::0;8475:2;8455:18;;;8448:30;8514:34;8494:18;;;8487:62;8585:34;8565:18;;;8558:62;-1:-1:-1;;;8636:19:1;;;8629:45;8691:19;;17117:148:0::1;8234:482:1::0;17117:148:0::1;17276:18;:31:::0;;;17323:40:::1;::::0;17297:10;;17323:40:::1;::::0;;;::::1;17036:335:::0;:::o;16391:637::-;6544:6;;-1:-1:-1;;;;;6544:6:0;1072:10;6606:23;6598:68;;;;-1:-1:-1;;;6598:68:0;;;;;;;:::i;:::-;16581:14:::1;:35:::0;;;16627:12:::1;:31:::0;;;16669:14:::1;:35:::0;;;16715:11:::1;:29:::0;;;16755:17:::1;:41:::0;;;16819:92:::1;16775:21:::0;16819:69:::1;16729:15:::0;16819:69;16686:18;16819:69;16598:18;16642:16;16819:18:::1;:32::i;:92::-;16807:9;:104:::0;16943:14:::1;::::0;16959:12:::1;::::0;16973:14:::1;::::0;16989:11:::1;::::0;17002:17:::1;::::0;16927:93:::1;::::0;;6508:25:1;;;6564:2;6549:18;;6542:34;;;;6592:18;;;6585:34;6650:2;6635:18;;6628:34;16927:93:0::1;::::0;6495:3:1;6480:19;16927:93:0::1;6277:391:1::0;23247:452:0;6544:6;;-1:-1:-1;;;;;6544:6:0;1072:10;6606:23;6598:68;;;;-1:-1:-1;;;6598:68:0;;;;;;;:::i;:::-;23358:4:::1;-1:-1:-1::0;;;;;23335:28:0;::::1;::::0;23327:73:::1;;;::::0;-1:-1:-1;;;23327:73:0;;8923:2:1;23327:73:0::1;::::0;::::1;8905:21:1::0;;;8942:18;;;8935:30;9001:34;8981:18;;;8974:62;9053:18;;23327:73:0::1;8721:356:1::0;23327:73:0::1;23436:44;::::0;-1:-1:-1;;;23436:44:0;;23474:4:::1;23436:44;::::0;::::1;3430:51:1::0;23413:20:0::1;::::0;-1:-1:-1;;;;;23436:29:0;::::1;::::0;::::1;::::0;3403:18:1;;23436:44:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23413:67;;23514:1;23499:12;:16;23491:60;;;::::0;-1:-1:-1;;;23491:60:0;;9473:2:1;23491:60:0::1;::::0;::::1;9455:21:1::0;9512:2;9492:18;;;9485:30;9551:33;9531:18;;;9524:61;9602:18;;23491:60:0::1;9271:355:1::0;23491:60:0::1;23579:54;::::0;-1:-1:-1;;;23579:54:0;;23608:10:::1;23579:54;::::0;::::1;9805:51:1::0;9872:18;;;9865:34;;;23564:12:0::1;::::0;-1:-1:-1;;;;;23579:28:0;::::1;::::0;::::1;::::0;9778:18:1;;23579:54:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23564:69;;23652:7;23644:47;;;::::0;-1:-1:-1;;;23644:47:0;;10362:2:1;23644:47:0::1;::::0;::::1;10344:21:1::0;10401:2;10381:18;;;10374:30;10440:29;10420:18;;;10413:57;10487:18;;23644:47:0::1;10160:351:1::0;23644:47:0::1;23316:383;;23247:452:::0;:::o;17379:126::-;6544:6;;-1:-1:-1;;;;;6544:6:0;1072:10;6606:23;6598:68;;;;-1:-1:-1;;;6598:68:0;;;;;;;:::i;:::-;17460:21:::1;::::0;::::1;;17459:38;;17493:4;17459:38;;;17485:5;17459:38;17435:21;:62:::0;;-1:-1:-1;;17435:62:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17379:126::o;6796:192::-;6544:6;;-1:-1:-1;;;;;6544:6:0;1072:10;6606:23;6598:68;;;;-1:-1:-1;;;6598:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6885:22:0;::::1;6877:73;;;::::0;-1:-1:-1;;;6877:73:0;;10718:2:1;6877:73:0::1;::::0;::::1;10700:21:1::0;10757:2;10737:18;;;10730:30;10796:34;10776:18;;;10769:62;-1:-1:-1;;;10847:18:1;;;10840:36;10893:19;;6877:73:0::1;10516:402:1::0;6877:73:0::1;6961:19;6971:8;6961:9;:19::i;:::-;6796:192:::0;:::o;14874:267::-;6544:6;;-1:-1:-1;;;;;6544:6:0;1072:10;6606:23;6598:68;;;;-1:-1:-1;;;6598:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14963:25:0;::::1;14955:74;;;;-1:-1:-1::0;;;14955:74:0::1;;;;;;;:::i;:::-;15040:17;:40:::0;;-1:-1:-1;;;;;;15040:40:0::1;-1:-1:-1::0;;;;;15040:40:0;::::1;::::0;;::::1;::::0;;;15096:37:::1;::::0;::::1;::::0;-1:-1:-1;;15096:37:0::1;14874:267:::0;:::o;22941:298::-;6544:6;;-1:-1:-1;;;;;6544:6:0;1072:10;6606:23;6598:68;;;;-1:-1:-1;;;6598:68:0;;;;;;;:::i;:::-;23017:21:::1;23057:11:::0;23049:52:::1;;;::::0;-1:-1:-1;;;23049:52:0;;11125:2:1;23049:52:0::1;::::0;::::1;11107:21:1::0;11164:2;11144:18;;;11137:30;11203;11183:18;;;11176:58;11251:18;;23049:52:0::1;10923:352:1::0;23049:52:0::1;23133:44;::::0;23115:12:::1;::::0;23141:10:::1;::::0;23165:7;;23115:12;23133:44;23115:12;23133:44;23165:7;23141:10;23133:44:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23114:63;;;23196:7;23188:43;;;::::0;-1:-1:-1;;;23188:43:0;;11692:2:1;23188:43:0::1;::::0;::::1;11674:21:1::0;11731:2;11711:18;;;11704:30;11770:25;11750:18;;;11743:53;11813:18;;23188:43:0::1;11490:347:1::0;23188:43:0::1;22988:251;;22941:298::o:0;5588:380::-;-1:-1:-1;;;;;5724:19:0;;5716:68;;;;-1:-1:-1;;;5716:68:0;;12044:2:1;5716:68:0;;;12026:21:1;12083:2;12063:18;;;12056:30;12122:34;12102:18;;;12095:62;-1:-1:-1;;;12173:18:1;;;12166:34;12217:19;;5716:68:0;11842:400:1;5716:68:0;-1:-1:-1;;;;;5803:21:0;;5795:68;;;;-1:-1:-1;;;5795:68:0;;12449:2:1;5795:68:0;;;12431:21:1;12488:2;12468:18;;;12461:30;12527:34;12507:18;;;12500:62;-1:-1:-1;;;12578:18:1;;;12571:32;12620:19;;5795:68:0;12247:398:1;5795:68:0;-1:-1:-1;;;;;5876:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;5928:32;;1871:25:1;;;5928:32:0;;1844:18:1;5928:32:0;;;;;;;5588:380;;;:::o;18918:1016::-;-1:-1:-1;;;;;19041:19:0;;19033:58;;;;-1:-1:-1;;;19033:58:0;;12852:2:1;19033:58:0;;;12834:21:1;12891:2;12871:18;;;12864:30;12930:28;12910:18;;;12903:56;12976:18;;19033:58:0;12650:350:1;19033:58:0;-1:-1:-1;;;;;19106:17:0;;19098:54;;;;-1:-1:-1;;;19098:54:0;;13207:2:1;19098:54:0;;;13189:21:1;13246:2;13226:18;;;13219:30;13285:26;13265:18;;;13258:54;13329:18;;19098:54:0;13005:348:1;19098:54:0;19177:1;19167:7;:11;19159:65;;;;-1:-1:-1;;;19159:65:0;;13560:2:1;19159:65:0;;;13542:21:1;13599:2;13579:18;;;13572:30;13638:34;13618:18;;;13611:62;-1:-1:-1;;;13689:18:1;;;13682:39;13738:19;;19159:65:0;13358:405:1;19159:65:0;-1:-1:-1;;;;;19240:18:0;;;;;;:11;:18;;;;;;;;19239:19;19231:65;;;;-1:-1:-1;;;19231:65:0;;13970:2:1;19231:65:0;;;13952:21:1;14009:2;13989:18;;;13982:30;14048:34;14028:18;;;14021:62;-1:-1:-1;;;14099:18:1;;;14092:31;14140:19;;19231:65:0;13768:397:1;19231:65:0;-1:-1:-1;;;;;19312:16:0;;;;;;:11;:16;;;;;;;;19311:17;19303:61;;;;-1:-1:-1;;;19303:61:0;;14372:2:1;19303:61:0;;;14354:21:1;14411:2;14391:18;;;14384:30;14450:33;14430:18;;;14423:61;14501:18;;19303:61:0;14170:355:1;19303:61:0;19371:18;19392:29;19401:5;19408:3;19413:7;19392:8;:29::i;:::-;19473:18;;19463:4;19430:12;2148:18;;;;;;;;;;;;-1:-1:-1;;;;;19513:18:0;;;;:11;:18;;;;;;;19371:50;;-1:-1:-1;;19445:46:0;;19513:18;;19512:19;:49;;;;-1:-1:-1;;;;;;19545:16:0;;;;;;:11;:16;;;;;;;;19544:17;19512:49;:81;;;;-1:-1:-1;;;;;;19575:18:0;;;;;;:11;:18;;;;;;;;19574:19;19512:81;:111;;;;-1:-1:-1;;;;;;19607:16:0;;;;;;:11;:16;;;;;;;;19606:17;19512:111;19498:387;;;19651:14;;;;;;;19643:45;;;;-1:-1:-1;;;19643:45:0;;14732:2:1;19643:45:0;;;14714:21:1;14771:2;14751:18;;;14744:30;-1:-1:-1;;;14790:18:1;;;14783:48;14848:18;;19643:45:0;14530:342:1;19643:45:0;19732:3;-1:-1:-1;;;;;19717:18:0;:11;-1:-1:-1;;;;;19717:18:0;;:56;;;;-1:-1:-1;19752:21:0;;;;19717:56;:80;;;;;19790:7;19717:80;:108;;;;-1:-1:-1;19815:10:0;;;;;;;19814:11;19717:108;19699:179;;;19852:14;:12;:14::i;:::-;19891:39;19907:5;19914:3;19919:10;19891:15;:39::i;:::-;19026:908;;18918:1016;;;:::o;8708:98::-;8766:7;8793:5;8797:1;8793;:5;:::i;6996:173::-;7071:6;;;-1:-1:-1;;;;;7088:17:0;;;-1:-1:-1;;;;;;7088:17:0;;;;;;;7121:40;;7071:6;;;7088:17;7071:6;;7121:40;;7052:16;;7121:40;7041:128;6996:173;:::o;18277:637::-;-1:-1:-1;;;;;18416:18:0;;18392:7;18416:18;;;:11;:18;;;;;;;;;:38;;-1:-1:-1;;;;;;18438:16:0;;;;;;:11;:16;;;;;;;;18416:38;18412:85;;;-1:-1:-1;18478:7:0;18471:14;;18412:85;18526:13;;-1:-1:-1;;;;;18563:11:0;18556:18;;;;;;18552:149;;-1:-1:-1;18602:9:0;;18552:149;;;18642:11;-1:-1:-1;;;;;18633:20:0;:5;-1:-1:-1;;;;;18633:20:0;;18629:72;;-1:-1:-1;18681:8:0;;18629:72;18713:11;18743:12;;18739:135;;18801:4;18779:18;18789:8;18779:7;:18;:::i;:::-;18778:27;;;;:::i;:::-;18772:33;;18820:42;18836:5;18851:4;18858:3;18820:15;:42::i;:::-;18892:13;18902:3;18892:7;:13;:::i;:::-;18884:22;18277:637;-1:-1:-1;;;;;;18277:637:0:o;19942:1871::-;19982:10;:17;;-1:-1:-1;;19982:17:0;;;;;20044:4;-1:-1:-1;2148:18:0;;;;;;;;;;;20006:44;;20062:9;20075:1;20062:14;20058:45;;20089:7;19942:1871::o;20058:45::-;20111:16;20130:25;20145:9;;20131:8;;20130:14;;:25;;;;:::i;:::-;20111:44;;20164:20;20186:35;20206:14;;20187:13;;20186:19;;:35;;;;:::i;:::-;20164:57;;20228:21;20252:31;20270:12;;20253:11;;20252:17;;:31;;;;:::i;:::-;20228:55;;20290:23;20315:35;20335:14;;20316:13;;20315:19;;:35;;;;:::i;:::-;20290:60;;20357:20;20379:29;20396:11;;20380:10;;20379:16;;:29;;;;:::i;:::-;20357:51;;20415:22;20439:41;20462:17;;20440:16;;20439:22;;:41;;;;:::i;:::-;20415:65;;20493:14;20511:1;20493:19;20489:125;;20536:70;20593:12;20536:52;20572:15;20536:52;:12;20553:13;20536:16;:31::i;:70::-;20525:81;;20489:125;20622:20;20657:12;;20653:102;;20697:50;20745:1;20697:43;20731:8;20697:43;:9;20711:14;20697:13;:29::i;:::-;:33;;:43::i;:50::-;20682:65;;20653:102;20761:18;20782:27;:9;20796:12;20782:13;:27::i;:::-;20761:48;-1:-1:-1;20841:21:0;20869;20761:48;20869:9;:21::i;:::-;20897:18;20918:41;:21;20944:14;20918:25;:41::i;:::-;20897:62;-1:-1:-1;20968:23:0;21006:18;;21002:239;;21055:51;21104:1;21055:44;21090:8;21055:44;:10;21070:14;21055;:30::i;:51::-;21037:69;;21119:43;21132:12;21146:15;21119:12;:43::i;:::-;21174:59;;;15212:25:1;;;15268:2;15253:18;;15246:34;;;15296:18;;;15289:34;;;21174:59:0;;15200:2:1;15185:18;21174:59:0;;;;;;;21002:239;21247:21;21271:42;21304:8;21271:28;:10;21286:12;21271:14;:28::i;:42::-;21247:66;-1:-1:-1;21320:22:0;21345:43;21379:8;21345:29;:10;21360:13;21345:14;:29::i;:43::-;21320:68;-1:-1:-1;21395:24:0;21422:45;21458:8;21422:31;:10;21437:15;21422:14;:31::i;:45::-;21395:72;-1:-1:-1;21474:21:0;21498:42;21531:8;21498:28;:10;21513:12;21498:14;:28::i;:42::-;21570:14;;21474:66;;-1:-1:-1;21549:51:0;;-1:-1:-1;;;;;21570:14:0;21586:13;21549:20;:51::i;:::-;21628:15;;21607:53;;-1:-1:-1;;;;;21628:15:0;21645:14;21607:20;:53::i;:::-;21688:17;;21667:57;;-1:-1:-1;;;;;21688:17:0;21707:16;21667:20;:57::i;:::-;21752:14;;21731:51;;-1:-1:-1;;;;;21752:14:0;21768:13;21731:20;:51::i;:::-;-1:-1:-1;;21791:10:0;:18;;-1:-1:-1;;21791:18:0;;;-1:-1:-1;;;;;;;;;;;;;;19942:1871:0:o;3841:733::-;-1:-1:-1;;;;;3981:20:0;;3973:70;;;;-1:-1:-1;;;3973:70:0;;15536:2:1;3973:70:0;;;15518:21:1;15575:2;15555:18;;;15548:30;15614:34;15594:18;;;15587:62;-1:-1:-1;;;15665:18:1;;;15658:35;15710:19;;3973:70:0;15334:401:1;3973:70:0;-1:-1:-1;;;;;4062:23:0;;4054:71;;;;-1:-1:-1;;;4054:71:0;;15942:2:1;4054:71:0;;;15924:21:1;15981:2;15961:18;;;15954:30;16020:34;16000:18;;;15993:62;-1:-1:-1;;;16071:18:1;;;16064:33;16114:19;;4054:71:0;15740:399:1;4054:71:0;-1:-1:-1;;;;;4222:17:0;;4198:21;4222:17;;;;;;;;;;;4258:23;;;;4250:74;;;;-1:-1:-1;;;4250:74:0;;16346:2:1;4250:74:0;;;16328:21:1;16385:2;16365:18;;;16358:30;16424:34;16404:18;;;16397:62;-1:-1:-1;;;16475:18:1;;;16468:36;16521:19;;4250:74:0;16144:402:1;4250:74:0;-1:-1:-1;;;;;4360:17:0;;;:9;:17;;;;;;;;;;;4380:22;;;4360:42;;4424:20;;;;;;;;:30;;4396:6;;4360:9;4424:30;;4396:6;;4424:30;:::i;:::-;;;;;;;;4489:9;-1:-1:-1;;;;;4472:35:0;4481:6;-1:-1:-1;;;;;4472:35:0;;4500:6;4472:35;;;;1871:25:1;;1859:2;1844:18;;1725:177;4472:35:0;;;;;;;;3962:612;3841:733;;;:::o;8920:98::-;8978:7;9005:5;9009:1;9005;:5;:::i;9026:98::-;9084:7;9111:5;9115:1;9111;:5;:::i;8814:98::-;8872:7;8899:5;8903:1;8899;:5;:::i;21965:447::-;22045:16;;;22059:1;22045:16;;;;;;;;22021:21;;22045:16;;;;;;;;;;-1:-1:-1;22045:16:0;22021:40;;22090:4;22072;22077:1;22072:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;22072:23:0;;;-1:-1:-1;;;;;22072:23:0;;;;;22116:13;-1:-1:-1;;;;;22116:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22106:4;22111:1;22106:7;;;;;;;;:::i;:::-;;;;;;:30;-1:-1:-1;;;;;22106:30:0;;;-1:-1:-1;;;;;22106:30:0;;;;;22147:56;22164:4;22179:13;22195:7;22147:8;:56::i;:::-;22214:190;;-1:-1:-1;;;22214:190:0;;-1:-1:-1;;;;;22214:13:0;:64;;;;:190;;22293:7;;22315:1;;22331:4;;22358;;22378:15;;22214:190;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22010:402;21965:447;:::o;22424:509::-;22572:60;22589:4;22604:13;22620:11;22572:8;:60::i;:::-;22675:13;-1:-1:-1;;;;;22675:29:0;;22712:9;22745:4;22765:11;22791:1;22834;22877:7;6544:6;;-1:-1:-1;;;;;6544:6:0;;6471:87;22877:7;22675:250;;;;;;-1:-1:-1;;;;;;22675:250:0;;;-1:-1:-1;;;;;18415:15:1;;;22675:250:0;;;18397:34:1;18447:18;;;18440:34;;;;18490:18;;;18483:34;;;;18533:18;;;18526:34;18597:15;;;18576:19;;;18569:44;22899:15:0;18629:19:1;;;18622:35;18331:19;;22675:250:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;21821:132::-;21919:26;;-1:-1:-1;;;;;21919:18:0;;;:26;;;;;21938:6;;21919:26;;;;21938:6;21919:18;:26;;;;;;;;;;;;;;;;;;;14:548:1;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:118::-;1301:5;1294:13;1287:21;1280:5;1277:32;1267:60;;1323:1;1320;1313:12;1338:382;1403:6;1411;1464:2;1452:9;1443:7;1439:23;1435:32;1432:52;;;1480:1;1477;1470:12;1432:52;1519:9;1506:23;1538:31;1563:5;1538:31;:::i;:::-;1588:5;-1:-1:-1;1645:2:1;1630:18;;1617:32;1658:30;1617:32;1658:30;:::i;:::-;1707:7;1697:17;;;1338:382;;;;;:::o;1907:247::-;1966:6;2019:2;2007:9;1998:7;1994:23;1990:32;1987:52;;;2035:1;2032;2025:12;1987:52;2074:9;2061:23;2093:31;2118:5;2093:31;:::i;2159:456::-;2236:6;2244;2252;2305:2;2293:9;2284:7;2280:23;2276:32;2273:52;;;2321:1;2318;2311:12;2273:52;2360:9;2347:23;2379:31;2404:5;2379:31;:::i;:::-;2429:5;-1:-1:-1;2486:2:1;2471:18;;2458:32;2499:33;2458:32;2499:33;:::i;:::-;2159:456;;2551:7;;-1:-1:-1;;;2605:2:1;2590:18;;;;2577:32;;2159:456::o;2809:454::-;2904:6;2912;2920;2928;2936;2989:3;2977:9;2968:7;2964:23;2960:33;2957:53;;;3006:1;3003;2996:12;2957:53;-1:-1:-1;;3029:23:1;;;3099:2;3084:18;;3071:32;;-1:-1:-1;3150:2:1;3135:18;;3122:32;;3201:2;3186:18;;3173:32;;-1:-1:-1;3252:3:1;3237:19;3224:33;;-1:-1:-1;2809:454:1;-1:-1:-1;2809:454:1:o;3926:180::-;3985:6;4038:2;4026:9;4017:7;4013:23;4009:32;4006:52;;;4054:1;4051;4044:12;4006:52;-1:-1:-1;4077:23:1;;3926:180;-1:-1:-1;3926:180:1:o;4111:388::-;4179:6;4187;4240:2;4228:9;4219:7;4215:23;4211:32;4208:52;;;4256:1;4253;4246:12;4208:52;4295:9;4282:23;4314:31;4339:5;4314:31;:::i;:::-;4364:5;-1:-1:-1;4421:2:1;4406:18;;4393:32;4434:33;4393:32;4434:33;:::i;4504:380::-;4583:1;4579:12;;;;4626;;;4647:61;;4701:4;4693:6;4689:17;4679:27;;4647:61;4754:2;4746:6;4743:14;4723:18;4720:38;4717:161;;4800:10;4795:3;4791:20;4788:1;4781:31;4835:4;4832:1;4825:15;4863:4;4860:1;4853:15;4717:161;;4504:380;;;:::o;4889:356::-;5091:2;5073:21;;;5110:18;;;5103:30;5169:34;5164:2;5149:18;;5142:62;5236:2;5221:18;;4889:356::o;6015:127::-;6076:10;6071:3;6067:20;6064:1;6057:31;6107:4;6104:1;6097:15;6131:4;6128:1;6121:15;6147:125;6212:9;;;6233:10;;;6230:36;;;6246:18;;:::i;6673:400::-;6875:2;6857:21;;;6914:2;6894:18;;;6887:30;6953:34;6948:2;6933:18;;6926:62;-1:-1:-1;;;7019:2:1;7004:18;;6997:34;7063:3;7048:19;;6673:400::o;7839:168::-;7912:9;;;7943;;7960:15;;;7954:22;;7940:37;7930:71;;7981:18;;:::i;8012:217::-;8052:1;8078;8068:132;;8122:10;8117:3;8113:20;8110:1;8103:31;8157:4;8154:1;8147:15;8185:4;8182:1;8175:15;8068:132;-1:-1:-1;8214:9:1;;8012:217::o;9082:184::-;9152:6;9205:2;9193:9;9184:7;9180:23;9176:32;9173:52;;;9221:1;9218;9211:12;9173:52;-1:-1:-1;9244:16:1;;9082:184;-1:-1:-1;9082:184:1:o;9910:245::-;9977:6;10030:2;10018:9;10009:7;10005:23;10001:32;9998:52;;;10046:1;10043;10036:12;9998:52;10078:9;10072:16;10097:28;10119:5;10097:28;:::i;14877:128::-;14944:9;;;14965:11;;;14962:37;;;14979:18;;:::i;16683:127::-;16744:10;16739:3;16735:20;16732:1;16725:31;16775:4;16772:1;16765:15;16799:4;16796:1;16789:15;16815:251;16885:6;16938:2;16926:9;16917:7;16913:23;16909:32;16906:52;;;16954:1;16951;16944:12;16906:52;16986:9;16980:16;17005:31;17030:5;17005:31;:::i;17071:980::-;17333:4;17381:3;17370:9;17366:19;17412:6;17401:9;17394:25;17438:2;17476:6;17471:2;17460:9;17456:18;17449:34;17519:3;17514:2;17503:9;17499:18;17492:31;17543:6;17578;17572:13;17609:6;17601;17594:22;17647:3;17636:9;17632:19;17625:26;;17686:2;17678:6;17674:15;17660:29;;17707:1;17717:195;17731:6;17728:1;17725:13;17717:195;;;17796:13;;-1:-1:-1;;;;;17792:39:1;17780:52;;17887:15;;;;17852:12;;;;17828:1;17746:9;17717:195;;;-1:-1:-1;;;;;;;17968:32:1;;;;17963:2;17948:18;;17941:60;-1:-1:-1;;;18032:3:1;18017:19;18010:35;17929:3;17071:980;-1:-1:-1;;;17071:980:1:o;18668:306::-;18756:6;18764;18772;18825:2;18813:9;18804:7;18800:23;18796:32;18793:52;;;18841:1;18838;18831:12;18793:52;18870:9;18864:16;18854:26;;18920:2;18909:9;18905:18;18899:25;18889:35;;18964:2;18953:9;18949:18;18943:25;18933:35;;18668:306;;;;;:::o

Swarm Source

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