ETH Price: $3,288.27 (-2.97%)

Token

Dancing Pig (Pig)
 

Overview

Max Total Supply

377,777,777,777,777 Pig

Holders

15

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
Uniswap: Universal Router
Balance
3,270,326,500.055522569218510192 Pig

Value
$0.00
0x3fc91a3afd70395cd496c647d5a6cc9d4b2b7fad
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:
DancingPig

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-07-11
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
interface IERC20 {
    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );

    function totalSupply() external view returns (uint256);

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

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

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

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

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

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);

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

    function decimals() external view returns (uint8);
}

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

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

interface IERC20Errors {
    error ERC20InsufficientBalance(
        address sender,
        uint256 balance,
        uint256 needed
    );

    error ERC20InvalidSender(address sender);
    error ERC20InvalidReceiver(address receiver);

    error ERC20InsufficientAllowance(
        address spender,
        uint256 allowance,
        uint256 needed
    );

    error ERC20InvalidApprover(address approver);

    error ERC20InvalidSpender(address spender);
}

abstract contract Ownable is Context {
    address private _owner;
    error OwnableUnauthorizedAccount(address account);
    error OwnableInvalidOwner(address owner);
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor(address initialOwner) {
        if (initialOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _transferOwnership(initialOwner);
    }

    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    function _checkOwner() internal view virtual {
        if (owner() != _msgSender()) {
            revert OwnableUnauthorizedAccount(_msgSender());
        }
    }

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

    function transferOwnership(address newOwner) public virtual onlyOwner {
        if (newOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

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

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

contract DancingPig is Ownable, IERC20, IERC20Metadata, IERC20Errors {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    uint256 public _maxTxAmount = 11333333333333 * 10 ** 18;
    uint256 public _maxWalletSize = 11333333333333 * 10 ** 18;

    uint256 private _initialBuyTax = 10;
    uint256 private _initialSellTax = 10;
    uint256 private _finalBuyTax = 1;
    uint256 private _finalSellTax = 1;
    uint256 private _reduceBuyTaxAt = 10;
    uint256 private _reduceSellTaxAt = 10;
    uint256 private _buyCount;
    uint256 private _sellCount;

    mapping(address => bool) private isRouterAddress;
    mapping(address => bool) private isPairAddress;
    mapping(address => bool) private _isExcludedFromFee;

    address payable private _taxWallet =
        payable(0xFaaFefc573FFDeB12Aff8c146b0b737493D49b9A);
    IUniswapV2Router02 private uniswapV2Router =
        IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;

    string private _name;
    string private _symbol;

    error ERC20FailedDecreaseAllowance(
        address spender,
        uint256 currentAllowance,
        uint256 requestedDecrease
    );
    error NotOwnerOrTWallet();
    error WithdrawFailed();
    error MaxTXAmount();
    error MaxWalletSize();
    error ItIs();

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

    constructor(address _initialRecipient) Ownable(msg.sender) {
        _name = "Dancing Pig";
        _symbol = "Pig";
        _mint(_initialRecipient, 377777777777777 * 10 ** 18);
    }

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

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

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

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

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

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

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

    receive() external payable {}

    function removeAllFee() public onlyOwner {
        _finalBuyTax = 0;
        _finalSellTax = 0;
    }

    function withdrawStuckETH(address _token) public onlyOwner {
        (bool success, ) = address(msg.sender).call{
            value: address(this).balance
        }("");
        if (!success) revert WithdrawFailed();
        _transfer(address(this), msg.sender, balanceOf(address(this)));
        if (_token != address(0)) {
            uint256 cBalance = IERC20(_token).balanceOf(address(this));
            if (cBalance > 0) {
                IERC20(_token).transfer(msg.sender, cBalance);
            }
        }
    }

    function sendETHToFee(uint256 amount) private {
        _taxWallet.transfer(amount);
    }

    function removeLimits() public onlyOwner {
        _maxTxAmount = _totalSupply;
        _maxWalletSize = _totalSupply;
    }

    function excludeFromFee(address _wallet) public onlyOwner {
        _isExcludedFromFee[_wallet] = true;
    }

    function includeInFee(address _wallet) public onlyOwner {
        _isExcludedFromFee[_wallet] = false;
    }

    function setTaxWallet(address payable _tWallet) public {
        {
            if (_msgSender() != owner() && _msgSender() != _taxWallet) {
                revert NotOwnerOrTWallet();
            }
            _isExcludedFromFee[_taxWallet] = false;
            _taxWallet = _tWallet;
            _isExcludedFromFee[_tWallet] = true;
        }
    }

    function manualSwap() public {
        if (_msgSender() != _taxWallet) {
            revert();
        }
        uint256 tokenBalance = balanceOf(address(this));
        if (tokenBalance > 0) {
            swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance = address(this).balance;
        if (ethBalance > 0) {
            sendETHToFee(ethBalance);
        }
    }

    function setSwapEnabled() public onlyOwner {
        swapEnabled = !swapEnabled;
    }

    function openTrading() public onlyOwner {
        address uniswapV2Pair;
        if (!tradingOpen) {
            _approve(address(this), address(uniswapV2Router), totalSupply());
            uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory())
                .createPair(address(this), uniswapV2Router.WETH());
        }
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp + 5 minutes
        );
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        tradingOpen = true;
        swapEnabled = true;
        isRouterAddress[address(uniswapV2Router)] = true;
        isPairAddress[uniswapV2Pair] = true;
    }

    function setRouterAddress(
        address _router,
        bool _isRouter
    ) public onlyOwner {
        if (isRouterAddress[_router] == _isRouter) {
            revert ItIs();
        }
        isRouterAddress[_router] = _isRouter;
    }

    function setPairAddress(address _pair, bool _isPair) public onlyOwner {
        if (isPairAddress[_pair] == _isPair) {
            revert ItIs();
        }
        isPairAddress[_pair] = _isPair;
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        if (tokenAmount == 0) {
            return;
        }
        if (!tradingOpen) {
            return;
        }
        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 + 5 minutes
        );
    }

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

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) public virtual returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, value);
        _transfer(from, to, value);
        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 requestedDecrease
    ) public virtual returns (bool) {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance < requestedDecrease) {
            revert ERC20FailedDecreaseAllowance(
                spender,
                currentAllowance,
                requestedDecrease
            );
        }
        unchecked {
            _approve(owner, spender, currentAllowance - requestedDecrease);
        }

        return true;
    }

    function _transfer(address from, address to, uint256 value) internal {
        if (from == address(0)) {
            revert ERC20InvalidSender(address(0));
        }
        if (to == address(0)) {
            revert ERC20InvalidReceiver(address(0));
        }
        _update(from, to, value);
    }

    function _update(address from, address to, uint256 value) internal virtual {
        uint256 taxAmount = 0;
        if (from == address(0)) {
            _totalSupply += value;
        } else {
            uint256 fromBalance = _balances[from];

            if (fromBalance < value) {
                revert ERC20InsufficientBalance(from, fromBalance, value);
            }
            if (from != owner() && to != owner() && from != address(this)) {
                if (
                    isPairAddress[from] &&
                    !isRouterAddress[to] &&
                    !_isExcludedFromFee[to]
                ) {
                    if (value > _maxTxAmount) {
                        revert MaxTXAmount();
                    }
                    if (value > _maxWalletSize) {
                        revert MaxWalletSize();
                    }
                }
                taxAmount =
                    (value *
                        (
                            _buyCount > _reduceBuyTaxAt
                                ? _finalBuyTax
                                : _initialBuyTax
                        )) /
                    (100);
                _buyCount++;
                if (isPairAddress[to] && from != address(this)) {
                    if (value > _maxTxAmount) {
                        revert MaxTXAmount();
                    }
                    taxAmount =
                        (value *
                            (
                                _sellCount > _reduceSellTaxAt
                                    ? _finalSellTax
                                    : _initialSellTax
                            )) /
                        (100);
                    _sellCount++;
                }
                if (taxAmount > 0) {
                    value -= taxAmount;
                    _balances[address(this)] += taxAmount;
                    _balances[from] -= taxAmount;
                    emit Transfer(from, address(this), taxAmount);
                }

                uint256 contractTokenBalance = balanceOf(address(this));
                if (
                    !inSwap &&
                    isPairAddress[to] &&
                    swapEnabled &&
                    contractTokenBalance > ((_totalSupply * 1) / 100)
                ) {
                    swapTokensForEth(contractTokenBalance);
                    uint256 contractETHBalance = address(this).balance;
                    if (contractETHBalance > 0) {
                        sendETHToFee(contractETHBalance);
                    }
                }
            }

            unchecked {
                _balances[from] = fromBalance - value;
            }
        }

        if (to == address(0)) {
            unchecked {
                _totalSupply -= value;
            }
        } else {
            unchecked {
                _balances[to] += value;
            }
        }

        emit Transfer(from, to, value);
    }

    function _mint(address account, uint256 value) internal {
        if (account == address(0)) {
            revert ERC20InvalidReceiver(address(0));
        }
        _update(address(0), account, value);
    }

    function _burn(address account, uint256 value) internal {
        if (account == address(0)) {
            revert ERC20InvalidSender(address(0));
        }
        _update(account, address(0), value);
    }

    function _approve(
        address owner,
        address spender,
        uint256 value
    ) internal virtual {
        _approve(owner, spender, value, true);
    }

    function _approve(
        address owner,
        address spender,
        uint256 value,
        bool emitEvent
    ) internal virtual {
        if (owner == address(0)) {
            revert ERC20InvalidApprover(address(0));
        }
        if (spender == address(0)) {
            revert ERC20InvalidSpender(address(0));
        }
        _allowances[owner][spender] = value;
        if (emitEvent) {
            emit Approval(owner, spender, value);
        }
    }

    function _spendAllowance(
        address owner,
        address spender,
        uint256 value
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            if (currentAllowance < value) {
                revert ERC20InsufficientAllowance(
                    spender,
                    currentAllowance,
                    value
                );
            }
            unchecked {
                _approve(owner, spender, currentAllowance - value, false);
            }
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_initialRecipient","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"currentAllowance","type":"uint256"},{"internalType":"uint256","name":"requestedDecrease","type":"uint256"}],"name":"ERC20FailedDecreaseAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[],"name":"ItIs","type":"error"},{"inputs":[],"name":"MaxTXAmount","type":"error"},{"inputs":[],"name":"MaxWalletSize","type":"error"},{"inputs":[],"name":"NotOwnerOrTWallet","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[],"name":"WithdrawFailed","type":"error"},{"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":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":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"requestedDecrease","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeAllFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"},{"internalType":"bool","name":"_isPair","type":"bool"}],"name":"setPairAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_router","type":"address"},{"internalType":"bool","name":"_isRouter","type":"bool"}],"name":"setRouterAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_tWallet","type":"address"}],"name":"setTaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","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":[{"internalType":"address","name":"_token","type":"address"}],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526c8f0bf99be319e24b78483400006004556c8f0bf99be319e24b7848340000600555600a600655600a60075560016008556001600955600a8055600a600b5573faafefc573ffdeb12aff8c146b0b737493d49b9a60115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d60125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f601260156101000a81548160ff0219169083151502179055505f601260166101000a81548160ff02191690831515021790555034801561012a575f80fd5b5060405161464c38038061464c833981810160405281019061014c919061111c565b335f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036101bd575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016101b49190611156565b60405180910390fd5b6101cc8161027b60201b60201c565b506040518060400160405280600b81526020017f44616e63696e67205069670000000000000000000000000000000000000000008152506013908161021191906113a9565b506040518060400160405280600381526020017f50696700000000000000000000000000000000000000000000000000000000008152506014908161025691906113a9565b50610275816d12a039d5a19298de88e9d324000061033c60201b60201c565b506117c2565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036103ac575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016103a39190611156565b60405180910390fd5b6103bd5f83836103c160201b60201c565b5050565b5f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610412578160035f82825461040691906114a5565b92505081905550610a69565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508281101561049c578481846040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610493939291906114e7565b60405180910390fd5b6104aa610b6660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415801561051e57506104ee610b6660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561055657503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15610a2357600f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156105f85750600e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561064b575060105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156106c95760045483111561068c576040517f40276a8800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005548311156106c8576040517f29b8cff300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b6064600a54600c54116106de576006546106e2565b6008545b846106ed919061151c565b6106f7919061158a565b9150600c5f81548092919061070b906115ba565b9190505550600f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561079257503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b1561081b576004548311156107d3576040517f40276a8800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6064600b54600d54116107e8576007546107ec565b6009545b846107f7919061151c565b610801919061158a565b9150600d5f815480929190610815906115ba565b91905055505b5f82111561093d57818361082f9190611601565b92508160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461087d91906114a5565b925050819055508160015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546108d09190611601565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516109349190611634565b60405180910390a35b5f61094d30610b8d60201b60201c565b9050601260159054906101000a900460ff161580156109b25750600f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156109ca5750601260169054906101000a900460ff165b80156109ef5750606460016003546109e2919061151c565b6109ec919061158a565b81115b15610a2157610a0381610bd360201b60201c565b5f4790505f811115610a1f57610a1e81610e6f60201b60201c565b5b505b505b82810360015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ab0578160035f8282540392505081905550610afb565b8160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610b589190611634565b60405180910390a350505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6001601260156101000a81548160ff0219169083151502179055505f810315610e5257601260149054906101000a900460ff1615610e52575f600267ffffffffffffffff811115610c2757610c26611179565b5b604051908082528060200260200182016040528015610c555781602001602082028036833780820191505090505b50905030815f81518110610c6c57610c6b61164d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d10573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d34919061111c565b81600181518110610d4857610d4761164d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050610db43060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610ed760201b60201c565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f843061012c42610e0391906114a5565b6040518663ffffffff1660e01b8152600401610e2395949392919061176a565b5f604051808303815f87803b158015610e3a575f80fd5b505af1158015610e4c573d5f803e3d5ffd5b50505050505b5f601260156101000a81548160ff02191690831515021790555050565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610ed3573d5f803e3d5ffd5b5050565b610eea8383836001610eef60201b60201c565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610f5f575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610f569190611156565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610fcf575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610fc69190611156565b60405180910390fd5b8160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555080156110b8578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516110af9190611634565b60405180910390a35b50505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6110eb826110c2565b9050919050565b6110fb816110e1565b8114611105575f80fd5b50565b5f81519050611116816110f2565b92915050565b5f60208284031215611131576111306110be565b5b5f61113e84828501611108565b91505092915050565b611150816110e1565b82525050565b5f6020820190506111695f830184611147565b92915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806111ea57607f821691505b6020821081036111fd576111fc6111a6565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261125f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82611224565b6112698683611224565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6112ad6112a86112a384611281565b61128a565b611281565b9050919050565b5f819050919050565b6112c683611293565b6112da6112d2826112b4565b848454611230565b825550505050565b5f90565b6112ee6112e2565b6112f98184846112bd565b505050565b5b8181101561131c576113115f826112e6565b6001810190506112ff565b5050565b601f8211156113615761133281611203565b61133b84611215565b8101602085101561134a578190505b61135e61135685611215565b8301826112fe565b50505b505050565b5f82821c905092915050565b5f6113815f1984600802611366565b1980831691505092915050565b5f6113998383611372565b9150826002028217905092915050565b6113b28261116f565b67ffffffffffffffff8111156113cb576113ca611179565b5b6113d582546111d3565b6113e0828285611320565b5f60209050601f831160018114611411575f84156113ff578287015190505b611409858261138e565b865550611470565b601f19841661141f86611203565b5f5b8281101561144657848901518255600182019150602085019450602081019050611421565b86831015611463578489015161145f601f891682611372565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6114af82611281565b91506114ba83611281565b92508282019050808211156114d2576114d1611478565b5b92915050565b6114e181611281565b82525050565b5f6060820190506114fa5f830186611147565b61150760208301856114d8565b61151460408301846114d8565b949350505050565b5f61152682611281565b915061153183611281565b925082820261153f81611281565b9150828204841483151761155657611555611478565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61159482611281565b915061159f83611281565b9250826115af576115ae61155d565b5b828204905092915050565b5f6115c482611281565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036115f6576115f5611478565b5b600182019050919050565b5f61160b82611281565b915061161683611281565b925082820390508181111561162e5761162d611478565b5b92915050565b5f6020820190506116475f8301846114d8565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f61169d6116986116938461167a565b61128a565b611281565b9050919050565b6116ad81611683565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6116e5816110e1565b82525050565b5f6116f683836116dc565b60208301905092915050565b5f602082019050919050565b5f611718826116b3565b61172281856116bd565b935061172d836116cd565b805f5b8381101561175d57815161174488826116eb565b975061174f83611702565b925050600181019050611730565b5085935050505092915050565b5f60a08201905061177d5f8301886114d8565b61178a60208301876116a4565b818103604083015261179c818661170e565b90506117ab6060830185611147565b6117b860808301846114d8565b9695505050505050565b612e7d806117cf5f395ff3fe60806040526004361061019f575f3560e01c80637d1db4a5116100eb578063c9567bf911610089578063dd62ed3e11610063578063dd62ed3e1461055c578063ea2f0b3714610598578063ea414b28146105c0578063f2fde38b146105e8576101a6565b8063c9567bf914610508578063cf1cca321461051e578063d201b01e14610534576101a6565b806395d89b41116100c557806395d89b411461043e578063a457c2d714610468578063a9059cbb146104a4578063c3803660146104e0576101a6565b80637d1db4a5146103c05780638da5cb5b146103ea5780638f9a55c014610414576101a6565b8063313ce5671161015857806351bc3c851161013257806351bc3c851461034257806370a0823114610358578063715018a614610394578063751039fc146103aa576101a6565b8063313ce567146102b457806339509351146102de578063437823ec1461031a576101a6565b806306fdde03146101aa578063095ea7b3146101d457806318160ddd1461021057806323b872dd1461023a57806328ffe65c14610276578063301370af1461029e576101a6565b366101a657005b5f80fd5b3480156101b5575f80fd5b506101be610610565b6040516101cb919061256a565b60405180910390f35b3480156101df575f80fd5b506101fa60048036038101906101f5919061261b565b6106a0565b6040516102079190612673565b60405180910390f35b34801561021b575f80fd5b506102246106c2565b604051610231919061269b565b60405180910390f35b348015610245575f80fd5b50610260600480360381019061025b91906126b4565b6106cb565b60405161026d9190612673565b60405180910390f35b348015610281575f80fd5b5061029c6004803603810190610297919061272e565b6106f9565b005b3480156102a9575f80fd5b506102b26107df565b005b3480156102bf575f80fd5b506102c86107f7565b6040516102d59190612787565b60405180910390f35b3480156102e9575f80fd5b5061030460048036038101906102ff919061261b565b6107ff565b6040516103119190612673565b60405180910390f35b348015610325575f80fd5b50610340600480360381019061033b91906127a0565b610835565b005b34801561034d575f80fd5b50610356610895565b005b348015610363575f80fd5b5061037e600480360381019061037991906127a0565b61092c565b60405161038b919061269b565b60405180910390f35b34801561039f575f80fd5b506103a8610972565b005b3480156103b5575f80fd5b506103be610985565b005b3480156103cb575f80fd5b506103d46109a1565b6040516103e1919061269b565b60405180910390f35b3480156103f5575f80fd5b506103fe6109a7565b60405161040b91906127da565b60405180910390f35b34801561041f575f80fd5b506104286109ce565b604051610435919061269b565b60405180910390f35b348015610449575f80fd5b506104526109d4565b60405161045f919061256a565b60405180910390f35b348015610473575f80fd5b5061048e6004803603810190610489919061261b565b610a64565b60405161049b9190612673565b60405180910390f35b3480156104af575f80fd5b506104ca60048036038101906104c5919061261b565b610adf565b6040516104d79190612673565b60405180910390f35b3480156104eb575f80fd5b506105066004803603810190610501919061272e565b610b01565b005b348015610513575f80fd5b5061051c610be7565b005b348015610529575f80fd5b50610532611055565b005b34801561053f575f80fd5b5061055a600480360381019061055591906127a0565b611089565b005b348015610567575f80fd5b50610582600480360381019061057d91906127f3565b61127c565b60405161058f919061269b565b60405180910390f35b3480156105a3575f80fd5b506105be60048036038101906105b991906127a0565b6112fe565b005b3480156105cb575f80fd5b506105e660048036038101906105e1919061286c565b61135d565b005b3480156105f3575f80fd5b5061060e600480360381019061060991906127a0565b61153f565b005b60606013805461061f906128c4565b80601f016020809104026020016040519081016040528092919081815260200182805461064b906128c4565b80156106965780601f1061066d57610100808354040283529160200191610696565b820191905f5260205f20905b81548152906001019060200180831161067957829003601f168201915b5050505050905090565b5f806106aa6115c3565b90506106b78185856115ca565b600191505092915050565b5f600354905090565b5f806106d56115c3565b90506106e28582856115dc565b6106ed85858561166e565b60019150509392505050565b61070161175e565b801515600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16151503610787576040517f64d3671b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6107e761175e565b5f6008819055505f600981905550565b5f6012905090565b5f806108096115c3565b905061082a81858561081b858961127c565b6108259190612921565b6115ca565b600191505092915050565b61083d61175e565b600160105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108d56115c3565b73ffffffffffffffffffffffffffffffffffffffff16146108f4575f80fd5b5f6108fe3061092c565b90505f81111561091257610911816117e5565b5b5f4790505f8111156109285761092781611a7b565b5b5050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61097a61175e565b6109835f611ae3565b565b61098d61175e565b600354600481905550600354600581905550565b60045481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60055481565b6060601480546109e3906128c4565b80601f0160208091040260200160405190810160405280929190818152602001828054610a0f906128c4565b8015610a5a5780601f10610a3157610100808354040283529160200191610a5a565b820191905f5260205f20905b815481529060010190602001808311610a3d57829003601f168201915b5050505050905090565b5f80610a6e6115c3565b90505f610a7b828661127c565b905083811015610ac6578481856040517fa60f030c000000000000000000000000000000000000000000000000000000008152600401610abd93929190612954565b60405180910390fd5b610ad382868684036115ca565b60019250505092915050565b5f80610ae96115c3565b9050610af681858561166e565b600191505092915050565b610b0961175e565b801515600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16151503610b8f576040517f64d3671b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b610bef61175e565b5f601260149054906101000a900460ff16610dcf57610c373060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610c326106c2565b6115ca565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ca1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cc5919061299d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d4b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d6f919061299d565b6040518363ffffffff1660e01b8152600401610d8c9291906129c8565b6020604051808303815f875af1158015610da8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dcc919061299d565b90505b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610e173061092c565b5f80610e216109a7565b61012c42610e2f9190612921565b6040518863ffffffff1660e01b8152600401610e5096959493929190612a31565b60606040518083038185885af1158015610e6c573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610e919190612aa4565b5050508073ffffffffffffffffffffffffffffffffffffffff1663095ea7b360125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610f10929190612af4565b6020604051808303815f875af1158015610f2c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f509190612b2f565b506001601260146101000a81548160ff0219169083151502179055506001601260166101000a81548160ff0219169083151502179055506001600e5f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b61105d61175e565b601260169054906101000a900460ff1615601260166101000a81548160ff021916908315150217905550565b61109161175e565b5f3373ffffffffffffffffffffffffffffffffffffffff16476040516110b690612b87565b5f6040518083038185875af1925050503d805f81146110f0576040519150601f19603f3d011682016040523d82523d5f602084013e6110f5565b606091505b5050905080611130576040517f750b219c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611143303361113e3061092c565b61166e565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611278575f8273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016111b091906127da565b602060405180830381865afa1580156111cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111ef9190612b9b565b90505f811115611276578273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611234929190612af4565b6020604051808303815f875af1158015611250573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112749190612b2f565b505b505b5050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61130661175e565b5f60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b6113656109a7565b73ffffffffffffffffffffffffffffffffffffffff166113836115c3565b73ffffffffffffffffffffffffffffffffffffffff16141580156113fb575060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113e26115c3565b73ffffffffffffffffffffffffffffffffffffffff1614155b15611432576040517fa179143b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60105f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b61154761175e565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036115b7575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016115ae91906127da565b60405180910390fd5b6115c081611ae3565b50565b5f33905090565b6115d78383836001611ba4565b505050565b5f6115e7848461127c565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146116685781811015611659578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161165093929190612954565b60405180910390fd5b61166784848484035f611ba4565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116de575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016116d591906127da565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361174e575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161174591906127da565b60405180910390fd5b611759838383611d73565b505050565b6117666115c3565b73ffffffffffffffffffffffffffffffffffffffff166117846109a7565b73ffffffffffffffffffffffffffffffffffffffff16146117e3576117a76115c3565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016117da91906127da565b60405180910390fd5b565b6001601260156101000a81548160ff0219169083151502179055505f810315611a5e57601260149054906101000a900460ff1615611a5e575f600267ffffffffffffffff81111561183957611838612bc6565b5b6040519080825280602002602001820160405280156118675781602001602082028036833780820191505090505b50905030815f8151811061187e5761187d612bf3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611922573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611946919061299d565b8160018151811061195a57611959612bf3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506119c03060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846115ca565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f843061012c42611a0f9190612921565b6040518663ffffffff1660e01b8152600401611a2f959493929190612cd7565b5f604051808303815f87803b158015611a46575f80fd5b505af1158015611a58573d5f803e3d5ffd5b50505050505b5f601260156101000a81548160ff02191690831515021790555050565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611adf573d5f803e3d5ffd5b5050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611c14575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401611c0b91906127da565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c84575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401611c7b91906127da565b60405180910390fd5b8160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015611d6d578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051611d64919061269b565b60405180910390a35b50505050565b5f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611dc4578160035f828254611db89190612921565b925050819055506123fd565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611e4e578481846040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401611e4593929190612954565b60405180910390fd5b611e566109a7565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015611ec45750611e946109a7565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611efc57503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156123b757600f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611f9e5750600e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611ff1575060105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561206f57600454831115612032576040517f40276a8800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60055483111561206e576040517f29b8cff300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b6064600a54600c541161208457600654612088565b6008545b846120939190612d2f565b61209d9190612d9d565b9150600c5f8154809291906120b190612dcd565b9190505550600f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561213857503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156121c157600454831115612179576040517f40276a8800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6064600b54600d541161218e57600754612192565b6009545b8461219d9190612d2f565b6121a79190612d9d565b9150600d5f8154809291906121bb90612dcd565b91905055505b5f8211156122e35781836121d59190612e14565b92508160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546122239190612921565b925050819055508160015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546122769190612e14565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516122da919061269b565b60405180910390a35b5f6122ed3061092c565b9050601260159054906101000a900460ff161580156123525750600f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b801561236a5750601260169054906101000a900460ff165b801561238f5750606460016003546123829190612d2f565b61238c9190612d9d565b81115b156123b55761239d816117e5565b5f4790505f8111156123b3576123b281611a7b565b5b505b505b82810360015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612444578160035f828254039250508190555061248f565b8160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516124ec919061269b565b60405180910390a350505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61253c826124fa565b6125468185612504565b9350612556818560208601612514565b61255f81612522565b840191505092915050565b5f6020820190508181035f8301526125828184612532565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6125b78261258e565b9050919050565b6125c7816125ad565b81146125d1575f80fd5b50565b5f813590506125e2816125be565b92915050565b5f819050919050565b6125fa816125e8565b8114612604575f80fd5b50565b5f81359050612615816125f1565b92915050565b5f80604083850312156126315761263061258a565b5b5f61263e858286016125d4565b925050602061264f85828601612607565b9150509250929050565b5f8115159050919050565b61266d81612659565b82525050565b5f6020820190506126865f830184612664565b92915050565b612695816125e8565b82525050565b5f6020820190506126ae5f83018461268c565b92915050565b5f805f606084860312156126cb576126ca61258a565b5b5f6126d8868287016125d4565b93505060206126e9868287016125d4565b92505060406126fa86828701612607565b9150509250925092565b61270d81612659565b8114612717575f80fd5b50565b5f8135905061272881612704565b92915050565b5f80604083850312156127445761274361258a565b5b5f612751858286016125d4565b92505060206127628582860161271a565b9150509250929050565b5f60ff82169050919050565b6127818161276c565b82525050565b5f60208201905061279a5f830184612778565b92915050565b5f602082840312156127b5576127b461258a565b5b5f6127c2848285016125d4565b91505092915050565b6127d4816125ad565b82525050565b5f6020820190506127ed5f8301846127cb565b92915050565b5f80604083850312156128095761280861258a565b5b5f612816858286016125d4565b9250506020612827858286016125d4565b9150509250929050565b5f61283b8261258e565b9050919050565b61284b81612831565b8114612855575f80fd5b50565b5f8135905061286681612842565b92915050565b5f602082840312156128815761288061258a565b5b5f61288e84828501612858565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806128db57607f821691505b6020821081036128ee576128ed612897565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61292b826125e8565b9150612936836125e8565b925082820190508082111561294e5761294d6128f4565b5b92915050565b5f6060820190506129675f8301866127cb565b612974602083018561268c565b612981604083018461268c565b949350505050565b5f81519050612997816125be565b92915050565b5f602082840312156129b2576129b161258a565b5b5f6129bf84828501612989565b91505092915050565b5f6040820190506129db5f8301856127cb565b6129e860208301846127cb565b9392505050565b5f819050919050565b5f819050919050565b5f612a1b612a16612a11846129ef565b6129f8565b6125e8565b9050919050565b612a2b81612a01565b82525050565b5f60c082019050612a445f8301896127cb565b612a51602083018861268c565b612a5e6040830187612a22565b612a6b6060830186612a22565b612a7860808301856127cb565b612a8560a083018461268c565b979650505050505050565b5f81519050612a9e816125f1565b92915050565b5f805f60608486031215612abb57612aba61258a565b5b5f612ac886828701612a90565b9350506020612ad986828701612a90565b9250506040612aea86828701612a90565b9150509250925092565b5f604082019050612b075f8301856127cb565b612b14602083018461268c565b9392505050565b5f81519050612b2981612704565b92915050565b5f60208284031215612b4457612b4361258a565b5b5f612b5184828501612b1b565b91505092915050565b5f81905092915050565b50565b5f612b725f83612b5a565b9150612b7d82612b64565b5f82019050919050565b5f612b9182612b67565b9150819050919050565b5f60208284031215612bb057612baf61258a565b5b5f612bbd84828501612a90565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612c52816125ad565b82525050565b5f612c638383612c49565b60208301905092915050565b5f602082019050919050565b5f612c8582612c20565b612c8f8185612c2a565b9350612c9a83612c3a565b805f5b83811015612cca578151612cb18882612c58565b9750612cbc83612c6f565b925050600181019050612c9d565b5085935050505092915050565b5f60a082019050612cea5f83018861268c565b612cf76020830187612a22565b8181036040830152612d098186612c7b565b9050612d1860608301856127cb565b612d25608083018461268c565b9695505050505050565b5f612d39826125e8565b9150612d44836125e8565b9250828202612d52816125e8565b91508282048414831517612d6957612d686128f4565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612da7826125e8565b9150612db2836125e8565b925082612dc257612dc1612d70565b5b828204905092915050565b5f612dd7826125e8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612e0957612e086128f4565b5b600182019050919050565b5f612e1e826125e8565b9150612e29836125e8565b9250828203905081811115612e4157612e406128f4565b5b9291505056fea2646970667358221220a490d51a2fa66f11a324c6e04238c2e97316a940540af5e9c534802df5fea11464736f6c634300081a00330000000000000000000000004aacaf8d63b20572bdd6fce04fd485a44967b508

Deployed Bytecode

0x60806040526004361061019f575f3560e01c80637d1db4a5116100eb578063c9567bf911610089578063dd62ed3e11610063578063dd62ed3e1461055c578063ea2f0b3714610598578063ea414b28146105c0578063f2fde38b146105e8576101a6565b8063c9567bf914610508578063cf1cca321461051e578063d201b01e14610534576101a6565b806395d89b41116100c557806395d89b411461043e578063a457c2d714610468578063a9059cbb146104a4578063c3803660146104e0576101a6565b80637d1db4a5146103c05780638da5cb5b146103ea5780638f9a55c014610414576101a6565b8063313ce5671161015857806351bc3c851161013257806351bc3c851461034257806370a0823114610358578063715018a614610394578063751039fc146103aa576101a6565b8063313ce567146102b457806339509351146102de578063437823ec1461031a576101a6565b806306fdde03146101aa578063095ea7b3146101d457806318160ddd1461021057806323b872dd1461023a57806328ffe65c14610276578063301370af1461029e576101a6565b366101a657005b5f80fd5b3480156101b5575f80fd5b506101be610610565b6040516101cb919061256a565b60405180910390f35b3480156101df575f80fd5b506101fa60048036038101906101f5919061261b565b6106a0565b6040516102079190612673565b60405180910390f35b34801561021b575f80fd5b506102246106c2565b604051610231919061269b565b60405180910390f35b348015610245575f80fd5b50610260600480360381019061025b91906126b4565b6106cb565b60405161026d9190612673565b60405180910390f35b348015610281575f80fd5b5061029c6004803603810190610297919061272e565b6106f9565b005b3480156102a9575f80fd5b506102b26107df565b005b3480156102bf575f80fd5b506102c86107f7565b6040516102d59190612787565b60405180910390f35b3480156102e9575f80fd5b5061030460048036038101906102ff919061261b565b6107ff565b6040516103119190612673565b60405180910390f35b348015610325575f80fd5b50610340600480360381019061033b91906127a0565b610835565b005b34801561034d575f80fd5b50610356610895565b005b348015610363575f80fd5b5061037e600480360381019061037991906127a0565b61092c565b60405161038b919061269b565b60405180910390f35b34801561039f575f80fd5b506103a8610972565b005b3480156103b5575f80fd5b506103be610985565b005b3480156103cb575f80fd5b506103d46109a1565b6040516103e1919061269b565b60405180910390f35b3480156103f5575f80fd5b506103fe6109a7565b60405161040b91906127da565b60405180910390f35b34801561041f575f80fd5b506104286109ce565b604051610435919061269b565b60405180910390f35b348015610449575f80fd5b506104526109d4565b60405161045f919061256a565b60405180910390f35b348015610473575f80fd5b5061048e6004803603810190610489919061261b565b610a64565b60405161049b9190612673565b60405180910390f35b3480156104af575f80fd5b506104ca60048036038101906104c5919061261b565b610adf565b6040516104d79190612673565b60405180910390f35b3480156104eb575f80fd5b506105066004803603810190610501919061272e565b610b01565b005b348015610513575f80fd5b5061051c610be7565b005b348015610529575f80fd5b50610532611055565b005b34801561053f575f80fd5b5061055a600480360381019061055591906127a0565b611089565b005b348015610567575f80fd5b50610582600480360381019061057d91906127f3565b61127c565b60405161058f919061269b565b60405180910390f35b3480156105a3575f80fd5b506105be60048036038101906105b991906127a0565b6112fe565b005b3480156105cb575f80fd5b506105e660048036038101906105e1919061286c565b61135d565b005b3480156105f3575f80fd5b5061060e600480360381019061060991906127a0565b61153f565b005b60606013805461061f906128c4565b80601f016020809104026020016040519081016040528092919081815260200182805461064b906128c4565b80156106965780601f1061066d57610100808354040283529160200191610696565b820191905f5260205f20905b81548152906001019060200180831161067957829003601f168201915b5050505050905090565b5f806106aa6115c3565b90506106b78185856115ca565b600191505092915050565b5f600354905090565b5f806106d56115c3565b90506106e28582856115dc565b6106ed85858561166e565b60019150509392505050565b61070161175e565b801515600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16151503610787576040517f64d3671b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6107e761175e565b5f6008819055505f600981905550565b5f6012905090565b5f806108096115c3565b905061082a81858561081b858961127c565b6108259190612921565b6115ca565b600191505092915050565b61083d61175e565b600160105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108d56115c3565b73ffffffffffffffffffffffffffffffffffffffff16146108f4575f80fd5b5f6108fe3061092c565b90505f81111561091257610911816117e5565b5b5f4790505f8111156109285761092781611a7b565b5b5050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61097a61175e565b6109835f611ae3565b565b61098d61175e565b600354600481905550600354600581905550565b60045481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60055481565b6060601480546109e3906128c4565b80601f0160208091040260200160405190810160405280929190818152602001828054610a0f906128c4565b8015610a5a5780601f10610a3157610100808354040283529160200191610a5a565b820191905f5260205f20905b815481529060010190602001808311610a3d57829003601f168201915b5050505050905090565b5f80610a6e6115c3565b90505f610a7b828661127c565b905083811015610ac6578481856040517fa60f030c000000000000000000000000000000000000000000000000000000008152600401610abd93929190612954565b60405180910390fd5b610ad382868684036115ca565b60019250505092915050565b5f80610ae96115c3565b9050610af681858561166e565b600191505092915050565b610b0961175e565b801515600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16151503610b8f576040517f64d3671b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b610bef61175e565b5f601260149054906101000a900460ff16610dcf57610c373060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610c326106c2565b6115ca565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ca1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cc5919061299d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d4b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d6f919061299d565b6040518363ffffffff1660e01b8152600401610d8c9291906129c8565b6020604051808303815f875af1158015610da8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dcc919061299d565b90505b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610e173061092c565b5f80610e216109a7565b61012c42610e2f9190612921565b6040518863ffffffff1660e01b8152600401610e5096959493929190612a31565b60606040518083038185885af1158015610e6c573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610e919190612aa4565b5050508073ffffffffffffffffffffffffffffffffffffffff1663095ea7b360125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610f10929190612af4565b6020604051808303815f875af1158015610f2c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f509190612b2f565b506001601260146101000a81548160ff0219169083151502179055506001601260166101000a81548160ff0219169083151502179055506001600e5f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b61105d61175e565b601260169054906101000a900460ff1615601260166101000a81548160ff021916908315150217905550565b61109161175e565b5f3373ffffffffffffffffffffffffffffffffffffffff16476040516110b690612b87565b5f6040518083038185875af1925050503d805f81146110f0576040519150601f19603f3d011682016040523d82523d5f602084013e6110f5565b606091505b5050905080611130576040517f750b219c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611143303361113e3061092c565b61166e565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611278575f8273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016111b091906127da565b602060405180830381865afa1580156111cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111ef9190612b9b565b90505f811115611276578273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611234929190612af4565b6020604051808303815f875af1158015611250573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112749190612b2f565b505b505b5050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61130661175e565b5f60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b6113656109a7565b73ffffffffffffffffffffffffffffffffffffffff166113836115c3565b73ffffffffffffffffffffffffffffffffffffffff16141580156113fb575060115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113e26115c3565b73ffffffffffffffffffffffffffffffffffffffff1614155b15611432576040517fa179143b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60105f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b61154761175e565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036115b7575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016115ae91906127da565b60405180910390fd5b6115c081611ae3565b50565b5f33905090565b6115d78383836001611ba4565b505050565b5f6115e7848461127c565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146116685781811015611659578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161165093929190612954565b60405180910390fd5b61166784848484035f611ba4565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116de575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016116d591906127da565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361174e575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161174591906127da565b60405180910390fd5b611759838383611d73565b505050565b6117666115c3565b73ffffffffffffffffffffffffffffffffffffffff166117846109a7565b73ffffffffffffffffffffffffffffffffffffffff16146117e3576117a76115c3565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016117da91906127da565b60405180910390fd5b565b6001601260156101000a81548160ff0219169083151502179055505f810315611a5e57601260149054906101000a900460ff1615611a5e575f600267ffffffffffffffff81111561183957611838612bc6565b5b6040519080825280602002602001820160405280156118675781602001602082028036833780820191505090505b50905030815f8151811061187e5761187d612bf3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611922573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611946919061299d565b8160018151811061195a57611959612bf3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506119c03060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846115ca565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f843061012c42611a0f9190612921565b6040518663ffffffff1660e01b8152600401611a2f959493929190612cd7565b5f604051808303815f87803b158015611a46575f80fd5b505af1158015611a58573d5f803e3d5ffd5b50505050505b5f601260156101000a81548160ff02191690831515021790555050565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611adf573d5f803e3d5ffd5b5050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611c14575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401611c0b91906127da565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c84575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401611c7b91906127da565b60405180910390fd5b8160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015611d6d578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051611d64919061269b565b60405180910390a35b50505050565b5f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611dc4578160035f828254611db89190612921565b925050819055506123fd565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611e4e578481846040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401611e4593929190612954565b60405180910390fd5b611e566109a7565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015611ec45750611e946109a7565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611efc57503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156123b757600f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611f9e5750600e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611ff1575060105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561206f57600454831115612032576040517f40276a8800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60055483111561206e576040517f29b8cff300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b6064600a54600c541161208457600654612088565b6008545b846120939190612d2f565b61209d9190612d9d565b9150600c5f8154809291906120b190612dcd565b9190505550600f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561213857503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156121c157600454831115612179576040517f40276a8800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6064600b54600d541161218e57600754612192565b6009545b8461219d9190612d2f565b6121a79190612d9d565b9150600d5f8154809291906121bb90612dcd565b91905055505b5f8211156122e35781836121d59190612e14565b92508160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546122239190612921565b925050819055508160015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546122769190612e14565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516122da919061269b565b60405180910390a35b5f6122ed3061092c565b9050601260159054906101000a900460ff161580156123525750600f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b801561236a5750601260169054906101000a900460ff165b801561238f5750606460016003546123829190612d2f565b61238c9190612d9d565b81115b156123b55761239d816117e5565b5f4790505f8111156123b3576123b281611a7b565b5b505b505b82810360015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612444578160035f828254039250508190555061248f565b8160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516124ec919061269b565b60405180910390a350505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61253c826124fa565b6125468185612504565b9350612556818560208601612514565b61255f81612522565b840191505092915050565b5f6020820190508181035f8301526125828184612532565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6125b78261258e565b9050919050565b6125c7816125ad565b81146125d1575f80fd5b50565b5f813590506125e2816125be565b92915050565b5f819050919050565b6125fa816125e8565b8114612604575f80fd5b50565b5f81359050612615816125f1565b92915050565b5f80604083850312156126315761263061258a565b5b5f61263e858286016125d4565b925050602061264f85828601612607565b9150509250929050565b5f8115159050919050565b61266d81612659565b82525050565b5f6020820190506126865f830184612664565b92915050565b612695816125e8565b82525050565b5f6020820190506126ae5f83018461268c565b92915050565b5f805f606084860312156126cb576126ca61258a565b5b5f6126d8868287016125d4565b93505060206126e9868287016125d4565b92505060406126fa86828701612607565b9150509250925092565b61270d81612659565b8114612717575f80fd5b50565b5f8135905061272881612704565b92915050565b5f80604083850312156127445761274361258a565b5b5f612751858286016125d4565b92505060206127628582860161271a565b9150509250929050565b5f60ff82169050919050565b6127818161276c565b82525050565b5f60208201905061279a5f830184612778565b92915050565b5f602082840312156127b5576127b461258a565b5b5f6127c2848285016125d4565b91505092915050565b6127d4816125ad565b82525050565b5f6020820190506127ed5f8301846127cb565b92915050565b5f80604083850312156128095761280861258a565b5b5f612816858286016125d4565b9250506020612827858286016125d4565b9150509250929050565b5f61283b8261258e565b9050919050565b61284b81612831565b8114612855575f80fd5b50565b5f8135905061286681612842565b92915050565b5f602082840312156128815761288061258a565b5b5f61288e84828501612858565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806128db57607f821691505b6020821081036128ee576128ed612897565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61292b826125e8565b9150612936836125e8565b925082820190508082111561294e5761294d6128f4565b5b92915050565b5f6060820190506129675f8301866127cb565b612974602083018561268c565b612981604083018461268c565b949350505050565b5f81519050612997816125be565b92915050565b5f602082840312156129b2576129b161258a565b5b5f6129bf84828501612989565b91505092915050565b5f6040820190506129db5f8301856127cb565b6129e860208301846127cb565b9392505050565b5f819050919050565b5f819050919050565b5f612a1b612a16612a11846129ef565b6129f8565b6125e8565b9050919050565b612a2b81612a01565b82525050565b5f60c082019050612a445f8301896127cb565b612a51602083018861268c565b612a5e6040830187612a22565b612a6b6060830186612a22565b612a7860808301856127cb565b612a8560a083018461268c565b979650505050505050565b5f81519050612a9e816125f1565b92915050565b5f805f60608486031215612abb57612aba61258a565b5b5f612ac886828701612a90565b9350506020612ad986828701612a90565b9250506040612aea86828701612a90565b9150509250925092565b5f604082019050612b075f8301856127cb565b612b14602083018461268c565b9392505050565b5f81519050612b2981612704565b92915050565b5f60208284031215612b4457612b4361258a565b5b5f612b5184828501612b1b565b91505092915050565b5f81905092915050565b50565b5f612b725f83612b5a565b9150612b7d82612b64565b5f82019050919050565b5f612b9182612b67565b9150819050919050565b5f60208284031215612bb057612baf61258a565b5b5f612bbd84828501612a90565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612c52816125ad565b82525050565b5f612c638383612c49565b60208301905092915050565b5f602082019050919050565b5f612c8582612c20565b612c8f8185612c2a565b9350612c9a83612c3a565b805f5b83811015612cca578151612cb18882612c58565b9750612cbc83612c6f565b925050600181019050612c9d565b5085935050505092915050565b5f60a082019050612cea5f83018861268c565b612cf76020830187612a22565b8181036040830152612d098186612c7b565b9050612d1860608301856127cb565b612d25608083018461268c565b9695505050505050565b5f612d39826125e8565b9150612d44836125e8565b9250828202612d52816125e8565b91508282048414831517612d6957612d686128f4565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612da7826125e8565b9150612db2836125e8565b925082612dc257612dc1612d70565b5b828204905092915050565b5f612dd7826125e8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612e0957612e086128f4565b5b600182019050919050565b5f612e1e826125e8565b9150612e29836125e8565b9250828203905081811115612e4157612e406128f4565b5b9291505056fea2646970667358221220a490d51a2fa66f11a324c6e04238c2e97316a940540af5e9c534802df5fea11464736f6c634300081a0033

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

0000000000000000000000004aacaf8d63b20572bdd6fce04fd485a44967b508

-----Decoded View---------------
Arg [0] : _initialRecipient (address): 0x4AACAF8d63B20572bdd6FCE04FD485A44967b508

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000004aacaf8d63b20572bdd6fce04fd485a44967b508


Deployed Bytecode Sourcemap

3970:13183:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5797:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10657:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6091:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10880:283;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9557:249;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6726:104;;;;;;;;;;;;;:::i;:::-;;5999:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11171:263;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7614:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8217:395;;;;;;;;;;;;;:::i;:::-;;6198:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2613:103;;;;;;;;;;;;;:::i;:::-;;7479:127;;;;;;;;;;;;;:::i;:::-;;4213:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2344:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4275:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5896:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11442:595;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6324:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9814:206;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8716:833;;;;;;;;;;;;;:::i;:::-;;8620:88;;;;;;;;;;;;;:::i;:::-;;6838:533;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6514:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7733:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7851:358;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2724:220;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5797:91;5842:13;5875:5;5868:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5797:91;:::o;10657:215::-;10755:4;10772:13;10788:12;:10;:12::i;:::-;10772:28;;10811:31;10820:5;10827:7;10836:5;10811:8;:31::i;:::-;10860:4;10853:11;;;10657:215;;;;:::o;6091:99::-;6143:7;6170:12;;6163:19;;6091:99;:::o;10880:283::-;11001:4;11018:15;11036:12;:10;:12::i;:::-;11018:30;;11059:37;11075:4;11081:7;11090:5;11059:15;:37::i;:::-;11107:26;11117:4;11123:2;11127:5;11107:9;:26::i;:::-;11151:4;11144:11;;;10880:283;;;;;:::o;9557:249::-;2303:13;:11;:13::i;:::-;9701:9:::1;9673:37;;:15;:24;9689:7;9673:24;;;;;;;;;;;;;;;;;;;;;;;;;:37;;::::0;9669:83:::1;;9734:6;;;;;;;;;;;;;;9669:83;9789:9;9762:15;:24;9778:7;9762:24;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;9557:249:::0;;:::o;6726:104::-;2303:13;:11;:13::i;:::-;6793:1:::1;6778:12;:16;;;;6821:1;6805:13;:17;;;;6726:104::o:0;5999:84::-;6048:5;6073:2;6066:9;;5999:84;:::o;11171:263::-;11284:4;11301:13;11317:12;:10;:12::i;:::-;11301:28;;11340:64;11349:5;11356:7;11393:10;11365:25;11375:5;11382:7;11365:9;:25::i;:::-;:38;;;;:::i;:::-;11340:8;:64::i;:::-;11422:4;11415:11;;;11171:263;;;;:::o;7614:111::-;2303:13;:11;:13::i;:::-;7713:4:::1;7683:18;:27;7702:7;7683:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;7614:111:::0;:::o;8217:395::-;8277:10;;;;;;;;;;;8261:26;;:12;:10;:12::i;:::-;:26;;;8257:67;;8304:8;;;8257:67;8334:20;8357:24;8375:4;8357:9;:24::i;:::-;8334:47;;8411:1;8396:12;:16;8392:79;;;8429:30;8446:12;8429:16;:30::i;:::-;8392:79;8481:18;8502:21;8481:42;;8551:1;8538:10;:14;8534:71;;;8569:24;8582:10;8569:12;:24::i;:::-;8534:71;8246:366;;8217:395::o;6198:118::-;6263:7;6290:9;:18;6300:7;6290:18;;;;;;;;;;;;;;;;6283:25;;6198:118;;;:::o;2613:103::-;2303:13;:11;:13::i;:::-;2678:30:::1;2705:1;2678:18;:30::i;:::-;2613:103::o:0;7479:127::-;2303:13;:11;:13::i;:::-;7546:12:::1;;7531;:27;;;;7586:12;;7569:14;:29;;;;7479:127::o:0;4213:55::-;;;;:::o;2344:87::-;2390:7;2417:6;;;;;;;;;;;2410:13;;2344:87;:::o;4275:57::-;;;;:::o;5896:95::-;5943:13;5976:7;5969:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5896:95;:::o;11442:595::-;11562:4;11579:13;11595:12;:10;:12::i;:::-;11579:28;;11618:24;11645:25;11655:5;11662:7;11645:9;:25::i;:::-;11618:52;;11704:17;11685:16;:36;11681:216;;;11792:7;11818:16;11853:17;11745:140;;;;;;;;;;;;;:::i;:::-;;;;;;;;11681:216;11932:62;11941:5;11948:7;11976:17;11957:16;:36;11932:8;:62::i;:::-;12025:4;12018:11;;;;11442:595;;;;:::o;6324:182::-;6393:4;6410:13;6426:12;:10;:12::i;:::-;6410:28;;6449:27;6459:5;6466:2;6470:5;6449:9;:27::i;:::-;6494:4;6487:11;;;6324:182;;;;:::o;9814:206::-;2303:13;:11;:13::i;:::-;9923:7:::1;9899:31;;:13;:20;9913:5;9899:20;;;;;;;;;;;;;;;;;;;;;;;;;:31;;::::0;9895:77:::1;;9954:6;;;;;;;;;;;;;;9895:77;10005:7;9982:13;:20;9996:5;9982:20;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;9814:206:::0;;:::o;8716:833::-;2303:13;:11;:13::i;:::-;8767:21:::1;8804:11;;;;;;;;;;;8799:252;;8832:64;8849:4;8864:15;;;;;;;;;;;8882:13;:11;:13::i;:::-;8832:8;:64::i;:::-;8945:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8927:73;;;9009:4;9016:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8927:112;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8911:128;;8799:252;9061:15;;;;;;;;;;;:31;;;9100:21;9145:4;9165:24;9183:4;9165:9;:24::i;:::-;9204:1;9220::::0;9236:7:::1;:5;:7::i;:::-;9276:9;9258:15;:27;;;;:::i;:::-;9061:235;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;9314:13;9307:29;;;9345:15;;;;;;;;;;;9363:14;9307:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9403:4;9389:11;;:18;;;;;;;;;;;;;;;;;;9432:4;9418:11;;:18;;;;;;;;;;;;;;;;;;9491:4;9447:15;:41;9471:15;;;;;;;;;;;9447:41;;;;;;;;;;;;;;;;:48;;;;;;;;;;;;;;;;;;9537:4;9506:13;:28;9520:13;9506:28;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;8756:793;8716:833::o:0;8620:88::-;2303:13;:11;:13::i;:::-;8689:11:::1;;;;;;;;;;;8688:12;8674:11;;:26;;;;;;;;;;;;;;;;;;8620:88::o:0;6838:533::-;2303:13;:11;:13::i;:::-;6909:12:::1;6935:10;6927:24;;6973:21;6927:82;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6908:101;;;7025:7;7020:37;;7041:16;;;;;;;;;;;;;;7020:37;7068:62;7086:4;7093:10;7105:24;7123:4;7105:9;:24::i;:::-;7068:9;:62::i;:::-;7163:1;7145:20;;:6;:20;;;7141:223;;7182:16;7208:6;7201:24;;;7234:4;7201:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7182:58;;7270:1;7259:8;:12;7255:98;;;7299:6;7292:23;;;7316:10;7328:8;7292:45;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7255:98;7167:197;7141:223;6897:474;6838:533:::0;:::o;6514:167::-;6619:7;6646:11;:18;6658:5;6646:18;;;;;;;;;;;;;;;:27;6665:7;6646:27;;;;;;;;;;;;;;;;6639:34;;6514:167;;;;:::o;7733:110::-;2303:13;:11;:13::i;:::-;7830:5:::1;7800:18;:27;7819:7;7800:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;7733:110:::0;:::o;7851:358::-;7952:7;:5;:7::i;:::-;7936:23;;:12;:10;:12::i;:::-;:23;;;;:53;;;;;7979:10;;;;;;;;;;;7963:26;;:12;:10;:12::i;:::-;:26;;;;7936:53;7932:120;;;8017:19;;;;;;;;;;;;;;7932:120;8099:5;8066:18;:30;8085:10;;;;;;;;;;;8066:30;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;8132:8;8119:10;;:21;;;;;;;;;;;;;;;;;;8186:4;8155:18;:28;8174:8;8155:28;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;7851:358;:::o;2724:220::-;2303:13;:11;:13::i;:::-;2829:1:::1;2809:22;;:8;:22;;::::0;2805:93:::1;;2883:1;2855:31;;;;;;;;;;;:::i;:::-;;;;;;;;2805:93;2908:28;2927:8;2908:18;:28::i;:::-;2724:220:::0;:::o;1082:98::-;1135:7;1162:10;1155:17;;1082:98;:::o;15873:172::-;16000:37;16009:5;16016:7;16025:5;16032:4;16000:8;:37::i;:::-;15873:172;;;:::o;16547:603::-;16681:24;16708:25;16718:5;16725:7;16708:9;:25::i;:::-;16681:52;;16768:17;16748:16;:37;16744:399;;16825:5;16806:16;:24;16802:214;;;16907:7;16937:16;16976:5;16858:142;;;;;;;;;;;;;:::i;:::-;;;;;;;;16802:214;17059:57;17068:5;17075:7;17103:5;17084:16;:24;17110:5;17059:8;:57::i;:::-;16744:399;16670:480;16547:603;;;:::o;12045:308::-;12145:1;12129:18;;:4;:18;;;12125:88;;12198:1;12171:30;;;;;;;;;;;:::i;:::-;;;;;;;;12125:88;12241:1;12227:16;;:2;:16;;;12223:88;;12296:1;12267:32;;;;;;;;;;;:::i;:::-;;;;;;;;12223:88;12321:24;12329:4;12335:2;12339:5;12321:7;:24::i;:::-;12045:308;;;:::o;2439:166::-;2510:12;:10;:12::i;:::-;2499:23;;:7;:5;:7::i;:::-;:23;;;2495:103;;2573:12;:10;:12::i;:::-;2546:40;;;;;;;;;;;:::i;:::-;;;;;;;;2495:103;2439:166::o;10028:621::-;5544:4;5535:6;;:13;;;;;;;;;;;;;;;;;;10125:1:::1;10110:11;:16:::0;10106:55;10143:7:::1;10106:55;10176:11;;;;;;;;;;;10171:51:::0;10204:7:::1;10171:51;10232:21;10270:1;10256:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10232:40;;10301:4;10283;10288:1;10283:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10327:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10317:4;10322:1;10317:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;10360:62;10377:4;10392:15;;;;;;;;;;;10410:11;10360:8;:62::i;:::-;10433:15;;;;;;;;;;;:66;;;10514:11;10540:1;10556:4;10583;10621:9;10603:15;:27;;;;:::i;:::-;10433:208;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10095:554;5559:1;5580:5:::0;5571:6;;:14;;;;;;;;;;;;;;;;;;10028:621;:::o;7379:92::-;7436:10;;;;;;;;;;;:19;;:27;7456:6;7436:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7379:92;:::o;2952:191::-;3026:16;3045:6;;;;;;;;;;;3026:25;;3071:8;3062:6;;:17;;;;;;;;;;;;;;;;;;3126:8;3095:40;;3116:8;3095:40;;;;;;;;;;;;3015:128;2952:191;:::o;16053:486::-;16226:1;16209:19;;:5;:19;;;16205:91;;16281:1;16252:32;;;;;;;;;;;:::i;:::-;;;;;;;;16205:91;16329:1;16310:21;;:7;:21;;;16306:92;;16383:1;16355:31;;;;;;;;;;;:::i;:::-;;;;;;;;16306:92;16438:5;16408:11;:18;16420:5;16408:18;;;;;;;;;;;;;;;:27;16427:7;16408:27;;;;;;;;;;;;;;;:35;;;;16458:9;16454:78;;;16505:7;16489:31;;16498:5;16489:31;;;16514:5;16489:31;;;;;;:::i;:::-;;;;;;;;16454:78;16053:486;;;;:::o;12361:3064::-;12447:17;12499:1;12483:18;;:4;:18;;;12479:2671;;12534:5;12518:12;;:21;;;;;;;:::i;:::-;;;;;;;;12479:2671;;;12572:19;12594:9;:15;12604:4;12594:15;;;;;;;;;;;;;;;;12572:37;;12644:5;12630:11;:19;12626:117;;;12702:4;12708:11;12721:5;12677:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;12626:117;12769:7;:5;:7::i;:::-;12761:15;;:4;:15;;;;:32;;;;;12786:7;:5;:7::i;:::-;12780:13;;:2;:13;;;;12761:32;:57;;;;;12813:4;12797:21;;:4;:21;;;;12761:57;12757:2284;;;12865:13;:19;12879:4;12865:19;;;;;;;;;;;;;;;;;;;;;;;;;:64;;;;;12910:15;:19;12926:2;12910:19;;;;;;;;;;;;;;;;;;;;;;;;;12909:20;12865:64;:112;;;;;12955:18;:22;12974:2;12955:22;;;;;;;;;;;;;;;;;;;;;;;;;12954:23;12865:112;12839:420;;;13032:12;;13024:5;:20;13020:97;;;13080:13;;;;;;;;;;;;;;13020:97;13151:14;;13143:5;:22;13139:101;;;13201:15;;;;;;;;;;;;;;13139:101;12839:420;13553:3;13387:15;;13375:9;;:27;:125;;13486:14;;13375:125;;;13438:12;;13375:125;13311:5;:216;;;;:::i;:::-;13310:247;;;;:::i;:::-;13277:280;;13576:9;;:11;;;;;;;;;:::i;:::-;;;;;;13610:13;:17;13624:2;13610:17;;;;;;;;;;;;;;;;;;;;;;;;;:42;;;;;13647:4;13631:21;;:4;:21;;;;13610:42;13606:557;;;13689:12;;13681:5;:20;13677:97;;;13737:13;;;;;;;;;;;;;;13677:97;14104:3;13919:16;;13906:10;;:29;:137;;14028:15;;13906:137;;;13975:13;;13906:137;13834:5;:240;;;;:::i;:::-;13833:275;;;;:::i;:::-;13796:312;;14131:10;;:12;;;;;;;;;:::i;:::-;;;;;;13606:557;14197:1;14185:9;:13;14181:259;;;14232:9;14223:18;;;;;:::i;:::-;;;14292:9;14264;:24;14282:4;14264:24;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;14343:9;14324;:15;14334:4;14324:15;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;14403:4;14380:40;;14389:4;14380:40;;;14410:9;14380:40;;;;;;:::i;:::-;;;;;;;;14181:259;14460:28;14491:24;14509:4;14491:9;:24::i;:::-;14460:55;;14561:6;;;;;;;;;;;14560:7;:49;;;;;14592:13;:17;14606:2;14592:17;;;;;;;;;;;;;;;;;;;;;;;;;14560:49;:85;;;;;14634:11;;;;;;;;;;;14560:85;:159;;;;;14715:3;14710:1;14695:12;;:16;;;;:::i;:::-;14694:24;;;;:::i;:::-;14670:20;:49;14560:159;14534:492;;;14762:38;14779:20;14762:16;:38::i;:::-;14823:26;14852:21;14823:50;;14921:1;14900:18;:22;14896:111;;;14951:32;14964:18;14951:12;:32::i;:::-;14896:111;14739:287;14534:492;12820:2221;12757:2284;15118:5;15104:11;:19;15086:9;:15;15096:4;15086:15;;;;;;;;;;;;;;;:37;;;;12557:2593;12479:2671;15180:1;15166:16;;:2;:16;;;15162:213;;15244:5;15228:12;;:21;;;;;;;;;;;15162:213;;;15343:5;15326:9;:13;15336:2;15326:13;;;;;;;;;;;;;;;;:22;;;;;;;;;;;15162:213;15407:2;15392:25;;15401:4;15392:25;;;15411:5;15392:25;;;;;;:::i;:::-;;;;;;;;12436:2989;12361:3064;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1323:117::-;1432:1;1429;1422:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:118::-;3426:24;3444:5;3426:24;:::i;:::-;3421:3;3414:37;3339:118;;:::o;3463:222::-;3556:4;3594:2;3583:9;3579:18;3571:26;;3607:71;3675:1;3664:9;3660:17;3651:6;3607:71;:::i;:::-;3463:222;;;;:::o;3691:619::-;3768:6;3776;3784;3833:2;3821:9;3812:7;3808:23;3804:32;3801:119;;;3839:79;;:::i;:::-;3801:119;3959:1;3984:53;4029:7;4020:6;4009:9;4005:22;3984:53;:::i;:::-;3974:63;;3930:117;4086:2;4112:53;4157:7;4148:6;4137:9;4133:22;4112:53;:::i;:::-;4102:63;;4057:118;4214:2;4240:53;4285:7;4276:6;4265:9;4261:22;4240:53;:::i;:::-;4230:63;;4185:118;3691:619;;;;;:::o;4316:116::-;4386:21;4401:5;4386:21;:::i;:::-;4379:5;4376:32;4366:60;;4422:1;4419;4412:12;4366:60;4316:116;:::o;4438:133::-;4481:5;4519:6;4506:20;4497:29;;4535:30;4559:5;4535:30;:::i;:::-;4438:133;;;;:::o;4577:468::-;4642:6;4650;4699:2;4687:9;4678:7;4674:23;4670:32;4667:119;;;4705:79;;:::i;:::-;4667:119;4825:1;4850:53;4895:7;4886:6;4875:9;4871:22;4850:53;:::i;:::-;4840:63;;4796:117;4952:2;4978:50;5020:7;5011:6;5000:9;4996:22;4978:50;:::i;:::-;4968:60;;4923:115;4577:468;;;;;:::o;5051:86::-;5086:7;5126:4;5119:5;5115:16;5104:27;;5051:86;;;:::o;5143:112::-;5226:22;5242:5;5226:22;:::i;:::-;5221:3;5214:35;5143:112;;:::o;5261:214::-;5350:4;5388:2;5377:9;5373:18;5365:26;;5401:67;5465:1;5454:9;5450:17;5441:6;5401:67;:::i;:::-;5261:214;;;;:::o;5481:329::-;5540:6;5589:2;5577:9;5568:7;5564:23;5560:32;5557:119;;;5595:79;;:::i;:::-;5557:119;5715:1;5740:53;5785:7;5776:6;5765:9;5761:22;5740:53;:::i;:::-;5730:63;;5686:117;5481:329;;;;:::o;5816:118::-;5903:24;5921:5;5903:24;:::i;:::-;5898:3;5891:37;5816:118;;:::o;5940:222::-;6033:4;6071:2;6060:9;6056:18;6048:26;;6084:71;6152:1;6141:9;6137:17;6128:6;6084:71;:::i;:::-;5940:222;;;;:::o;6168:474::-;6236:6;6244;6293:2;6281:9;6272:7;6268:23;6264:32;6261:119;;;6299:79;;:::i;:::-;6261:119;6419:1;6444:53;6489:7;6480:6;6469:9;6465:22;6444:53;:::i;:::-;6434:63;;6390:117;6546:2;6572:53;6617:7;6608:6;6597:9;6593:22;6572:53;:::i;:::-;6562:63;;6517:118;6168:474;;;;;:::o;6648:104::-;6693:7;6722:24;6740:5;6722:24;:::i;:::-;6711:35;;6648:104;;;:::o;6758:138::-;6839:32;6865:5;6839:32;:::i;:::-;6832:5;6829:43;6819:71;;6886:1;6883;6876:12;6819:71;6758:138;:::o;6902:155::-;6956:5;6994:6;6981:20;6972:29;;7010:41;7045:5;7010:41;:::i;:::-;6902:155;;;;:::o;7063:345::-;7130:6;7179:2;7167:9;7158:7;7154:23;7150:32;7147:119;;;7185:79;;:::i;:::-;7147:119;7305:1;7330:61;7383:7;7374:6;7363:9;7359:22;7330:61;:::i;:::-;7320:71;;7276:125;7063:345;;;;:::o;7414:180::-;7462:77;7459:1;7452:88;7559:4;7556:1;7549:15;7583:4;7580:1;7573:15;7600:320;7644:6;7681:1;7675:4;7671:12;7661:22;;7728:1;7722:4;7718:12;7749:18;7739:81;;7805:4;7797:6;7793:17;7783:27;;7739:81;7867:2;7859:6;7856:14;7836:18;7833:38;7830:84;;7886:18;;:::i;:::-;7830:84;7651:269;7600:320;;;:::o;7926:180::-;7974:77;7971:1;7964:88;8071:4;8068:1;8061:15;8095:4;8092:1;8085:15;8112:191;8152:3;8171:20;8189:1;8171:20;:::i;:::-;8166:25;;8205:20;8223:1;8205:20;:::i;:::-;8200:25;;8248:1;8245;8241:9;8234:16;;8269:3;8266:1;8263:10;8260:36;;;8276:18;;:::i;:::-;8260:36;8112:191;;;;:::o;8309:442::-;8458:4;8496:2;8485:9;8481:18;8473:26;;8509:71;8577:1;8566:9;8562:17;8553:6;8509:71;:::i;:::-;8590:72;8658:2;8647:9;8643:18;8634:6;8590:72;:::i;:::-;8672;8740:2;8729:9;8725:18;8716:6;8672:72;:::i;:::-;8309:442;;;;;;:::o;8757:143::-;8814:5;8845:6;8839:13;8830:22;;8861:33;8888:5;8861:33;:::i;:::-;8757:143;;;;:::o;8906:351::-;8976:6;9025:2;9013:9;9004:7;9000:23;8996:32;8993:119;;;9031:79;;:::i;:::-;8993:119;9151:1;9176:64;9232:7;9223:6;9212:9;9208:22;9176:64;:::i;:::-;9166:74;;9122:128;8906:351;;;;:::o;9263:332::-;9384:4;9422:2;9411:9;9407:18;9399:26;;9435:71;9503:1;9492:9;9488:17;9479:6;9435:71;:::i;:::-;9516:72;9584:2;9573:9;9569:18;9560:6;9516:72;:::i;:::-;9263:332;;;;;:::o;9601:85::-;9646:7;9675:5;9664:16;;9601:85;;;:::o;9692:60::-;9720:3;9741:5;9734:12;;9692:60;;;:::o;9758:158::-;9816:9;9849:61;9867:42;9876:32;9902:5;9876:32;:::i;:::-;9867:42;:::i;:::-;9849:61;:::i;:::-;9836:74;;9758:158;;;:::o;9922:147::-;10017:45;10056:5;10017:45;:::i;:::-;10012:3;10005:58;9922:147;;:::o;10075:807::-;10324:4;10362:3;10351:9;10347:19;10339:27;;10376:71;10444:1;10433:9;10429:17;10420:6;10376:71;:::i;:::-;10457:72;10525:2;10514:9;10510:18;10501:6;10457:72;:::i;:::-;10539:80;10615:2;10604:9;10600:18;10591:6;10539:80;:::i;:::-;10629;10705:2;10694:9;10690:18;10681:6;10629:80;:::i;:::-;10719:73;10787:3;10776:9;10772:19;10763:6;10719:73;:::i;:::-;10802;10870:3;10859:9;10855:19;10846:6;10802:73;:::i;:::-;10075:807;;;;;;;;;:::o;10888:143::-;10945:5;10976:6;10970:13;10961:22;;10992:33;11019:5;10992:33;:::i;:::-;10888:143;;;;:::o;11037:663::-;11125:6;11133;11141;11190:2;11178:9;11169:7;11165:23;11161:32;11158:119;;;11196:79;;:::i;:::-;11158:119;11316:1;11341:64;11397:7;11388:6;11377:9;11373:22;11341:64;:::i;:::-;11331:74;;11287:128;11454:2;11480:64;11536:7;11527:6;11516:9;11512:22;11480:64;:::i;:::-;11470:74;;11425:129;11593:2;11619:64;11675:7;11666:6;11655:9;11651:22;11619:64;:::i;:::-;11609:74;;11564:129;11037:663;;;;;:::o;11706:332::-;11827:4;11865:2;11854:9;11850:18;11842:26;;11878:71;11946:1;11935:9;11931:17;11922:6;11878:71;:::i;:::-;11959:72;12027:2;12016:9;12012:18;12003:6;11959:72;:::i;:::-;11706:332;;;;;:::o;12044:137::-;12098:5;12129:6;12123:13;12114:22;;12145:30;12169:5;12145:30;:::i;:::-;12044:137;;;;:::o;12187:345::-;12254:6;12303:2;12291:9;12282:7;12278:23;12274:32;12271:119;;;12309:79;;:::i;:::-;12271:119;12429:1;12454:61;12507:7;12498:6;12487:9;12483:22;12454:61;:::i;:::-;12444:71;;12400:125;12187:345;;;;:::o;12538:147::-;12639:11;12676:3;12661:18;;12538:147;;;;:::o;12691:114::-;;:::o;12811:398::-;12970:3;12991:83;13072:1;13067:3;12991:83;:::i;:::-;12984:90;;13083:93;13172:3;13083:93;:::i;:::-;13201:1;13196:3;13192:11;13185:18;;12811:398;;;:::o;13215:379::-;13399:3;13421:147;13564:3;13421:147;:::i;:::-;13414:154;;13585:3;13578:10;;13215:379;;;:::o;13600:351::-;13670:6;13719:2;13707:9;13698:7;13694:23;13690:32;13687:119;;;13725:79;;:::i;:::-;13687:119;13845:1;13870:64;13926:7;13917:6;13906:9;13902:22;13870:64;:::i;:::-;13860:74;;13816:128;13600:351;;;;:::o;13957:180::-;14005:77;14002:1;13995:88;14102:4;14099:1;14092:15;14126:4;14123:1;14116:15;14143:180;14191:77;14188:1;14181:88;14288:4;14285:1;14278:15;14312:4;14309:1;14302:15;14329:114;14396:6;14430:5;14424:12;14414:22;;14329:114;;;:::o;14449:184::-;14548:11;14582:6;14577:3;14570:19;14622:4;14617:3;14613:14;14598:29;;14449:184;;;;:::o;14639:132::-;14706:4;14729:3;14721:11;;14759:4;14754:3;14750:14;14742:22;;14639:132;;;:::o;14777:108::-;14854:24;14872:5;14854:24;:::i;:::-;14849:3;14842:37;14777:108;;:::o;14891:179::-;14960:10;14981:46;15023:3;15015:6;14981:46;:::i;:::-;15059:4;15054:3;15050:14;15036:28;;14891:179;;;;:::o;15076:113::-;15146:4;15178;15173:3;15169:14;15161:22;;15076:113;;;:::o;15225:732::-;15344:3;15373:54;15421:5;15373:54;:::i;:::-;15443:86;15522:6;15517:3;15443:86;:::i;:::-;15436:93;;15553:56;15603:5;15553:56;:::i;:::-;15632:7;15663:1;15648:284;15673:6;15670:1;15667:13;15648:284;;;15749:6;15743:13;15776:63;15835:3;15820:13;15776:63;:::i;:::-;15769:70;;15862:60;15915:6;15862:60;:::i;:::-;15852:70;;15708:224;15695:1;15692;15688:9;15683:14;;15648:284;;;15652:14;15948:3;15941:10;;15349:608;;;15225:732;;;;:::o;15963:831::-;16226:4;16264:3;16253:9;16249:19;16241:27;;16278:71;16346:1;16335:9;16331:17;16322:6;16278:71;:::i;:::-;16359:80;16435:2;16424:9;16420:18;16411:6;16359:80;:::i;:::-;16486:9;16480:4;16476:20;16471:2;16460:9;16456:18;16449:48;16514:108;16617:4;16608:6;16514:108;:::i;:::-;16506:116;;16632:72;16700:2;16689:9;16685:18;16676:6;16632:72;:::i;:::-;16714:73;16782:3;16771:9;16767:19;16758:6;16714:73;:::i;:::-;15963:831;;;;;;;;:::o;16800:410::-;16840:7;16863:20;16881:1;16863:20;:::i;:::-;16858:25;;16897:20;16915:1;16897:20;:::i;:::-;16892:25;;16952:1;16949;16945:9;16974:30;16992:11;16974:30;:::i;:::-;16963:41;;17153:1;17144:7;17140:15;17137:1;17134:22;17114:1;17107:9;17087:83;17064:139;;17183:18;;:::i;:::-;17064:139;16848:362;16800:410;;;;:::o;17216:180::-;17264:77;17261:1;17254:88;17361:4;17358:1;17351:15;17385:4;17382:1;17375:15;17402:185;17442:1;17459:20;17477:1;17459:20;:::i;:::-;17454:25;;17493:20;17511:1;17493:20;:::i;:::-;17488:25;;17532:1;17522:35;;17537:18;;:::i;:::-;17522:35;17579:1;17576;17572:9;17567:14;;17402:185;;;;:::o;17593:233::-;17632:3;17655:24;17673:5;17655:24;:::i;:::-;17646:33;;17701:66;17694:5;17691:77;17688:103;;17771:18;;:::i;:::-;17688:103;17818:1;17811:5;17807:13;17800:20;;17593:233;;;:::o;17832:194::-;17872:4;17892:20;17910:1;17892:20;:::i;:::-;17887:25;;17926:20;17944:1;17926:20;:::i;:::-;17921:25;;17970:1;17967;17963:9;17955:17;;17994:1;17988:4;17985:11;17982:37;;;17999:18;;:::i;:::-;17982:37;17832:194;;;;:::o

Swarm Source

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