ETH Price: $3,614.95 (+8.79%)

Token

Wand (WAND)
 

Overview

Max Total Supply

100,000,000 WAND

Holders

779

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
everybodys.eth
Balance
41,964.280268547373459465 WAND

Value
$0.00
0xf3ab2c2cdcb26a3b50da3e2a56fd892a16a7eb3b
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:
Wand

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

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


// ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cdo:;;;::;;:::;::;;:;;:;;;::;:::;:::;:;;:ldc;::;;;::;:;cdl:;;;;;;:::;:;;:;;;::;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;l00kkoc::::;cdo:::;;;::;;;:;;cc::lkd:::;;;;;;;::;ckOkkkxdc:;::;;:clc:::;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;;;;;;;;;;;;;;;:ool:;:cccloxddo:;:c:;::;;;::ll:;::odcdK0o:::;;::;;;;:cdkdcccc:;;;;;;cx00dc;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;;;;;;;;;;;;;;;cd00l;:::::;cdkdc;;;::;;:;;::ldc;:;;::kKl;:::;;;:;;:;:x0l;:::;:odclxx0Xkl:;;:;;;::;:;cdl;;::;:;::;;::;;::::;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;;;;;;;;;;;;;;:;;dKOxkOdc:;:;;;;;cdo:;;;:dkl:;;;;;:;:k0l:cc:;:;cdo:;:ldlcc:;;:cdOK0xol:;;:;;;;;:odc:ldl:;;::;;:;:ccc:;;;::;;:;:;;;;;;;;;;;;;;
// ;;;;;;;;;;;;;;;;;;;;;;;;;::cccokKOl;;;:::;:c:;:;:ox0KOo:;:;;:oxkddk0d:;;cdl:;;xXX0xdc;;;lKOc:;:::;:;;:;:oxxdxkkxl:;:;:;:cdxkxdc:ll::;::;;;;;;;;;;;;;;;
// ;;;;;;;;;;;;;;;;;;;;;;;;;;;::;cdkdc::;;;;:;::;:;cdlcdxdc;;:;lKKxkxOXx::;cdl;cdkxxlcdxxxxxxl;;:;::;;::;;cdxxxl:;lxxl::;;:x0l;cdxkKx::;;;;:;;;;;;;;;;;;;
// ;;;;;;;;;;;;;;;;;;;;;;;;;:;;;:o0x;;::;;:;;;::;;:;;;;;;;;;:::oKNKk0Kxc:;;;;::o0x;;;;;coodo:;;;::;;;::;;;;;;;;;:;;:okkc;:cOKl;::cooc:::;::;;;;;;;;;;;;;;
// ;;;;;;;;;;;;;;;;;;;;;;;;::;;:x0kddddddddddo:;;;;:::;;;;;:;;dXNkcccloc::cooxkxl::;;:;;:;;;;:;;;;;::;;;;;;;;:;;:;;::oOdox0Kkc;::;;:;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;;;;;;;;;;;;;;::;;:;lxxxxxxxxxxx0Kl;:;;::;;::::;:d0NNx:;;cdl::lxxl::;:::;;;;::;::;;::;;::;:::;;:;;::;;;;:;cdxxxo:;;:;::;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;;;;;;;xOl;:;;;;;:::;;,;ck0d::;;;;:c:;;;;;;:;:::;:;cdo:;;;::::::::ccllllll:;;;;::;;;;;;:::;;::;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;;;;;;;;;;;;;;;;;;::::;;;;;;;;;::c:;:;;;;;::;;,''';:;;::;;;xOl;;;;;;;::;:;;::c:::cccccllllllllllllc:;;;;;;;:;;;:;;::;;:;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,',,;;;;:;;::x0l;:;;;;;;;;;;;:;::loooloollllllllllc:;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;,,'',;;;:;;;::;:xOl;:;;;;;;;;:;;::lllllllllllllllllc:;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,'',;;:;::;;;;;;cc:;:;;;;;;;;;::lllllllllllllllllc::;;;;:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::;;::;;;;;;;;;;;,,,'',;;;:;;:;;;;;;::::::;;::;;;::llollllllllllllll::;::;;;:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;;;;;;;;;;;;;;::;;::;;;:;;;::;:;;;;;;,,''',,;;:;;;;;;;;;;;;;;;;:;;::;:::lollllllllllllllc:;;:;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;:;;,,'''',,;:;;;;;;;;;;;;;;;;;:;;::;;coollllllllllllll::;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;;;;;;;;;;;;::;codo:lddl:;;::;;;;,,'''',,;;:;;;;;;;;;;;;;;;;;;;;;:::clollllllllllllcc:;;;;;:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;;;;;;;;;;;;;:lk0KOldKKd:ccccc:;,,'',;;;;:;;:;;;;;;;;;;;;;:;;:;;:cllllllllllllllol::;;;;::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;;;;;;;;;:;;:lkKKKOldKKxdk0OOko;'''',;;;;;;;;;;;;;;;;;:;;;;::;:clllllllllllllllllc;:;;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;;;;;;;;:;;lx0KKKKOldKKKKKKK0o,',,,;;;:;;;;;;;;;;;;;;;;;;::::clllllllllllllllloo:;;;:;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;;;;;;;;:;:dKKKKKK0kOKKKKKKKKOd:ldc;;;:;;;;;;;;;;;;;;;;;;::cllllllllllllllllllol:;;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;;;;;;:;;;:dKKKKKKKKKKKKKKKKKK0O0Oc;:;;;;;;;;;::;;;;;::::clllllllllllllllllllol::;;;;;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;;;;;;:::;:dKKK0kxxxxk0KKKKKKKK0Oo:;::;;;;;;;;::;;;;::;:lollllllllllllllllllloc:;;;;:;;:;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;;;;;;;::;:cdOkdlllllodk000Odlllc;;:;;:::;;;:;;;;;;:::cclollllllllllllllllllloc:;;;;:;;;;::;;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;;;;;;;:::ccloolllllllloooooc:;;;:;;::;;::cccccccccclooollllllllllllllllllllloc:;;;;;;;::;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;;;;;;;;:lllllllllllllllllcc:;;;;::::;:cllooooooooloooooollllllllllllllllllllolccclcccccc:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;;;;;;;:cllllllllllllllllc::;;;;;;;;;;cooooooooddoooooodoooooooollllllllllllloooooooooooolc:;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;;;;;;;:clllllllllllllllc:;;:;;;;;;;;;:::::::coxxkkkkkxxkkxxxxxxdodddddddddddddooooooooooool:;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;;;;;;;:cllllllllllllllc:;:;;;;;;;;;;;:;;::lodxkk0KKK0OO000OOOOkxxxxkxxxxkkxkxxxxxxxoccccclc:;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;:;;;:;;::clllllllllllllc::;;;;;;;;;;;;;;;:ldkkkdddxxk000KKKK0kxxxdddxkO00000000Okkkkko::;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;:;;;;:ccllllllllllllll::;;;;;;;;;;;;;;;;:okkkxoddc;cxOO00KKK0xl;;okkO0KKKKKKKK0kkkkxol:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;:;;::clllllllllllllllc:;;;::;;;;;;;;;;:;;coxkxokx. 'OMNOOKKKK0:  lNNNXKKKKKKKKOkkkxc;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;::cllllllllllllllllc::;::::;;;;;;;;;;:;;;cddllk0dox0XKOOKKKKKkooOXXKKKKKKKKKKOkkkdc;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;:clllllllllllllllllc;:::;;;:::;;;;;;;;::;::::lkKKKKKK0OOKKKKKKKKKKKKKKKKKKKKKK00Odc;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;:clllllllllllllllllc:;;;;;;;;;;;;;;;;;::;;:;:lkKKKKKK0OOOO0KKKKKKKKKKKKKKKKKKKKKOdc;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;:clllllllllllllllll::;;;;;;;;;;;;;;;;;::;;;;:lx0000000OOOO000000000000KKKKKKKK0Okd:;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;:clllllllllllllllc:::;;;;;;;;;;;;;;;;;::clllodk000000OO0000OOOO00000000KKKKK0Okdl:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;:clllllllllllllllc:;:;;;;;;;;;;;;;;;;:;:cdO00OO00OOOOOkOOOOOOOOO000000000000Okdc;;::;;:;;;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;;clllllllllllllllc:;:;;;;;;;;;;;;;;;;:;;;:ldOOO0OOOOOOOOOOOO0OkO00000OOkOOOOkdl::::::;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;;cllllllllllllllllc::;;;;;;;;;;;;;;;;:;;:;;:lxOOOOOOO00000000000000OkkkO0000kolcllllcc:::;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;;clllllllllllllllllc:;;;;;;;;;;;;;;;;;;;::;;cdO000000000000000000000000000Okdollllllllcc:;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;;clllllllllllllllllc:;;::;;;::;;;;;;;;;;::cclxO000000000000000000000000000Oxolllllllllllcc::;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;:cllllllllllllllllllcc:;;;;;;:;;;;;::;::cllloxO000000000000000000000000000Oxolllllllllllllc:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;::clllllllllllllllllllc:::;;;;;;;;;:::cllllloxO000000000000000000000000000Oxollllllllllllllc::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;::;::clllllllllllllllllllc:::;;;;;;;::clllllloxO000000000000000000000000000Oxollllllllllllllllc:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;:;;:;;clllllllllllllllllllllcc:::;;;;;;clllllloxO000000000000000000000000000Oxolllllllllllllllllc:;;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;;;;:clllllllllllllllllllllllllcccccccclllllloxO000000000000000000000000000Oxollllllllllllllllllcc::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;:;;;;:cclclllllllllllllllllllllllllllllllllllloxO000000000000000000000000000Oxollllllllllllllllllllcc::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;;;;;:::::clllllllllllllllllllllllllllllllllloxO000000000000000000000000Okxxdlllllllllllllllllllllllc:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;;;;;;::;:cclllllllllllllllllllllllllllllllllodkO00000000000000000000000Oxollllllllllllllllllllllllllc::;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;;;;;;;;:;::ccllllllllllllllllllllllllllllllllodkO0000000000000000000000Oxollllllllllllllllllllllllllllc::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;;;;;;;;;:;;::ccllllllllllllllllllllllllllllllldk00000000000000000000000Oxolllllllllllllllllllllllllllllc:;;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;;;;;;;:;;:::;:::cclllllllllllllllllllllllllllldkO0000000000000000000000Oxollllllllllllllllllllllllllllllc:;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;;;;;;;;;;;;;:;;;;::::::::ccllllllllcc:cllllllldkO0000000000000000000000Oxollllllllllloollllllllllllllllllc:;:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::::::::::::;:clllllldkO000000000000000000000Okdlllllllllllloollllllllllllllllllcc:;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;:;:clllllldkO00000000000000000000Okdlllllllllllllooolllllllllllllllllllc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;:;;;;;:clllllldkO00000000000000000000Okdlllllllllllllloolllllllllllllllllll:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;;;;:clllllloxO000000000000000000000Okdllllllllllllooollllllllllllllllllc:::;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;;:clllllloxO0000000000000000000000Okdlllllllllloooolllllllllllllllllc::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::clllllloxO000000000000000000000Okdllllllllllloolllllllllllllllllc::::;;:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;:clllllloxO000000000000000000000Oxollllllllllloolllllllllllllllc::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;::cclllllloxO00000000000000000OOOkkxolllllllllllollllllllllllllc::;;;:;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::;::lllllllloxO000000000000000Okddoooolllllllllllllllllllllllllc::;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;:clllllllllldxkO00000000000Okdolllllllllllllllllllllllllllllllc;;:;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:cclllllllllllodkO00000000OOkdllllllllllllllllllllllllllllllllc:;::;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::cllllllllllllllloxO0000000Okxolllllllllllllllllllllllllllllllc:;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:cllllllllllllllllloxO000000Oxolllllllllllllllllllllllllllllllc:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::clllllllllllllllllloxO00000Oxolllllllllllllllllllllllllllllllc:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:clllllllllllllllllllodxkOOkkdolllllllllllllllllllllllllllllllc::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::;;;;:cllllllllllllllllllllllodxxollllllllllllllllllllllllllllllllc:;;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::;:;:cllllllllllllllllllllllllodllllllllllllllllllllllllllllllllc::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;::lllllllllllllllllllllllllllllllllllllllllllllllllllllllllcc::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:cllllllllllllllllllllllllllllllllllllllllllllllllllllllllc::;;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
// 
// A telegram bot built by @oz_dao.
// https://wandbot.app
// https://twitter.com/wand_bot
//

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

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

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

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 to, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

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

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

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

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

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

        return true;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        require(from != address(0));
        require(to != address(0));

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount);
        unchecked {
            _balances[from] = fromBalance - amount;
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);
    }

    function _mint(address to, uint256 amount) internal virtual {
        _totalSupply += amount;

        unchecked {
            _balances[to] += amount;
        }

        emit Transfer(address(0), to, amount);
    }

    function _burn(address from, uint256 amount) internal virtual {
        _balances[from] -= amount;

        unchecked {
            _totalSupply -= amount;
        }

        emit Transfer(from, address(0), amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

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

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

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

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

contract Wand is ERC20, Ownable {

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public uniswapV2Pair;
    address public constant deadAddress = address(0xdead);

    bool private swapping;

    address public devWallet;
    address public liquidityWallet;

    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;

    bool public tradingActive = false;
    bool public swapEnabled = false;

    mapping(address => uint256) private _holderLastTransferTimestamp;
    bool public transferDelayEnabled = true;    

    uint256 public buyTotalFees;
    uint256 private buyDevFee;
    uint256 private buyLiquidityFee;

    uint256 public sellTotalFees;
    uint256 private sellDevFee;
    uint256 private sellLiquidityFee;

    uint256 private tokensForDev;
    uint256 private tokensForLiquidity;
    uint256 private previousFee;

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

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );

    constructor() payable ERC20("Wand", "WAND") {
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(uniswapV2Router), type(uint256).max);

        uint256 totalSupply = 100_000_000 ether;

        maxTransactionAmount = (totalSupply * 10) / 1000;
        maxWallet = (totalSupply * 10) / 1000;
        swapTokensAtAmount = (totalSupply * 1) / 1000;

        buyDevFee = 4;
        buyLiquidityFee = 0;
        buyTotalFees = buyDevFee + buyLiquidityFee;

        sellDevFee = 20;
        sellLiquidityFee = 0;
        sellTotalFees = sellDevFee + sellLiquidityFee;

        previousFee = sellTotalFees;

        devWallet = _msgSender();
        liquidityWallet = _msgSender();

        excludeFromFees(_msgSender(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(deadAddress, true);
        excludeFromFees(devWallet, true);
        excludeFromFees(liquidityWallet, true);

        excludeFromMaxTransaction(_msgSender(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(deadAddress, true);
        excludeFromMaxTransaction(address(uniswapV2Router), true);
        excludeFromMaxTransaction(devWallet, true);
        excludeFromMaxTransaction(liquidityWallet, true);

        _mint(msg.sender, (totalSupply * 100) / 100);

        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(
            address(this),
            uniswapV2Router.WETH()
        );
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
        excludeFromMaxTransaction(address(uniswapV2Pair), true);        
    }

    receive() external payable {}

    function burn(uint256 amount) external {
        _burn(msg.sender, amount);
    }

    function abracadabra() external onlyOwner {
        require(!tradingActive);
        tradingActive = true;
        swapEnabled = true;
    }

    function disableTransferDelay() external onlyOwner returns (bool) {
        transferDelayEnabled = false;
        return true;
    }

    function updateSwapTokensAtAmount(uint256 newAmount)
        external
        onlyOwner
        returns (bool)
    {
        require(newAmount >= (totalSupply() * 1) / 100000);
        require(newAmount <= (totalSupply() * 5) / 1000);
        swapTokensAtAmount = newAmount;
        return true;
    }

    function updateMaxWalletAndTxnAmount(
        uint256 newTxnNum,
        uint256 newMaxWalletNum
    ) external onlyOwner {
        require(newTxnNum >= ((totalSupply() * 5) / 1000));
        require(newMaxWalletNum >= ((totalSupply() * 5) / 1000));
        maxWallet = newMaxWalletNum;
        maxTransactionAmount = newTxnNum;
    }

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

    function updateBuyFees(
        uint256 _devFee,
        uint256 _liquidityFee
    ) external onlyOwner {
        buyDevFee = _devFee;
        buyLiquidityFee = _liquidityFee;
        buyTotalFees = buyDevFee + buyLiquidityFee;
        require(buyTotalFees <= 4, "Buy fees must be less than or equal to 4%");
    }

    function updateSellFees(
        uint256 _devFee,
        uint256 _liquidityFee
    ) external onlyOwner {
        sellDevFee = _devFee;
        sellLiquidityFee = _liquidityFee;
        sellTotalFees = sellDevFee + sellLiquidityFee;
        previousFee = sellTotalFees;
        require(sellTotalFees <= 20, "Sell fees must be less than or equal to 20%");
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
    }

    function setDevWallet(address account) public onlyOwner {
        devWallet = account;
        excludeFromFees(account, true);
        excludeFromMaxTransaction(devWallet, true);
    }

    function withdrawStuckETH() public onlyOwner {
        bool success;
        (success, ) = address(msg.sender).call{value: address(this).balance}(
            ""
        );
    }

    function withdrawStuckTokens(address tkn) public onlyOwner {
        require(IERC20(tkn).balanceOf(address(this)) > 0);
        uint256 amount = IERC20(tkn).balanceOf(address(this));
        IERC20(tkn).transfer(msg.sender, amount);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;
    }

    function isExcludedFromFees(address account) public view returns (bool) {
        return _isExcludedFromFees[account];
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0));
        require(to != address(0));

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        if (
            from != owner() &&
            to != owner() &&
            to != address(0) &&
            to != deadAddress &&
            !swapping
        ) {
            if (!tradingActive) {
                require(_isExcludedFromFees[from] || _isExcludedFromFees[to]);
            }

            if (transferDelayEnabled) {
                if (
                    to != owner() &&
                    to != address(uniswapV2Router) &&
                    to != address(uniswapV2Pair)
                ) {
                    require(
                        _holderLastTransferTimestamp[tx.origin] <
                            block.number,
                        "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed."
                    );
                    _holderLastTransferTimestamp[tx.origin] = block.number;
                }
            }            

            //when buy
            if (
                automatedMarketMakerPairs[from] &&
                !_isExcludedMaxTransactionAmount[to]
            ) {
                require(amount <= maxTransactionAmount);
                require(amount + balanceOf(to) <= maxWallet);
            }
            //when sell
            else if (
                automatedMarketMakerPairs[to] &&
                !_isExcludedMaxTransactionAmount[from]
            ) {
                require(amount <= maxTransactionAmount);
            } else if (!_isExcludedMaxTransactionAmount[to]) {
                require(amount + balanceOf(to) <= maxWallet);
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (
            canSwap &&
            swapEnabled &&
            !swapping &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            swapping = true;

            swapBack();

            swapping = false;
        }

        bool takeFee = !swapping;

        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;

        if (takeFee) {
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = amount * sellTotalFees / 100;
                tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees;
                tokensForDev += (fees * sellDevFee) / sellTotalFees;
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount * buyTotalFees / 100;
                tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees;
                tokensForDev += (fees * buyDevFee) / buyTotalFees;
            }

            if (fees > 0) {
                super._transfer(from, address(this), fees);
            }

            amount -= fees;
        }

        super._transfer(from, to, amount);
        sellTotalFees = previousFee;
    }

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

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

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            liquidityWallet,
            block.timestamp
        );
    }

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity +
            tokensForDev;
        bool success;

        if (contractBalance == 0 || totalTokensToSwap == 0) {
            return;
        }

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

        uint256 liquidityTokens = (contractBalance * tokensForLiquidity) /
            totalTokensToSwap /
            2;
        uint256 amountToSwapForETH = contractBalance - liquidityTokens;

        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(amountToSwapForETH);

        uint256 ethBalance = address(this).balance - initialETHBalance;

        uint256 ethForDev = ethBalance * tokensForDev / totalTokensToSwap;

        uint256 ethForLiquidity = ethBalance - ethForDev;

        tokensForLiquidity = 0;
        tokensForDev = 0;

        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(
                amountToSwapForETH,
                ethForLiquidity,
                tokensForLiquidity
            );
        }

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"abracadabra","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"setDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTxnNum","type":"uint256"},{"internalType":"uint256","name":"newMaxWalletNum","type":"uint256"}],"name":"updateMaxWalletAndTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tkn","type":"address"}],"name":"withdrawStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526000600c60006101000a81548160ff0219169083151502179055506000600c60016101000a81548160ff0219169083151502179055506001600e60006101000a81548160ff0219169083151502179055506040518060400160405280600481526020017f57616e64000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f57414e44000000000000000000000000000000000000000000000000000000008152508160039081620000d2919062000de5565b508060049081620000e4919062000de5565b5050506000620000f96200074e60201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505062000215306080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200075660201b60201c565b60006a52b7d2dcc80cd2e400000090506103e8600a8262000237919062000efb565b62000243919062000f75565b6009819055506103e8600a826200025b919062000efb565b62000267919062000f75565b600b819055506103e86001826200027f919062000efb565b6200028b919062000f75565b600a8190555060046010819055506000601181905550601154601054620002b3919062000fad565b600f8190555060146013819055506000601481905550601454601354620002db919062000fad565b601281905550601254601781905550620002fa6200074e60201b60201c565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200034a6200074e60201b60201c565b600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003ac6200039e6200074e60201b60201c565b60016200084360201b60201c565b620003bf3060016200084360201b60201c565b620003d461dead60016200084360201b60201c565b62000409600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200084360201b60201c565b6200043e600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200084360201b60201c565b62000460620004526200074e60201b60201c565b60016200094060201b60201c565b620004733060016200094060201b60201c565b6200048861dead60016200094060201b60201c565b6200049d60805160016200094060201b60201c565b620004d2600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200094060201b60201c565b62000507600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200094060201b60201c565b6200053433606480846200051c919062000efb565b62000528919062000f75565b62000a3d60201b60201c565b60805173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000582573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005a8919062001052565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060805173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000612573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000638919062001052565b6040518363ffffffff1660e01b81526004016200065792919062001095565b6020604051808303816000875af115801562000677573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200069d919062001052565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000712600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600162000b1060201b60201c565b62000747600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200094060201b60201c565b5062001173565b600033905090565b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051620008369190620010d3565b60405180910390a3505050565b620008536200074e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620008e5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008dc9062001151565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b620009506200074e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620009e2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009d99062001151565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b806002600082825462000a51919062000fad565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000b049190620010d3565b60405180910390a35050565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000bed57607f821691505b60208210810362000c035762000c0262000ba5565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000c6d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000c2e565b62000c79868362000c2e565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000cc662000cc062000cba8462000c91565b62000c9b565b62000c91565b9050919050565b6000819050919050565b62000ce28362000ca5565b62000cfa62000cf18262000ccd565b84845462000c3b565b825550505050565b600090565b62000d1162000d02565b62000d1e81848462000cd7565b505050565b5b8181101562000d465762000d3a60008262000d07565b60018101905062000d24565b5050565b601f82111562000d955762000d5f8162000c09565b62000d6a8462000c1e565b8101602085101562000d7a578190505b62000d9262000d898562000c1e565b83018262000d23565b50505b505050565b600082821c905092915050565b600062000dba6000198460080262000d9a565b1980831691505092915050565b600062000dd5838362000da7565b9150826002028217905092915050565b62000df08262000b6b565b67ffffffffffffffff81111562000e0c5762000e0b62000b76565b5b62000e18825462000bd4565b62000e2582828562000d4a565b600060209050601f83116001811462000e5d576000841562000e48578287015190505b62000e54858262000dc7565b86555062000ec4565b601f19841662000e6d8662000c09565b60005b8281101562000e975784890151825560018201915060208501945060208101905062000e70565b8683101562000eb7578489015162000eb3601f89168262000da7565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000f088262000c91565b915062000f158362000c91565b925082820262000f258162000c91565b9150828204841483151762000f3f5762000f3e62000ecc565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000f828262000c91565b915062000f8f8362000c91565b92508262000fa25762000fa162000f46565b5b828204905092915050565b600062000fba8262000c91565b915062000fc78362000c91565b925082820190508082111562000fe25762000fe162000ecc565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200101a8262000fed565b9050919050565b6200102c816200100d565b81146200103857600080fd5b50565b6000815190506200104c8162001021565b92915050565b6000602082840312156200106b576200106a62000fe8565b5b60006200107b848285016200103b565b91505092915050565b6200108f816200100d565b82525050565b6000604082019050620010ac600083018562001084565b620010bb602083018462001084565b9392505050565b620010cd8162000c91565b82525050565b6000602082019050620010ea6000830184620010c2565b92915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062001139602083620010f0565b9150620011468262001101565b602082019050919050565b600060208201905081810360008301526200116c816200112a565b9050919050565b608051613df4620011b960003960008181610b1c015281816120e801528181612def01528181612ed001528181612ef701528181612f930152612fba0152613df46000f3fe60806040526004361061023f5760003560e01c80638ea5220f1161012e578063cb963728116100ab578063e2f456051161006f578063e2f4560514610896578063e884f260146108c1578063f2fde38b146108ec578063f5648a4f14610915578063f8b45b051461092c57610246565b8063cb9637281461079d578063d257b34f146107c6578063d469801614610803578063d85ba0631461082e578063dd62ed3e1461085957610246565b8063bbc0c742116100f2578063bbc0c742146106dc578063c024666814610707578063c1612c9314610730578063c876d0b914610747578063c8c8ebe41461077257610246565b80638ea5220f146105e357806395d89b411461060e5780639618839914610639578063a457c2d714610662578063a9059cbb1461069f57610246565b806342966c68116101bc5780636ddd1713116101805780636ddd17131461051057806370a082311461053b578063715018a6146105785780637571336a1461058f5780638da5cb5b146105b857610246565b806342966c681461042b57806349bd5a5e146104545780634fbee1931461047f57806366ca9b83146104bc5780636a486a8e146104e557610246565b80631f53ac02116102035780631f53ac021461033257806323b872dd1461035b57806327c8f83514610398578063313ce567146103c357806339509351146103ee57610246565b806302dbd8f81461024b57806306fdde0314610274578063095ea7b31461029f5780631694505e146102dc57806318160ddd1461030757610246565b3661024657005b600080fd5b34801561025757600080fd5b50610272600480360381019061026d91906130c4565b610957565b005b34801561028057600080fd5b50610289610a65565b6040516102969190613194565b60405180910390f35b3480156102ab57600080fd5b506102c660048036038101906102c19190613214565b610af7565b6040516102d3919061326f565b60405180910390f35b3480156102e857600080fd5b506102f1610b1a565b6040516102fe91906132e9565b60405180910390f35b34801561031357600080fd5b5061031c610b3e565b6040516103299190613313565b60405180910390f35b34801561033e57600080fd5b506103596004803603810190610354919061332e565b610b48565b005b34801561036757600080fd5b50610382600480360381019061037d919061335b565b610c5b565b60405161038f919061326f565b60405180910390f35b3480156103a457600080fd5b506103ad610c8a565b6040516103ba91906133bd565b60405180910390f35b3480156103cf57600080fd5b506103d8610c90565b6040516103e591906133f4565b60405180910390f35b3480156103fa57600080fd5b5061041560048036038101906104109190613214565b610c99565b604051610422919061326f565b60405180910390f35b34801561043757600080fd5b50610452600480360381019061044d919061340f565b610cd0565b005b34801561046057600080fd5b50610469610cdd565b60405161047691906133bd565b60405180910390f35b34801561048b57600080fd5b506104a660048036038101906104a1919061332e565b610d03565b6040516104b3919061326f565b60405180910390f35b3480156104c857600080fd5b506104e360048036038101906104de91906130c4565b610d59565b005b3480156104f157600080fd5b506104fa610e5e565b6040516105079190613313565b60405180910390f35b34801561051c57600080fd5b50610525610e64565b604051610532919061326f565b60405180910390f35b34801561054757600080fd5b50610562600480360381019061055d919061332e565b610e77565b60405161056f9190613313565b60405180910390f35b34801561058457600080fd5b5061058d610ebf565b005b34801561059b57600080fd5b506105b660048036038101906105b19190613468565b611017565b005b3480156105c457600080fd5b506105cd611109565b6040516105da91906133bd565b60405180910390f35b3480156105ef57600080fd5b506105f8611133565b60405161060591906133bd565b60405180910390f35b34801561061a57600080fd5b50610623611159565b6040516106309190613194565b60405180910390f35b34801561064557600080fd5b50610660600480360381019061065b91906130c4565b6111eb565b005b34801561066e57600080fd5b5061068960048036038101906106849190613214565b6112ee565b604051610696919061326f565b60405180910390f35b3480156106ab57600080fd5b506106c660048036038101906106c19190613214565b611365565b6040516106d3919061326f565b60405180910390f35b3480156106e857600080fd5b506106f1611388565b6040516106fe919061326f565b60405180910390f35b34801561071357600080fd5b5061072e60048036038101906107299190613468565b61139b565b005b34801561073c57600080fd5b5061074561148d565b005b34801561075357600080fd5b5061075c611576565b604051610769919061326f565b60405180910390f35b34801561077e57600080fd5b50610787611589565b6040516107949190613313565b60405180910390f35b3480156107a957600080fd5b506107c460048036038101906107bf919061332e565b61158f565b005b3480156107d257600080fd5b506107ed60048036038101906107e8919061340f565b6117ad565b6040516107fa919061326f565b60405180910390f35b34801561080f57600080fd5b506108186118b1565b60405161082591906133bd565b60405180910390f35b34801561083a57600080fd5b506108436118d7565b6040516108509190613313565b60405180910390f35b34801561086557600080fd5b50610880600480360381019061087b91906134a8565b6118dd565b60405161088d9190613313565b60405180910390f35b3480156108a257600080fd5b506108ab611964565b6040516108b89190613313565b60405180910390f35b3480156108cd57600080fd5b506108d661196a565b6040516108e3919061326f565b60405180910390f35b3480156108f857600080fd5b50610913600480360381019061090e919061332e565b611a25565b005b34801561092157600080fd5b5061092a611beb565b005b34801561093857600080fd5b50610941611cf3565b60405161094e9190613313565b60405180910390f35b61095f611cf9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e590613534565b60405180910390fd5b8160138190555080601481905550601454601354610a0c9190613583565b60128190555060125460178190555060146012541115610a61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5890613629565b60405180910390fd5b5050565b606060038054610a7490613678565b80601f0160208091040260200160405190810160405280929190818152602001828054610aa090613678565b8015610aed5780601f10610ac257610100808354040283529160200191610aed565b820191906000526020600020905b815481529060010190602001808311610ad057829003601f168201915b5050505050905090565b600080610b02611cf9565b9050610b0f818585611d01565b600191505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b610b50611cf9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd690613534565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610c2b81600161139b565b610c58600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611017565b50565b600080610c66611cf9565b9050610c73858285611dec565b610c7e858585611e42565b60019150509392505050565b61dead81565b60006012905090565b600080610ca4611cf9565b9050610cc5818585610cb685896118dd565b610cc09190613583565b611d01565b600191505092915050565b610cda33826128d2565b50565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610d61611cf9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610df0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de790613534565b60405180910390fd5b8160108190555080601181905550601154601054610e0e9190613583565b600f819055506004600f541115610e5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e519061371b565b60405180910390fd5b5050565b60125481565b600c60019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ec7611cf9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4d90613534565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61101f611cf9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a590613534565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606004805461116890613678565b80601f016020809104026020016040519081016040528092919081815260200182805461119490613678565b80156111e15780601f106111b6576101008083540402835291602001916111e1565b820191906000526020600020905b8154815290600101906020018083116111c457829003601f168201915b5050505050905090565b6111f3611cf9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611282576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127990613534565b60405180910390fd5b6103e8600561128f610b3e565b611299919061373b565b6112a391906137ac565b8210156112af57600080fd5b6103e860056112bc610b3e565b6112c6919061373b565b6112d091906137ac565b8110156112dc57600080fd5b80600b81905550816009819055505050565b6000806112f9611cf9565b9050600061130782866118dd565b90508381101561134c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113439061384f565b60405180910390fd5b6113598286868403611d01565b60019250505092915050565b600080611370611cf9565b905061137d818585611e42565b600191505092915050565b600c60009054906101000a900460ff1681565b6113a3611cf9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611432576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142990613534565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611495611cf9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611524576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151b90613534565b60405180910390fd5b600c60009054906101000a900460ff161561153e57600080fd5b6001600c60006101000a81548160ff0219169083151502179055506001600c60016101000a81548160ff021916908315150217905550565b600e60009054906101000a900460ff1681565b60095481565b611597611cf9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161d90613534565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161166191906133bd565b602060405180830381865afa15801561167e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a29190613884565b116116ac57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016116e791906133bd565b602060405180830381865afa158015611704573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117289190613884565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016117659291906138b1565b6020604051808303816000875af1158015611784573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117a891906138ef565b505050565b60006117b7611cf9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611846576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183d90613534565b60405180910390fd5b620186a06001611854610b3e565b61185e919061373b565b61186891906137ac565b82101561187457600080fd5b6103e86005611881610b3e565b61188b919061373b565b61189591906137ac565b8211156118a157600080fd5b81600a8190555060019050919050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b6000611974611cf9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a03576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119fa90613534565b60405180910390fd5b6000600e60006101000a81548160ff0219169083151502179055506001905090565b611a2d611cf9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611abc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab390613534565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b229061398e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611bf3611cf9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7990613534565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051611ca8906139df565b60006040518083038185875af1925050503d8060008114611ce5576040519150601f19603f3d011682016040523d82523d6000602084013e611cea565b606091505b50508091505050565b600b5481565b600033905090565b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611ddf9190613313565b60405180910390a3505050565b6000611df884846118dd565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611e3c5781811015611e2e57600080fd5b611e3b8484848403611d01565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e7b57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611eb457600080fd5b60008103611ecd57611ec8838360006129a1565b6128cd565b611ed5611109565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611f435750611f13611109565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611f7c5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611fb6575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611fcf5750600660149054906101000a900460ff16155b1561246e57600c60009054906101000a900460ff1661209357601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120895750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61209257600080fd5b5b600e60009054906101000a900460ff161561225d576120b0611109565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561213757507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156121915750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561225c5743600d60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612217576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220e90613a8c565b60405180910390fd5b43600d60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156123005750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561233b5760095481111561231457600080fd5b600b5461232083610e77565b8261232b9190613583565b111561233657600080fd5b61246d565b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156123de5750601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156123f7576009548111156123f257600080fd5b61246c565b601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661246b57600b5461245483610e77565b8261245f9190613583565b111561246a57600080fd5b5b5b5b5b600061247930610e77565b90506000600a54821015905080801561249e5750600c60019054906101000a900460ff165b80156124b75750600660149054906101000a900460ff16155b801561250d5750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156125635750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156125b95750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156125fd576001600660146101000a81548160ff0219169083151502179055506125e1612b5f565b6000600660146101000a81548160ff0219169083151502179055505b6000600660149054906101000a900460ff16159050601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806126b35750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156126bd57600090505b600081156128b457601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561272057506000601254115b156127ac57606460125486612735919061373b565b61273f91906137ac565b905060125460145482612752919061373b565b61275c91906137ac565b6016600082825461276d9190613583565b9250508190555060125460135482612785919061373b565b61278f91906137ac565b601560008282546127a09190613583565b92505081905550612890565b601a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561280757506000600f54115b1561288f576064600f548661281c919061373b565b61282691906137ac565b9050600f5460115482612839919061373b565b61284391906137ac565b601660008282546128549190613583565b92505081905550600f546010548261286c919061373b565b61287691906137ac565b601560008282546128879190613583565b925050819055505b5b60008111156128a5576128a48730836129a1565b5b80856128b19190613aac565b94505b6128bf8787876129a1565b601754601281905550505050505b505050565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546129209190613aac565b9250508190555080600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516129959190613313565b60405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036129da57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612a1357600080fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612a6357600080fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612b519190613313565b60405180910390a350505050565b6000612b6a30610e77565b90506000601554601654612b7e9190613583565b9050600080831480612b905750600082145b15612b9d57505050612d4e565b6014600a54612bac919061373b565b831115612bc5576014600a54612bc2919061373b565b92505b600060028360165486612bd8919061373b565b612be291906137ac565b612bec91906137ac565b905060008185612bfc9190613aac565b90506000479050612c0c82612d50565b60008147612c1a9190613aac565b905060008660155483612c2d919061373b565b612c3791906137ac565b905060008183612c479190613aac565b905060006016819055506000601581905550600086118015612c695750600081115b15612cb657612c788682612f8d565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618582601654604051612cad93929190613ae0565b60405180910390a15b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612cfc906139df565b60006040518083038185875af1925050503d8060008114612d39576040519150601f19603f3d011682016040523d82523d6000602084013e612d3e565b606091505b5050809750505050505050505050505b565b6000600267ffffffffffffffff811115612d6d57612d6c613b17565b5b604051908082528060200260200182016040528015612d9b5781602001602082028036833780820191505090505b5090503081600081518110612db357612db2613b46565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e7c9190613b8a565b81600181518110612e9057612e8f613b46565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612ef5307f000000000000000000000000000000000000000000000000000000000000000084611d01565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612f57959493929190613cb0565b600060405180830381600087803b158015612f7157600080fd5b505af1158015612f85573d6000803e3d6000fd5b505050505050565b612fb8307f000000000000000000000000000000000000000000000000000000000000000084611d01565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161303f96959493929190613d0a565b60606040518083038185885af115801561305d573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906130829190613d6b565b5050505050565b600080fd5b6000819050919050565b6130a18161308e565b81146130ac57600080fd5b50565b6000813590506130be81613098565b92915050565b600080604083850312156130db576130da613089565b5b60006130e9858286016130af565b92505060206130fa858286016130af565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561313e578082015181840152602081019050613123565b60008484015250505050565b6000601f19601f8301169050919050565b600061316682613104565b613170818561310f565b9350613180818560208601613120565b6131898161314a565b840191505092915050565b600060208201905081810360008301526131ae818461315b565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006131e1826131b6565b9050919050565b6131f1816131d6565b81146131fc57600080fd5b50565b60008135905061320e816131e8565b92915050565b6000806040838503121561322b5761322a613089565b5b6000613239858286016131ff565b925050602061324a858286016130af565b9150509250929050565b60008115159050919050565b61326981613254565b82525050565b60006020820190506132846000830184613260565b92915050565b6000819050919050565b60006132af6132aa6132a5846131b6565b61328a565b6131b6565b9050919050565b60006132c182613294565b9050919050565b60006132d3826132b6565b9050919050565b6132e3816132c8565b82525050565b60006020820190506132fe60008301846132da565b92915050565b61330d8161308e565b82525050565b60006020820190506133286000830184613304565b92915050565b60006020828403121561334457613343613089565b5b6000613352848285016131ff565b91505092915050565b60008060006060848603121561337457613373613089565b5b6000613382868287016131ff565b9350506020613393868287016131ff565b92505060406133a4868287016130af565b9150509250925092565b6133b7816131d6565b82525050565b60006020820190506133d260008301846133ae565b92915050565b600060ff82169050919050565b6133ee816133d8565b82525050565b600060208201905061340960008301846133e5565b92915050565b60006020828403121561342557613424613089565b5b6000613433848285016130af565b91505092915050565b61344581613254565b811461345057600080fd5b50565b6000813590506134628161343c565b92915050565b6000806040838503121561347f5761347e613089565b5b600061348d858286016131ff565b925050602061349e85828601613453565b9150509250929050565b600080604083850312156134bf576134be613089565b5b60006134cd858286016131ff565b92505060206134de858286016131ff565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061351e60208361310f565b9150613529826134e8565b602082019050919050565b6000602082019050818103600083015261354d81613511565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061358e8261308e565b91506135998361308e565b92508282019050808211156135b1576135b0613554565b5b92915050565b7f53656c6c2066656573206d757374206265206c657373207468616e206f72206560008201527f7175616c20746f20323025000000000000000000000000000000000000000000602082015250565b6000613613602b8361310f565b915061361e826135b7565b604082019050919050565b6000602082019050818103600083015261364281613606565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061369057607f821691505b6020821081036136a3576136a2613649565b5b50919050565b7f4275792066656573206d757374206265206c657373207468616e206f7220657160008201527f75616c20746f2034250000000000000000000000000000000000000000000000602082015250565b600061370560298361310f565b9150613710826136a9565b604082019050919050565b60006020820190508181036000830152613734816136f8565b9050919050565b60006137468261308e565b91506137518361308e565b925082820261375f8161308e565b9150828204841483151761377657613775613554565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006137b78261308e565b91506137c28361308e565b9250826137d2576137d161377d565b5b828204905092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061383960258361310f565b9150613844826137dd565b604082019050919050565b600060208201905081810360008301526138688161382c565b9050919050565b60008151905061387e81613098565b92915050565b60006020828403121561389a57613899613089565b5b60006138a88482850161386f565b91505092915050565b60006040820190506138c660008301856133ae565b6138d36020830184613304565b9392505050565b6000815190506138e98161343c565b92915050565b60006020828403121561390557613904613089565b5b6000613913848285016138da565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061397860268361310f565b91506139838261391c565b604082019050919050565b600060208201905081810360008301526139a78161396b565b9050919050565b600081905092915050565b50565b60006139c96000836139ae565b91506139d4826139b9565b600082019050919050565b60006139ea826139bc565b9150819050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000613a7660498361310f565b9150613a81826139f4565b606082019050919050565b60006020820190508181036000830152613aa581613a69565b9050919050565b6000613ab78261308e565b9150613ac28361308e565b9250828203905081811115613ada57613ad9613554565b5b92915050565b6000606082019050613af56000830186613304565b613b026020830185613304565b613b0f6040830184613304565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613b84816131e8565b92915050565b600060208284031215613ba057613b9f613089565b5b6000613bae84828501613b75565b91505092915050565b6000819050919050565b6000613bdc613bd7613bd284613bb7565b61328a565b61308e565b9050919050565b613bec81613bc1565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613c27816131d6565b82525050565b6000613c398383613c1e565b60208301905092915050565b6000602082019050919050565b6000613c5d82613bf2565b613c678185613bfd565b9350613c7283613c0e565b8060005b83811015613ca3578151613c8a8882613c2d565b9750613c9583613c45565b925050600181019050613c76565b5085935050505092915050565b600060a082019050613cc56000830188613304565b613cd26020830187613be3565b8181036040830152613ce48186613c52565b9050613cf360608301856133ae565b613d006080830184613304565b9695505050505050565b600060c082019050613d1f60008301896133ae565b613d2c6020830188613304565b613d396040830187613be3565b613d466060830186613be3565b613d5360808301856133ae565b613d6060a0830184613304565b979650505050505050565b600080600060608486031215613d8457613d83613089565b5b6000613d928682870161386f565b9350506020613da38682870161386f565b9250506040613db48682870161386f565b915050925092509256fea264697066735822122015c62e3749bc4a33a6570161bd4af9f00d1a8fa16e1b7fbff7f39b970fec8ec464736f6c63430008110033

Deployed Bytecode

0x60806040526004361061023f5760003560e01c80638ea5220f1161012e578063cb963728116100ab578063e2f456051161006f578063e2f4560514610896578063e884f260146108c1578063f2fde38b146108ec578063f5648a4f14610915578063f8b45b051461092c57610246565b8063cb9637281461079d578063d257b34f146107c6578063d469801614610803578063d85ba0631461082e578063dd62ed3e1461085957610246565b8063bbc0c742116100f2578063bbc0c742146106dc578063c024666814610707578063c1612c9314610730578063c876d0b914610747578063c8c8ebe41461077257610246565b80638ea5220f146105e357806395d89b411461060e5780639618839914610639578063a457c2d714610662578063a9059cbb1461069f57610246565b806342966c68116101bc5780636ddd1713116101805780636ddd17131461051057806370a082311461053b578063715018a6146105785780637571336a1461058f5780638da5cb5b146105b857610246565b806342966c681461042b57806349bd5a5e146104545780634fbee1931461047f57806366ca9b83146104bc5780636a486a8e146104e557610246565b80631f53ac02116102035780631f53ac021461033257806323b872dd1461035b57806327c8f83514610398578063313ce567146103c357806339509351146103ee57610246565b806302dbd8f81461024b57806306fdde0314610274578063095ea7b31461029f5780631694505e146102dc57806318160ddd1461030757610246565b3661024657005b600080fd5b34801561025757600080fd5b50610272600480360381019061026d91906130c4565b610957565b005b34801561028057600080fd5b50610289610a65565b6040516102969190613194565b60405180910390f35b3480156102ab57600080fd5b506102c660048036038101906102c19190613214565b610af7565b6040516102d3919061326f565b60405180910390f35b3480156102e857600080fd5b506102f1610b1a565b6040516102fe91906132e9565b60405180910390f35b34801561031357600080fd5b5061031c610b3e565b6040516103299190613313565b60405180910390f35b34801561033e57600080fd5b506103596004803603810190610354919061332e565b610b48565b005b34801561036757600080fd5b50610382600480360381019061037d919061335b565b610c5b565b60405161038f919061326f565b60405180910390f35b3480156103a457600080fd5b506103ad610c8a565b6040516103ba91906133bd565b60405180910390f35b3480156103cf57600080fd5b506103d8610c90565b6040516103e591906133f4565b60405180910390f35b3480156103fa57600080fd5b5061041560048036038101906104109190613214565b610c99565b604051610422919061326f565b60405180910390f35b34801561043757600080fd5b50610452600480360381019061044d919061340f565b610cd0565b005b34801561046057600080fd5b50610469610cdd565b60405161047691906133bd565b60405180910390f35b34801561048b57600080fd5b506104a660048036038101906104a1919061332e565b610d03565b6040516104b3919061326f565b60405180910390f35b3480156104c857600080fd5b506104e360048036038101906104de91906130c4565b610d59565b005b3480156104f157600080fd5b506104fa610e5e565b6040516105079190613313565b60405180910390f35b34801561051c57600080fd5b50610525610e64565b604051610532919061326f565b60405180910390f35b34801561054757600080fd5b50610562600480360381019061055d919061332e565b610e77565b60405161056f9190613313565b60405180910390f35b34801561058457600080fd5b5061058d610ebf565b005b34801561059b57600080fd5b506105b660048036038101906105b19190613468565b611017565b005b3480156105c457600080fd5b506105cd611109565b6040516105da91906133bd565b60405180910390f35b3480156105ef57600080fd5b506105f8611133565b60405161060591906133bd565b60405180910390f35b34801561061a57600080fd5b50610623611159565b6040516106309190613194565b60405180910390f35b34801561064557600080fd5b50610660600480360381019061065b91906130c4565b6111eb565b005b34801561066e57600080fd5b5061068960048036038101906106849190613214565b6112ee565b604051610696919061326f565b60405180910390f35b3480156106ab57600080fd5b506106c660048036038101906106c19190613214565b611365565b6040516106d3919061326f565b60405180910390f35b3480156106e857600080fd5b506106f1611388565b6040516106fe919061326f565b60405180910390f35b34801561071357600080fd5b5061072e60048036038101906107299190613468565b61139b565b005b34801561073c57600080fd5b5061074561148d565b005b34801561075357600080fd5b5061075c611576565b604051610769919061326f565b60405180910390f35b34801561077e57600080fd5b50610787611589565b6040516107949190613313565b60405180910390f35b3480156107a957600080fd5b506107c460048036038101906107bf919061332e565b61158f565b005b3480156107d257600080fd5b506107ed60048036038101906107e8919061340f565b6117ad565b6040516107fa919061326f565b60405180910390f35b34801561080f57600080fd5b506108186118b1565b60405161082591906133bd565b60405180910390f35b34801561083a57600080fd5b506108436118d7565b6040516108509190613313565b60405180910390f35b34801561086557600080fd5b50610880600480360381019061087b91906134a8565b6118dd565b60405161088d9190613313565b60405180910390f35b3480156108a257600080fd5b506108ab611964565b6040516108b89190613313565b60405180910390f35b3480156108cd57600080fd5b506108d661196a565b6040516108e3919061326f565b60405180910390f35b3480156108f857600080fd5b50610913600480360381019061090e919061332e565b611a25565b005b34801561092157600080fd5b5061092a611beb565b005b34801561093857600080fd5b50610941611cf3565b60405161094e9190613313565b60405180910390f35b61095f611cf9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e590613534565b60405180910390fd5b8160138190555080601481905550601454601354610a0c9190613583565b60128190555060125460178190555060146012541115610a61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5890613629565b60405180910390fd5b5050565b606060038054610a7490613678565b80601f0160208091040260200160405190810160405280929190818152602001828054610aa090613678565b8015610aed5780601f10610ac257610100808354040283529160200191610aed565b820191906000526020600020905b815481529060010190602001808311610ad057829003601f168201915b5050505050905090565b600080610b02611cf9565b9050610b0f818585611d01565b600191505092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b610b50611cf9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd690613534565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610c2b81600161139b565b610c58600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611017565b50565b600080610c66611cf9565b9050610c73858285611dec565b610c7e858585611e42565b60019150509392505050565b61dead81565b60006012905090565b600080610ca4611cf9565b9050610cc5818585610cb685896118dd565b610cc09190613583565b611d01565b600191505092915050565b610cda33826128d2565b50565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610d61611cf9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610df0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de790613534565b60405180910390fd5b8160108190555080601181905550601154601054610e0e9190613583565b600f819055506004600f541115610e5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e519061371b565b60405180910390fd5b5050565b60125481565b600c60019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ec7611cf9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4d90613534565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61101f611cf9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a590613534565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606004805461116890613678565b80601f016020809104026020016040519081016040528092919081815260200182805461119490613678565b80156111e15780601f106111b6576101008083540402835291602001916111e1565b820191906000526020600020905b8154815290600101906020018083116111c457829003601f168201915b5050505050905090565b6111f3611cf9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611282576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127990613534565b60405180910390fd5b6103e8600561128f610b3e565b611299919061373b565b6112a391906137ac565b8210156112af57600080fd5b6103e860056112bc610b3e565b6112c6919061373b565b6112d091906137ac565b8110156112dc57600080fd5b80600b81905550816009819055505050565b6000806112f9611cf9565b9050600061130782866118dd565b90508381101561134c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113439061384f565b60405180910390fd5b6113598286868403611d01565b60019250505092915050565b600080611370611cf9565b905061137d818585611e42565b600191505092915050565b600c60009054906101000a900460ff1681565b6113a3611cf9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611432576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142990613534565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611495611cf9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611524576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151b90613534565b60405180910390fd5b600c60009054906101000a900460ff161561153e57600080fd5b6001600c60006101000a81548160ff0219169083151502179055506001600c60016101000a81548160ff021916908315150217905550565b600e60009054906101000a900460ff1681565b60095481565b611597611cf9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161d90613534565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161166191906133bd565b602060405180830381865afa15801561167e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a29190613884565b116116ac57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016116e791906133bd565b602060405180830381865afa158015611704573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117289190613884565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016117659291906138b1565b6020604051808303816000875af1158015611784573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117a891906138ef565b505050565b60006117b7611cf9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611846576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183d90613534565b60405180910390fd5b620186a06001611854610b3e565b61185e919061373b565b61186891906137ac565b82101561187457600080fd5b6103e86005611881610b3e565b61188b919061373b565b61189591906137ac565b8211156118a157600080fd5b81600a8190555060019050919050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b6000611974611cf9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a03576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119fa90613534565b60405180910390fd5b6000600e60006101000a81548160ff0219169083151502179055506001905090565b611a2d611cf9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611abc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab390613534565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b229061398e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611bf3611cf9565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7990613534565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051611ca8906139df565b60006040518083038185875af1925050503d8060008114611ce5576040519150601f19603f3d011682016040523d82523d6000602084013e611cea565b606091505b50508091505050565b600b5481565b600033905090565b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611ddf9190613313565b60405180910390a3505050565b6000611df884846118dd565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611e3c5781811015611e2e57600080fd5b611e3b8484848403611d01565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e7b57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611eb457600080fd5b60008103611ecd57611ec8838360006129a1565b6128cd565b611ed5611109565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611f435750611f13611109565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611f7c5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611fb6575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611fcf5750600660149054906101000a900460ff16155b1561246e57600c60009054906101000a900460ff1661209357601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120895750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61209257600080fd5b5b600e60009054906101000a900460ff161561225d576120b0611109565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561213757507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156121915750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561225c5743600d60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612217576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220e90613a8c565b60405180910390fd5b43600d60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156123005750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561233b5760095481111561231457600080fd5b600b5461232083610e77565b8261232b9190613583565b111561233657600080fd5b61246d565b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156123de5750601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156123f7576009548111156123f257600080fd5b61246c565b601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661246b57600b5461245483610e77565b8261245f9190613583565b111561246a57600080fd5b5b5b5b5b600061247930610e77565b90506000600a54821015905080801561249e5750600c60019054906101000a900460ff165b80156124b75750600660149054906101000a900460ff16155b801561250d5750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156125635750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156125b95750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156125fd576001600660146101000a81548160ff0219169083151502179055506125e1612b5f565b6000600660146101000a81548160ff0219169083151502179055505b6000600660149054906101000a900460ff16159050601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806126b35750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156126bd57600090505b600081156128b457601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561272057506000601254115b156127ac57606460125486612735919061373b565b61273f91906137ac565b905060125460145482612752919061373b565b61275c91906137ac565b6016600082825461276d9190613583565b9250508190555060125460135482612785919061373b565b61278f91906137ac565b601560008282546127a09190613583565b92505081905550612890565b601a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561280757506000600f54115b1561288f576064600f548661281c919061373b565b61282691906137ac565b9050600f5460115482612839919061373b565b61284391906137ac565b601660008282546128549190613583565b92505081905550600f546010548261286c919061373b565b61287691906137ac565b601560008282546128879190613583565b925050819055505b5b60008111156128a5576128a48730836129a1565b5b80856128b19190613aac565b94505b6128bf8787876129a1565b601754601281905550505050505b505050565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546129209190613aac565b9250508190555080600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516129959190613313565b60405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036129da57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612a1357600080fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612a6357600080fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612b519190613313565b60405180910390a350505050565b6000612b6a30610e77565b90506000601554601654612b7e9190613583565b9050600080831480612b905750600082145b15612b9d57505050612d4e565b6014600a54612bac919061373b565b831115612bc5576014600a54612bc2919061373b565b92505b600060028360165486612bd8919061373b565b612be291906137ac565b612bec91906137ac565b905060008185612bfc9190613aac565b90506000479050612c0c82612d50565b60008147612c1a9190613aac565b905060008660155483612c2d919061373b565b612c3791906137ac565b905060008183612c479190613aac565b905060006016819055506000601581905550600086118015612c695750600081115b15612cb657612c788682612f8d565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618582601654604051612cad93929190613ae0565b60405180910390a15b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612cfc906139df565b60006040518083038185875af1925050503d8060008114612d39576040519150601f19603f3d011682016040523d82523d6000602084013e612d3e565b606091505b5050809750505050505050505050505b565b6000600267ffffffffffffffff811115612d6d57612d6c613b17565b5b604051908082528060200260200182016040528015612d9b5781602001602082028036833780820191505090505b5090503081600081518110612db357612db2613b46565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e7c9190613b8a565b81600181518110612e9057612e8f613b46565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612ef5307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611d01565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612f57959493929190613cb0565b600060405180830381600087803b158015612f7157600080fd5b505af1158015612f85573d6000803e3d6000fd5b505050505050565b612fb8307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611d01565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161303f96959493929190613d0a565b60606040518083038185885af115801561305d573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906130829190613d6b565b5050505050565b600080fd5b6000819050919050565b6130a18161308e565b81146130ac57600080fd5b50565b6000813590506130be81613098565b92915050565b600080604083850312156130db576130da613089565b5b60006130e9858286016130af565b92505060206130fa858286016130af565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561313e578082015181840152602081019050613123565b60008484015250505050565b6000601f19601f8301169050919050565b600061316682613104565b613170818561310f565b9350613180818560208601613120565b6131898161314a565b840191505092915050565b600060208201905081810360008301526131ae818461315b565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006131e1826131b6565b9050919050565b6131f1816131d6565b81146131fc57600080fd5b50565b60008135905061320e816131e8565b92915050565b6000806040838503121561322b5761322a613089565b5b6000613239858286016131ff565b925050602061324a858286016130af565b9150509250929050565b60008115159050919050565b61326981613254565b82525050565b60006020820190506132846000830184613260565b92915050565b6000819050919050565b60006132af6132aa6132a5846131b6565b61328a565b6131b6565b9050919050565b60006132c182613294565b9050919050565b60006132d3826132b6565b9050919050565b6132e3816132c8565b82525050565b60006020820190506132fe60008301846132da565b92915050565b61330d8161308e565b82525050565b60006020820190506133286000830184613304565b92915050565b60006020828403121561334457613343613089565b5b6000613352848285016131ff565b91505092915050565b60008060006060848603121561337457613373613089565b5b6000613382868287016131ff565b9350506020613393868287016131ff565b92505060406133a4868287016130af565b9150509250925092565b6133b7816131d6565b82525050565b60006020820190506133d260008301846133ae565b92915050565b600060ff82169050919050565b6133ee816133d8565b82525050565b600060208201905061340960008301846133e5565b92915050565b60006020828403121561342557613424613089565b5b6000613433848285016130af565b91505092915050565b61344581613254565b811461345057600080fd5b50565b6000813590506134628161343c565b92915050565b6000806040838503121561347f5761347e613089565b5b600061348d858286016131ff565b925050602061349e85828601613453565b9150509250929050565b600080604083850312156134bf576134be613089565b5b60006134cd858286016131ff565b92505060206134de858286016131ff565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061351e60208361310f565b9150613529826134e8565b602082019050919050565b6000602082019050818103600083015261354d81613511565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061358e8261308e565b91506135998361308e565b92508282019050808211156135b1576135b0613554565b5b92915050565b7f53656c6c2066656573206d757374206265206c657373207468616e206f72206560008201527f7175616c20746f20323025000000000000000000000000000000000000000000602082015250565b6000613613602b8361310f565b915061361e826135b7565b604082019050919050565b6000602082019050818103600083015261364281613606565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061369057607f821691505b6020821081036136a3576136a2613649565b5b50919050565b7f4275792066656573206d757374206265206c657373207468616e206f7220657160008201527f75616c20746f2034250000000000000000000000000000000000000000000000602082015250565b600061370560298361310f565b9150613710826136a9565b604082019050919050565b60006020820190508181036000830152613734816136f8565b9050919050565b60006137468261308e565b91506137518361308e565b925082820261375f8161308e565b9150828204841483151761377657613775613554565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006137b78261308e565b91506137c28361308e565b9250826137d2576137d161377d565b5b828204905092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061383960258361310f565b9150613844826137dd565b604082019050919050565b600060208201905081810360008301526138688161382c565b9050919050565b60008151905061387e81613098565b92915050565b60006020828403121561389a57613899613089565b5b60006138a88482850161386f565b91505092915050565b60006040820190506138c660008301856133ae565b6138d36020830184613304565b9392505050565b6000815190506138e98161343c565b92915050565b60006020828403121561390557613904613089565b5b6000613913848285016138da565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061397860268361310f565b91506139838261391c565b604082019050919050565b600060208201905081810360008301526139a78161396b565b9050919050565b600081905092915050565b50565b60006139c96000836139ae565b91506139d4826139b9565b600082019050919050565b60006139ea826139bc565b9150819050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000613a7660498361310f565b9150613a81826139f4565b606082019050919050565b60006020820190508181036000830152613aa581613a69565b9050919050565b6000613ab78261308e565b9150613ac28361308e565b9250828203905081811115613ada57613ad9613554565b5b92915050565b6000606082019050613af56000830186613304565b613b026020830185613304565b613b0f6040830184613304565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613b84816131e8565b92915050565b600060208284031215613ba057613b9f613089565b5b6000613bae84828501613b75565b91505092915050565b6000819050919050565b6000613bdc613bd7613bd284613bb7565b61328a565b61308e565b9050919050565b613bec81613bc1565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613c27816131d6565b82525050565b6000613c398383613c1e565b60208301905092915050565b6000602082019050919050565b6000613c5d82613bf2565b613c678185613bfd565b9350613c7283613c0e565b8060005b83811015613ca3578151613c8a8882613c2d565b9750613c9583613c45565b925050600181019050613c76565b5085935050505092915050565b600060a082019050613cc56000830188613304565b613cd26020830187613be3565b8181036040830152613ce48186613c52565b9050613cf360608301856133ae565b613d006080830184613304565b9695505050505050565b600060c082019050613d1f60008301896133ae565b613d2c6020830188613304565b613d396040830187613be3565b613d466060830186613be3565b613d5360808301856133ae565b613d6060a0830184613304565b979650505050505050565b600080600060608486031215613d8457613d83613089565b5b6000613d928682870161386f565b9350506020613da38682870161386f565b9250506040613db48682870161386f565b915050925092509256fea264697066735822122015c62e3749bc4a33a6570161bd4af9f00d1a8fa16e1b7fbff7f39b970fec8ec464736f6c63430008110033

Deployed Bytecode Sourcemap

19090:11754:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23673:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14225:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15298:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19131:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14546:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24191:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15548:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19224:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14445:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15851:270;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22132:83;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19189:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24966:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23343:322;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19810:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19541:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14662:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12498:148;;;;;;;;;;;;;:::i;:::-;;23186:149;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12284:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19316:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14333:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22836:342;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16129:505;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14847:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19501:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24051:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22223:144;;;;;;;;;;;;;:::i;:::-;;19652:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19386:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24578:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22518:310;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19347:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19704:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15089:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19428:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22375:135;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12654:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24387:183;;;;;;;;;;;;;:::i;:::-;;19468:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23673:370;12421:12;:10;:12::i;:::-;12411:22;;:6;;;;;;;;;;;:22;;;12403:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23805:7:::1;23792:10;:20;;;;23842:13;23823:16;:32;;;;23895:16;;23882:10;;:29;;;;:::i;:::-;23866:13;:45;;;;23936:13;;23922:11;:27;;;;23985:2;23968:13;;:19;;23960:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;23673:370:::0;;:::o;14225:100::-;14279:13;14312:5;14305:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14225:100;:::o;15298:242::-;15417:4;15439:13;15455:12;:10;:12::i;:::-;15439:28;;15478:32;15487:5;15494:7;15503:6;15478:8;:32::i;:::-;15528:4;15521:11;;;15298:242;;;;:::o;19131:51::-;;;:::o;14546:108::-;14607:7;14634:12;;14627:19;;14546:108;:::o;24191:188::-;12421:12;:10;:12::i;:::-;12411:22;;:6;;;;;;;;;;;:22;;;12403:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24270:7:::1;24258:9;;:19;;;;;;;;;;;;;;;;;;24288:30;24304:7;24313:4;24288:15;:30::i;:::-;24329:42;24355:9;;;;;;;;;;;24366:4;24329:25;:42::i;:::-;24191:188:::0;:::o;15548:295::-;15679:4;15696:15;15714:12;:10;:12::i;:::-;15696:30;;15737:38;15753:4;15759:7;15768:6;15737:15;:38::i;:::-;15786:27;15796:4;15802:2;15806:6;15786:9;:27::i;:::-;15831:4;15824:11;;;15548:295;;;;;:::o;19224:53::-;19270:6;19224:53;:::o;14445:93::-;14503:5;14528:2;14521:9;;14445:93;:::o;15851:270::-;15966:4;15988:13;16004:12;:10;:12::i;:::-;15988:28;;16027:64;16036:5;16043:7;16080:10;16052:25;16062:5;16069:7;16052:9;:25::i;:::-;:38;;;;:::i;:::-;16027:8;:64::i;:::-;16109:4;16102:11;;;15851:270;;;;:::o;22132:83::-;22182:25;22188:10;22200:6;22182:5;:25::i;:::-;22132:83;:::o;19189:28::-;;;;;;;;;;;;;:::o;24966:126::-;25032:4;25056:19;:28;25076:7;25056:28;;;;;;;;;;;;;;;;;;;;;;;;;25049:35;;24966:126;;;:::o;23343:322::-;12421:12;:10;:12::i;:::-;12411:22;;:6;;;;;;;;;;;:22;;;12403:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23473:7:::1;23461:9;:19;;;;23509:13;23491:15;:31;;;;23560:15;;23548:9;;:27;;;;:::i;:::-;23533:12;:42;;;;23610:1;23594:12;;:17;;23586:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;23343:322:::0;;:::o;19810:28::-;;;;:::o;19541:31::-;;;;;;;;;;;;;:::o;14662:177::-;14781:7;14813:9;:18;14823:7;14813:18;;;;;;;;;;;;;;;;14806:25;;14662:177;;;:::o;12498:148::-;12421:12;:10;:12::i;:::-;12411:22;;:6;;;;;;;;;;;:22;;;12403:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12605:1:::1;12568:40;;12589:6;;;;;;;;;;;12568:40;;;;;;;;;;;;12636:1;12619:6;;:19;;;;;;;;;;;;;;;;;;12498:148::o:0;23186:149::-;12421:12;:10;:12::i;:::-;12411:22;;:6;;;;;;;;;;;:22;;;12403:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23323:4:::1;23281:31;:39;23313:6;23281:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;23186:149:::0;;:::o;12284:79::-;12322:7;12349:6;;;;;;;;;;;12342:13;;12284:79;:::o;19316:24::-;;;;;;;;;;;;;:::o;14333:104::-;14389:13;14422:7;14415:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14333:104;:::o;22836:342::-;12421:12;:10;:12::i;:::-;12411:22;;:6;;;;;;;;;;;:22;;;12403:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23016:4:::1;23011:1;22995:13;:11;:13::i;:::-;:17;;;;:::i;:::-;22994:26;;;;:::i;:::-;22980:9;:41;;22972:50;;;::::0;::::1;;23083:4;23078:1;23062:13;:11;:13::i;:::-;:17;;;;:::i;:::-;23061:26;;;;:::i;:::-;23041:15;:47;;23033:56;;;::::0;::::1;;23112:15;23100:9;:27;;;;23161:9;23138:20;:32;;;;22836:342:::0;;:::o;16129:505::-;16249:4;16271:13;16287:12;:10;:12::i;:::-;16271:28;;16310:24;16337:25;16347:5;16354:7;16337:9;:25::i;:::-;16310:52;;16415:15;16395:16;:35;;16373:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;16531:60;16540:5;16547:7;16575:15;16556:16;:34;16531:8;:60::i;:::-;16622:4;16615:11;;;;16129:505;;;;:::o;14847:234::-;14962:4;14984:13;15000:12;:10;:12::i;:::-;14984:28;;15023;15033:5;15040:2;15044:6;15023:9;:28::i;:::-;15069:4;15062:11;;;14847:234;;;;:::o;19501:33::-;;;;;;;;;;;;;:::o;24051:132::-;12421:12;:10;:12::i;:::-;12411:22;;:6;;;;;;;;;;;:22;;;12403:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24167:8:::1;24136:19;:28;24156:7;24136:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;24051:132:::0;;:::o;22223:144::-;12421:12;:10;:12::i;:::-;12411:22;;:6;;;;;;;;;;;:22;;;12403:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22285:13:::1;;;;;;;;;;;22284:14;22276:23;;;::::0;::::1;;22326:4;22310:13;;:20;;;;;;;;;;;;;;;;;;22355:4;22341:11;;:18;;;;;;;;;;;;;;;;;;22223:144::o:0;19652:39::-;;;;;;;;;;;;;:::o;19386:35::-;;;;:::o;24578:242::-;12421:12;:10;:12::i;:::-;12411:22;;:6;;;;;;;;;;;:22;;;12403:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24695:1:::1;24663:3;24656:21;;;24686:4;24656:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:40;24648:49;;;::::0;::::1;;24708:14;24732:3;24725:21;;;24755:4;24725:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24708:53;;24779:3;24772:20;;;24793:10;24805:6;24772:40;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24637:183;24578:242:::0;:::o;22518:310::-;22626:4;12421:12;:10;:12::i;:::-;12411:22;;:6;;;;;;;;;;;:22;;;12403:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22691:6:::1;22686:1;22670:13;:11;:13::i;:::-;:17;;;;:::i;:::-;22669:28;;;;:::i;:::-;22656:9;:41;;22648:50;;;::::0;::::1;;22752:4;22747:1;22731:13;:11;:13::i;:::-;:17;;;;:::i;:::-;22730:26;;;;:::i;:::-;22717:9;:39;;22709:48;;;::::0;::::1;;22789:9;22768:18;:30;;;;22816:4;22809:11;;22518:310:::0;;;:::o;19347:30::-;;;;;;;;;;;;;:::o;19704:27::-;;;;:::o;15089:201::-;15223:7;15255:11;:18;15267:5;15255:18;;;;;;;;;;;;;;;:27;15274:7;15255:27;;;;;;;;;;;;;;;;15248:34;;15089:201;;;;:::o;19428:33::-;;;;:::o;22375:135::-;22435:4;12421:12;:10;:12::i;:::-;12411:22;;:6;;;;;;;;;;;:22;;;12403:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22475:5:::1;22452:20;;:28;;;;;;;;;;;;;;;;;;22498:4;22491:11;;22375:135:::0;:::o;12654:244::-;12421:12;:10;:12::i;:::-;12411:22;;:6;;;;;;;;;;;:22;;;12403:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12763:1:::1;12743:22;;:8;:22;;::::0;12735:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;12853:8;12824:38;;12845:6;;;;;;;;;;;12824:38;;;;;;;;;;;;12882:8;12873:6;;:17;;;;;;;;;;;;;;;;;;12654:244:::0;:::o;24387:183::-;12421:12;:10;:12::i;:::-;12411:22;;:6;;;;;;;;;;;:22;;;12403:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24443:12:::1;24488:10;24480:24;;24512:21;24480:82;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24466:96;;;;;24432:138;24387:183::o:0;19468:24::-;;;;:::o;11826:98::-;11879:7;11906:10;11899:17;;11826:98;:::o;17570:220::-;17728:6;17698:11;:18;17710:5;17698:18;;;;;;;;;;;;;;;:27;17717:7;17698:27;;;;;;;;;;;;;;;:36;;;;17766:7;17750:32;;17759:5;17750:32;;;17775:6;17750:32;;;;;;:::i;:::-;;;;;;;;17570:220;;;:::o;17798:420::-;17933:24;17960:25;17970:5;17977:7;17960:9;:25::i;:::-;17933:52;;18020:17;18000:16;:37;17996:215;;18082:6;18062:16;:26;;18054:35;;;;;;18133:51;18142:5;18149:7;18177:6;18158:16;:25;18133:8;:51::i;:::-;17996:215;17922:296;17798:420;;;:::o;25100:3458::-;25248:1;25232:18;;:4;:18;;;25224:27;;;;;;25284:1;25270:16;;:2;:16;;;25262:25;;;;;;25314:1;25304:6;:11;25300:93;;25332:28;25348:4;25354:2;25358:1;25332:15;:28::i;:::-;25375:7;;25300:93;25431:7;:5;:7::i;:::-;25423:15;;:4;:15;;;;:45;;;;;25461:7;:5;:7::i;:::-;25455:13;;:2;:13;;;;25423:45;:78;;;;;25499:1;25485:16;;:2;:16;;;;25423:78;:112;;;;;19270:6;25518:17;;:2;:17;;;;25423:112;:138;;;;;25553:8;;;;;;;;;;;25552:9;25423:138;25405:1601;;;25593:13;;;;;;;;;;;25588:116;;25635:19;:25;25655:4;25635:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;25664:19;:23;25684:2;25664:23;;;;;;;;;;;;;;;;;;;;;;;;;25635:52;25627:61;;;;;;25588:116;25724:20;;;;;;;;;;;25720:589;;;25797:7;:5;:7::i;:::-;25791:13;;:2;:13;;;;:68;;;;;25843:15;25829:30;;:2;:30;;;;25791:68;:121;;;;;25898:13;;;;;;;;;;;25884:28;;:2;:28;;;;25791:121;25765:529;;;26060:12;25989:28;:39;26018:9;25989:39;;;;;;;;;;;;;;;;:83;25955:242;;;;;;;;;;;;:::i;:::-;;;;;;;;;26262:12;26220:28;:39;26249:9;26220:39;;;;;;;;;;;;;;;:54;;;;25765:529;25720:589;26383:25;:31;26409:4;26383:31;;;;;;;;;;;;;;;;;;;;;;;;;:88;;;;;26436:31;:35;26468:2;26436:35;;;;;;;;;;;;;;;;;;;;;;;;;26435:36;26383:88;26361:634;;;26524:20;;26514:6;:30;;26506:39;;;;;;26598:9;;26581:13;26591:2;26581:9;:13::i;:::-;26572:6;:22;;;;:::i;:::-;:35;;26564:44;;;;;;26361:634;;;26690:25;:29;26716:2;26690:29;;;;;;;;;;;;;;;;;;;;;;;;;:88;;;;;26741:31;:37;26773:4;26741:37;;;;;;;;;;;;;;;;;;;;;;;;;26740:38;26690:88;26668:327;;;26831:20;;26821:6;:30;;26813:39;;;;;;26668:327;;;26879:31;:35;26911:2;26879:35;;;;;;;;;;;;;;;;;;;;;;;;;26874:121;;26969:9;;26952:13;26962:2;26952:9;:13::i;:::-;26943:6;:22;;;;:::i;:::-;:35;;26935:44;;;;;;26874:121;26668:327;26361:634;25405:1601;27018:28;27049:24;27067:4;27049:9;:24::i;:::-;27018:55;;27086:12;27125:18;;27101:20;:42;;27086:57;;27174:7;:35;;;;;27198:11;;;;;;;;;;;27174:35;:61;;;;;27227:8;;;;;;;;;;;27226:9;27174:61;:110;;;;;27253:25;:31;27279:4;27253:31;;;;;;;;;;;;;;;;;;;;;;;;;27252:32;27174:110;:153;;;;;27302:19;:25;27322:4;27302:25;;;;;;;;;;;;;;;;;;;;;;;;;27301:26;27174:153;:194;;;;;27345:19;:23;27365:2;27345:23;;;;;;;;;;;;;;;;;;;;;;;;;27344:24;27174:194;27156:326;;;27406:4;27395:8;;:15;;;;;;;;;;;;;;;;;;27427:10;:8;:10::i;:::-;27465:5;27454:8;;:16;;;;;;;;;;;;;;;;;;27156:326;27494:12;27510:8;;;;;;;;;;;27509:9;27494:24;;27535:19;:25;27555:4;27535:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;27564:19;:23;27584:2;27564:23;;;;;;;;;;;;;;;;;;;;;;;;;27535:52;27531:100;;;27614:5;27604:15;;27531:100;27643:12;27676:7;27672:795;;;27728:25;:29;27754:2;27728:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;27777:1;27761:13;;:17;27728:50;27724:594;;;27831:3;27815:13;;27806:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;27799:35;;27903:13;;27883:16;;27876:4;:23;;;;:::i;:::-;27875:41;;;;:::i;:::-;27853:18;;:63;;;;;;;:::i;:::-;;;;;;;;27973:13;;27959:10;;27952:4;:17;;;;:::i;:::-;27951:35;;;;:::i;:::-;27935:12;;:51;;;;;;;:::i;:::-;;;;;;;;27724:594;;;28048:25;:31;28074:4;28048:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;28098:1;28083:12;;:16;28048:51;28044:274;;;28151:3;28136:12;;28127:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;28120:34;;28222:12;;28203:15;;28196:4;:22;;;;:::i;:::-;28195:39;;;;:::i;:::-;28173:18;;:61;;;;;;;:::i;:::-;;;;;;;;28290:12;;28277:9;;28270:4;:16;;;;:::i;:::-;28269:33;;;;:::i;:::-;28253:12;;:49;;;;;;;:::i;:::-;;;;;;;;28044:274;27724:594;28345:1;28338:4;:8;28334:91;;;28367:42;28383:4;28397;28404;28367:15;:42::i;:::-;28334:91;28451:4;28441:14;;;;;:::i;:::-;;;27672:795;28479:33;28495:4;28501:2;28505:6;28479:15;:33::i;:::-;28539:11;;28523:13;:27;;;;25213:3345;;;;25100:3458;;;;:::o;17333:229::-;17425:6;17406:9;:15;17416:4;17406:15;;;;;;;;;;;;;;;;:25;;;;;;;:::i;:::-;;;;;;;;17485:6;17469:12;;:22;;;;;;;;;;;17543:1;17520:34;;17529:4;17520:34;;;17547:6;17520:34;;;;;;:::i;:::-;;;;;;;;17333:229;;:::o;16642:452::-;16789:1;16773:18;;:4;:18;;;16765:27;;;;;;16825:1;16811:16;;:2;:16;;;16803:25;;;;;;16841:19;16863:9;:15;16873:4;16863:15;;;;;;;;;;;;;;;;16841:37;;16912:6;16897:11;:21;;16889:30;;;;;;16987:6;16973:11;:20;16955:9;:15;16965:4;16955:15;;;;;;;;;;;;;;;:38;;;;17025:6;17008:9;:13;17018:2;17008:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;17075:2;17060:26;;17069:4;17060:26;;;17079:6;17060:26;;;;;;:::i;:::-;;;;;;;;16754:340;16642:452;;;:::o;29427:1414::-;29466:23;29492:24;29510:4;29492:9;:24::i;:::-;29466:50;;29527:25;29589:12;;29555:18;;:46;;;;:::i;:::-;29527:74;;29612:12;29660:1;29641:15;:20;:46;;;;29686:1;29665:17;:22;29641:46;29637:85;;;29704:7;;;;;29637:85;29777:2;29756:18;;:23;;;;:::i;:::-;29738:15;:41;29734:115;;;29835:2;29814:18;;:23;;;;:::i;:::-;29796:41;;29734:115;29861:23;29974:1;29941:17;29906:18;;29888:15;:36;;;;:::i;:::-;29887:71;;;;:::i;:::-;:88;;;;:::i;:::-;29861:114;;29986:26;30033:15;30015;:33;;;;:::i;:::-;29986:62;;30061:25;30089:21;30061:49;;30123:36;30140:18;30123:16;:36::i;:::-;30172:18;30217:17;30193:21;:41;;;;:::i;:::-;30172:62;;30247:17;30295;30280:12;;30267:10;:25;;;;:::i;:::-;:45;;;;:::i;:::-;30247:65;;30325:23;30364:9;30351:10;:22;;;;:::i;:::-;30325:48;;30407:1;30386:18;:22;;;;30434:1;30419:12;:16;;;;30470:1;30452:15;:19;:42;;;;;30493:1;30475:15;:19;30452:42;30448:278;;;30511:46;30524:15;30541;30511:12;:46::i;:::-;30577:137;30610:18;30647:15;30681:18;;30577:137;;;;;;;;:::i;:::-;;;;;;;;30448:278;30760:9;;;;;;;;;;;30752:23;;30797:21;30752:81;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30738:95;;;;;29455:1386;;;;;;;;;29427:1414;:::o;28566:475::-;28632:21;28670:1;28656:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28632:40;;28701:4;28683;28688:1;28683:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;28727:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28717:4;28722:1;28717:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;28762:62;28779:4;28794:15;28812:11;28762:8;:62::i;:::-;28837:15;:66;;;28918:11;28944:1;28960:4;28987;29007:15;28837:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28621:420;28566:475;:::o;29049:370::-;29130:62;29147:4;29162:15;29180:11;29130:8;:62::i;:::-;29205:15;:31;;;29244:9;29277:4;29297:11;29323:1;29339;29355:15;;;;;;;;;;;29385;29205:206;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;29049:370;;:::o;88:117:1:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:474::-;758:6;766;815:2;803:9;794:7;790:23;786:32;783:119;;;821:79;;:::i;:::-;783:119;941:1;966:53;1011:7;1002:6;991:9;987:22;966:53;:::i;:::-;956:63;;912:117;1068:2;1094:53;1139:7;1130:6;1119:9;1115:22;1094:53;:::i;:::-;1084:63;;1039:118;690:474;;;;;:::o;1170:99::-;1222:6;1256:5;1250:12;1240:22;;1170:99;;;:::o;1275:169::-;1359:11;1393:6;1388:3;1381:19;1433:4;1428:3;1424:14;1409:29;;1275:169;;;;:::o;1450:246::-;1531:1;1541:113;1555:6;1552:1;1549:13;1541:113;;;1640:1;1635:3;1631:11;1625:18;1621:1;1616:3;1612:11;1605:39;1577:2;1574:1;1570:10;1565:15;;1541:113;;;1688:1;1679:6;1674:3;1670:16;1663:27;1512:184;1450:246;;;:::o;1702:102::-;1743:6;1794:2;1790:7;1785:2;1778:5;1774:14;1770:28;1760:38;;1702:102;;;:::o;1810:377::-;1898:3;1926:39;1959:5;1926:39;:::i;:::-;1981:71;2045:6;2040:3;1981:71;:::i;:::-;1974:78;;2061:65;2119:6;2114:3;2107:4;2100:5;2096:16;2061:65;:::i;:::-;2151:29;2173:6;2151:29;:::i;:::-;2146:3;2142:39;2135:46;;1902:285;1810:377;;;;:::o;2193:313::-;2306:4;2344:2;2333:9;2329:18;2321:26;;2393:9;2387:4;2383:20;2379:1;2368:9;2364:17;2357:47;2421:78;2494:4;2485:6;2421:78;:::i;:::-;2413:86;;2193:313;;;;:::o;2512:126::-;2549:7;2589:42;2582:5;2578:54;2567:65;;2512:126;;;:::o;2644:96::-;2681:7;2710:24;2728:5;2710:24;:::i;:::-;2699:35;;2644:96;;;:::o;2746:122::-;2819:24;2837:5;2819:24;:::i;:::-;2812:5;2809:35;2799:63;;2858:1;2855;2848:12;2799:63;2746:122;:::o;2874:139::-;2920:5;2958:6;2945:20;2936:29;;2974:33;3001:5;2974:33;:::i;:::-;2874:139;;;;:::o;3019:474::-;3087:6;3095;3144:2;3132:9;3123:7;3119:23;3115:32;3112:119;;;3150:79;;:::i;:::-;3112:119;3270:1;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3241:117;3397:2;3423:53;3468:7;3459:6;3448:9;3444:22;3423:53;:::i;:::-;3413:63;;3368:118;3019:474;;;;;:::o;3499:90::-;3533:7;3576:5;3569:13;3562:21;3551:32;;3499:90;;;:::o;3595:109::-;3676:21;3691:5;3676:21;:::i;:::-;3671:3;3664:34;3595:109;;:::o;3710:210::-;3797:4;3835:2;3824:9;3820:18;3812:26;;3848:65;3910:1;3899:9;3895:17;3886:6;3848:65;:::i;:::-;3710:210;;;;:::o;3926:60::-;3954:3;3975:5;3968:12;;3926:60;;;:::o;3992:142::-;4042:9;4075:53;4093:34;4102:24;4120:5;4102:24;:::i;:::-;4093:34;:::i;:::-;4075:53;:::i;:::-;4062:66;;3992:142;;;:::o;4140:126::-;4190:9;4223:37;4254:5;4223:37;:::i;:::-;4210:50;;4140:126;;;:::o;4272:152::-;4348:9;4381:37;4412:5;4381:37;:::i;:::-;4368:50;;4272:152;;;:::o;4430:183::-;4543:63;4600:5;4543:63;:::i;:::-;4538:3;4531:76;4430:183;;:::o;4619:274::-;4738:4;4776:2;4765:9;4761:18;4753:26;;4789:97;4883:1;4872:9;4868:17;4859:6;4789:97;:::i;:::-;4619:274;;;;:::o;4899:118::-;4986:24;5004:5;4986:24;:::i;:::-;4981:3;4974:37;4899:118;;:::o;5023:222::-;5116:4;5154:2;5143:9;5139:18;5131:26;;5167:71;5235:1;5224:9;5220:17;5211:6;5167:71;:::i;:::-;5023:222;;;;:::o;5251:329::-;5310:6;5359:2;5347:9;5338:7;5334:23;5330:32;5327:119;;;5365:79;;:::i;:::-;5327:119;5485:1;5510:53;5555:7;5546:6;5535:9;5531:22;5510:53;:::i;:::-;5500:63;;5456:117;5251:329;;;;:::o;5586:619::-;5663:6;5671;5679;5728:2;5716:9;5707:7;5703:23;5699:32;5696:119;;;5734:79;;:::i;:::-;5696:119;5854:1;5879:53;5924:7;5915:6;5904:9;5900:22;5879:53;:::i;:::-;5869:63;;5825:117;5981:2;6007:53;6052:7;6043:6;6032:9;6028:22;6007:53;:::i;:::-;5997:63;;5952:118;6109:2;6135:53;6180:7;6171:6;6160:9;6156:22;6135:53;:::i;:::-;6125:63;;6080:118;5586:619;;;;;:::o;6211:118::-;6298:24;6316:5;6298:24;:::i;:::-;6293:3;6286:37;6211:118;;:::o;6335:222::-;6428:4;6466:2;6455:9;6451:18;6443:26;;6479:71;6547:1;6536:9;6532:17;6523:6;6479:71;:::i;:::-;6335:222;;;;:::o;6563:86::-;6598:7;6638:4;6631:5;6627:16;6616:27;;6563:86;;;:::o;6655:112::-;6738:22;6754:5;6738:22;:::i;:::-;6733:3;6726:35;6655:112;;:::o;6773:214::-;6862:4;6900:2;6889:9;6885:18;6877:26;;6913:67;6977:1;6966:9;6962:17;6953:6;6913:67;:::i;:::-;6773:214;;;;:::o;6993:329::-;7052:6;7101:2;7089:9;7080:7;7076:23;7072:32;7069:119;;;7107:79;;:::i;:::-;7069:119;7227:1;7252:53;7297:7;7288:6;7277:9;7273:22;7252:53;:::i;:::-;7242:63;;7198:117;6993:329;;;;:::o;7328:116::-;7398:21;7413:5;7398:21;:::i;:::-;7391:5;7388:32;7378:60;;7434:1;7431;7424:12;7378:60;7328:116;:::o;7450:133::-;7493:5;7531:6;7518:20;7509:29;;7547:30;7571:5;7547:30;:::i;:::-;7450:133;;;;:::o;7589:468::-;7654:6;7662;7711:2;7699:9;7690:7;7686:23;7682:32;7679:119;;;7717:79;;:::i;:::-;7679:119;7837:1;7862:53;7907:7;7898:6;7887:9;7883:22;7862:53;:::i;:::-;7852:63;;7808:117;7964:2;7990:50;8032:7;8023:6;8012:9;8008:22;7990:50;:::i;:::-;7980:60;;7935:115;7589:468;;;;;:::o;8063:474::-;8131:6;8139;8188:2;8176:9;8167:7;8163:23;8159:32;8156:119;;;8194:79;;:::i;:::-;8156:119;8314:1;8339:53;8384:7;8375:6;8364:9;8360:22;8339:53;:::i;:::-;8329:63;;8285:117;8441:2;8467:53;8512:7;8503:6;8492:9;8488:22;8467:53;:::i;:::-;8457:63;;8412:118;8063:474;;;;;:::o;8543:182::-;8683:34;8679:1;8671:6;8667:14;8660:58;8543:182;:::o;8731:366::-;8873:3;8894:67;8958:2;8953:3;8894:67;:::i;:::-;8887:74;;8970:93;9059:3;8970:93;:::i;:::-;9088:2;9083:3;9079:12;9072:19;;8731:366;;;:::o;9103:419::-;9269:4;9307:2;9296:9;9292:18;9284:26;;9356:9;9350:4;9346:20;9342:1;9331:9;9327:17;9320:47;9384:131;9510:4;9384:131;:::i;:::-;9376:139;;9103:419;;;:::o;9528:180::-;9576:77;9573:1;9566:88;9673:4;9670:1;9663:15;9697:4;9694:1;9687:15;9714:191;9754:3;9773:20;9791:1;9773:20;:::i;:::-;9768:25;;9807:20;9825:1;9807:20;:::i;:::-;9802:25;;9850:1;9847;9843:9;9836:16;;9871:3;9868:1;9865:10;9862:36;;;9878:18;;:::i;:::-;9862:36;9714:191;;;;:::o;9911:230::-;10051:34;10047:1;10039:6;10035:14;10028:58;10120:13;10115:2;10107:6;10103:15;10096:38;9911:230;:::o;10147:366::-;10289:3;10310:67;10374:2;10369:3;10310:67;:::i;:::-;10303:74;;10386:93;10475:3;10386:93;:::i;:::-;10504:2;10499:3;10495:12;10488:19;;10147:366;;;:::o;10519:419::-;10685:4;10723:2;10712:9;10708:18;10700:26;;10772:9;10766:4;10762:20;10758:1;10747:9;10743:17;10736:47;10800:131;10926:4;10800:131;:::i;:::-;10792:139;;10519:419;;;:::o;10944:180::-;10992:77;10989:1;10982:88;11089:4;11086:1;11079:15;11113:4;11110:1;11103:15;11130:320;11174:6;11211:1;11205:4;11201:12;11191:22;;11258:1;11252:4;11248:12;11279:18;11269:81;;11335:4;11327:6;11323:17;11313:27;;11269:81;11397:2;11389:6;11386:14;11366:18;11363:38;11360:84;;11416:18;;:::i;:::-;11360:84;11181:269;11130:320;;;:::o;11456:228::-;11596:34;11592:1;11584:6;11580:14;11573:58;11665:11;11660:2;11652:6;11648:15;11641:36;11456:228;:::o;11690:366::-;11832:3;11853:67;11917:2;11912:3;11853:67;:::i;:::-;11846:74;;11929:93;12018:3;11929:93;:::i;:::-;12047:2;12042:3;12038:12;12031:19;;11690:366;;;:::o;12062:419::-;12228:4;12266:2;12255:9;12251:18;12243:26;;12315:9;12309:4;12305:20;12301:1;12290:9;12286:17;12279:47;12343:131;12469:4;12343:131;:::i;:::-;12335:139;;12062:419;;;:::o;12487:410::-;12527:7;12550:20;12568:1;12550:20;:::i;:::-;12545:25;;12584:20;12602:1;12584:20;:::i;:::-;12579:25;;12639:1;12636;12632:9;12661:30;12679:11;12661:30;:::i;:::-;12650:41;;12840:1;12831:7;12827:15;12824:1;12821:22;12801:1;12794:9;12774:83;12751:139;;12870:18;;:::i;:::-;12751:139;12535:362;12487:410;;;;:::o;12903:180::-;12951:77;12948:1;12941:88;13048:4;13045:1;13038:15;13072:4;13069:1;13062:15;13089:185;13129:1;13146:20;13164:1;13146:20;:::i;:::-;13141:25;;13180:20;13198:1;13180:20;:::i;:::-;13175:25;;13219:1;13209:35;;13224:18;;:::i;:::-;13209:35;13266:1;13263;13259:9;13254:14;;13089:185;;;;:::o;13280:224::-;13420:34;13416:1;13408:6;13404:14;13397:58;13489:7;13484:2;13476:6;13472:15;13465:32;13280:224;:::o;13510:366::-;13652:3;13673:67;13737:2;13732:3;13673:67;:::i;:::-;13666:74;;13749:93;13838:3;13749:93;:::i;:::-;13867:2;13862:3;13858:12;13851:19;;13510:366;;;:::o;13882:419::-;14048:4;14086:2;14075:9;14071:18;14063:26;;14135:9;14129:4;14125:20;14121:1;14110:9;14106:17;14099:47;14163:131;14289:4;14163:131;:::i;:::-;14155:139;;13882:419;;;:::o;14307:143::-;14364:5;14395:6;14389:13;14380:22;;14411:33;14438:5;14411:33;:::i;:::-;14307:143;;;;:::o;14456:351::-;14526:6;14575:2;14563:9;14554:7;14550:23;14546:32;14543:119;;;14581:79;;:::i;:::-;14543:119;14701:1;14726:64;14782:7;14773:6;14762:9;14758:22;14726:64;:::i;:::-;14716:74;;14672:128;14456:351;;;;:::o;14813:332::-;14934:4;14972:2;14961:9;14957:18;14949:26;;14985:71;15053:1;15042:9;15038:17;15029:6;14985:71;:::i;:::-;15066:72;15134:2;15123:9;15119:18;15110:6;15066:72;:::i;:::-;14813:332;;;;;:::o;15151:137::-;15205:5;15236:6;15230:13;15221:22;;15252:30;15276:5;15252:30;:::i;:::-;15151:137;;;;:::o;15294:345::-;15361:6;15410:2;15398:9;15389:7;15385:23;15381:32;15378:119;;;15416:79;;:::i;:::-;15378:119;15536:1;15561:61;15614:7;15605:6;15594:9;15590:22;15561:61;:::i;:::-;15551:71;;15507:125;15294:345;;;;:::o;15645:225::-;15785:34;15781:1;15773:6;15769:14;15762:58;15854:8;15849:2;15841:6;15837:15;15830:33;15645:225;:::o;15876:366::-;16018:3;16039:67;16103:2;16098:3;16039:67;:::i;:::-;16032:74;;16115:93;16204:3;16115:93;:::i;:::-;16233:2;16228:3;16224:12;16217:19;;15876:366;;;:::o;16248:419::-;16414:4;16452:2;16441:9;16437:18;16429:26;;16501:9;16495:4;16491:20;16487:1;16476:9;16472:17;16465:47;16529:131;16655:4;16529:131;:::i;:::-;16521:139;;16248:419;;;:::o;16673:147::-;16774:11;16811:3;16796:18;;16673:147;;;;:::o;16826:114::-;;:::o;16946:398::-;17105:3;17126:83;17207:1;17202:3;17126:83;:::i;:::-;17119:90;;17218:93;17307:3;17218:93;:::i;:::-;17336:1;17331:3;17327:11;17320:18;;16946:398;;;:::o;17350:379::-;17534:3;17556:147;17699:3;17556:147;:::i;:::-;17549:154;;17720:3;17713:10;;17350:379;;;:::o;17735:297::-;17875:34;17871:1;17863:6;17859:14;17852:58;17944:34;17939:2;17931:6;17927:15;17920:59;18013:11;18008:2;18000:6;17996:15;17989:36;17735:297;:::o;18038:366::-;18180:3;18201:67;18265:2;18260:3;18201:67;:::i;:::-;18194:74;;18277:93;18366:3;18277:93;:::i;:::-;18395:2;18390:3;18386:12;18379:19;;18038:366;;;:::o;18410:419::-;18576:4;18614:2;18603:9;18599:18;18591:26;;18663:9;18657:4;18653:20;18649:1;18638:9;18634:17;18627:47;18691:131;18817:4;18691:131;:::i;:::-;18683:139;;18410:419;;;:::o;18835:194::-;18875:4;18895:20;18913:1;18895:20;:::i;:::-;18890:25;;18929:20;18947:1;18929:20;:::i;:::-;18924:25;;18973:1;18970;18966:9;18958:17;;18997:1;18991:4;18988:11;18985:37;;;19002:18;;:::i;:::-;18985:37;18835:194;;;;:::o;19035:442::-;19184:4;19222:2;19211:9;19207:18;19199:26;;19235:71;19303:1;19292:9;19288:17;19279:6;19235:71;:::i;:::-;19316:72;19384:2;19373:9;19369:18;19360:6;19316:72;:::i;:::-;19398;19466:2;19455:9;19451:18;19442:6;19398:72;:::i;:::-;19035:442;;;;;;:::o;19483:180::-;19531:77;19528:1;19521:88;19628:4;19625:1;19618:15;19652:4;19649:1;19642:15;19669:180;19717:77;19714:1;19707:88;19814:4;19811:1;19804:15;19838:4;19835:1;19828:15;19855:143;19912:5;19943:6;19937:13;19928:22;;19959:33;19986:5;19959:33;:::i;:::-;19855:143;;;;:::o;20004:351::-;20074:6;20123:2;20111:9;20102:7;20098:23;20094:32;20091:119;;;20129:79;;:::i;:::-;20091:119;20249:1;20274:64;20330:7;20321:6;20310:9;20306:22;20274:64;:::i;:::-;20264:74;;20220:128;20004:351;;;;:::o;20361:85::-;20406:7;20435:5;20424:16;;20361:85;;;:::o;20452:158::-;20510:9;20543:61;20561:42;20570:32;20596:5;20570:32;:::i;:::-;20561:42;:::i;:::-;20543:61;:::i;:::-;20530:74;;20452:158;;;:::o;20616:147::-;20711:45;20750:5;20711:45;:::i;:::-;20706:3;20699:58;20616:147;;:::o;20769:114::-;20836:6;20870:5;20864:12;20854:22;;20769:114;;;:::o;20889:184::-;20988:11;21022:6;21017:3;21010:19;21062:4;21057:3;21053:14;21038:29;;20889:184;;;;:::o;21079:132::-;21146:4;21169:3;21161:11;;21199:4;21194:3;21190:14;21182:22;;21079:132;;;:::o;21217:108::-;21294:24;21312:5;21294:24;:::i;:::-;21289:3;21282:37;21217:108;;:::o;21331:179::-;21400:10;21421:46;21463:3;21455:6;21421:46;:::i;:::-;21499:4;21494:3;21490:14;21476:28;;21331:179;;;;:::o;21516:113::-;21586:4;21618;21613:3;21609:14;21601:22;;21516:113;;;:::o;21665:732::-;21784:3;21813:54;21861:5;21813:54;:::i;:::-;21883:86;21962:6;21957:3;21883:86;:::i;:::-;21876:93;;21993:56;22043:5;21993:56;:::i;:::-;22072:7;22103:1;22088:284;22113:6;22110:1;22107:13;22088:284;;;22189:6;22183:13;22216:63;22275:3;22260:13;22216:63;:::i;:::-;22209:70;;22302:60;22355:6;22302:60;:::i;:::-;22292:70;;22148:224;22135:1;22132;22128:9;22123:14;;22088:284;;;22092:14;22388:3;22381:10;;21789:608;;;21665:732;;;;:::o;22403:831::-;22666:4;22704:3;22693:9;22689:19;22681:27;;22718:71;22786:1;22775:9;22771:17;22762:6;22718:71;:::i;:::-;22799:80;22875:2;22864:9;22860:18;22851:6;22799:80;:::i;:::-;22926:9;22920:4;22916:20;22911:2;22900:9;22896:18;22889:48;22954:108;23057:4;23048:6;22954:108;:::i;:::-;22946:116;;23072:72;23140:2;23129:9;23125:18;23116:6;23072:72;:::i;:::-;23154:73;23222:3;23211:9;23207:19;23198:6;23154:73;:::i;:::-;22403:831;;;;;;;;:::o;23240:807::-;23489:4;23527:3;23516:9;23512:19;23504:27;;23541:71;23609:1;23598:9;23594:17;23585:6;23541:71;:::i;:::-;23622:72;23690:2;23679:9;23675:18;23666:6;23622:72;:::i;:::-;23704:80;23780:2;23769:9;23765:18;23756:6;23704:80;:::i;:::-;23794;23870:2;23859:9;23855:18;23846:6;23794:80;:::i;:::-;23884:73;23952:3;23941:9;23937:19;23928:6;23884:73;:::i;:::-;23967;24035:3;24024:9;24020:19;24011:6;23967:73;:::i;:::-;23240:807;;;;;;;;;:::o;24053:663::-;24141:6;24149;24157;24206:2;24194:9;24185:7;24181:23;24177:32;24174:119;;;24212:79;;:::i;:::-;24174:119;24332:1;24357:64;24413:7;24404:6;24393:9;24389:22;24357:64;:::i;:::-;24347:74;;24303:128;24470:2;24496:64;24552:7;24543:6;24532:9;24528:22;24496:64;:::i;:::-;24486:74;;24441:129;24609:2;24635:64;24691:7;24682:6;24671:9;24667:22;24635:64;:::i;:::-;24625:74;;24580:129;24053:663;;;;;:::o

Swarm Source

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