ETH Price: $3,286.31 (-10.60%)

Token

404 LAB (LAB)
 

Overview

Max Total Supply

100,000,000 LAB

Holders

227 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
staboi.eth
Balance
1,103,910.174774627 LAB

Value
$0.00
0xa66589142c46a20e747c68987a0cd46e5bc9ffc8
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Introducing 404 Lab: the forefront of ERC-404 token creation.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
LAB

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-02-13
*/

// SPDX-License-Identifier: MIT
/**

LAB 404
Telegram: https://t.me/labcoin404
Twitter: https://twitter.com/labcoin404
Website: http://404lab.space/
Bot: https://t.me/The_404lab_bot

**/

pragma solidity ^0.8.16;

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

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

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

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

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

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

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

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

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

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

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

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

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

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

}

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

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

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

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

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

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

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

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

contract LAB is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "404 LAB";
    string private constant _symbol = "LAB";
    uint8 private constant _decimals = 9;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 100000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 25;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 30;

    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;

    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;

    mapping (address => uint256) public _buyMap;
    address payable private _developmentAddress = payable(msg.sender);
    address payable private _marketingAddress = payable(msg.sender);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
 
    bool private tradingOpen = false;
    bool private inSwap = false;
    bool private swapEnabled = true;

    uint256 public _maxTxAmount = 2000000 * 10**9;
    uint256 public _maxWalletSize = 2000000 * 10**9;
    uint256 public _swapTokensAtAmount = 2500 * 10**9;

    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {

        _rOwned[_msgSender()] = _rTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_developmentAddress] = true;
        _isExcludedFromFee[_marketingAddress] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

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

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

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

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

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

    function tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }

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

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        if (from != owner() && to != owner()) {

            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");

            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;

            if(contractTokenBalance >= _maxTxAmount)
            {
                contractTokenBalance = _maxTxAmount;
            }

            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        bool takeFee = true;

        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {

            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }

            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }

        }

        _tokenTransfer(from, to, amount, takeFee);
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

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

    function openLab(bool _tradingOpen) public onlyOwner {
        tradingOpen = _tradingOpen;
    }

    function manualswap() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function manualsend() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {}

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _redisFee, _taxFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(
        uint256 tAmount,
        uint256 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function changeFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }

    //Set minimum tokens required to swap.
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }

    //Set minimum tokens required to swap.
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }

    function deleteallLimits() public onlyOwner {
        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;
    }

    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","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":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"changeFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"deleteallLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"openLab","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405267016345785d8a00005f196200001b9190620006d4565b5f1962000029919062000738565b6006555f60085560196009555f600a55601e600b55600a54600c55600b54600d55600c54600e55600d54600f553360115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503360125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f6014806101000a81548160ff0219169083151502179055505f601460156101000a81548160ff0219169083151502179055506001601460166101000a81548160ff02191690831515021790555066071afd498d000060155566071afd498d0000601655650246139ca80060175534801562000150575f80fd5b505f620001626200067060201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460025f620002146200067060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002f3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003199190620007d7565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200037f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003a59190620007d7565b6040518363ffffffff1660e01b8152600401620003c492919062000818565b6020604051808303815f875af1158015620003e1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620004079190620007d7565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160055f6200045b6200067760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620005fb6200067060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef67016345785d8a000060405162000661919062000854565b60405180910390a3506200086f565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620006e0826200069e565b9150620006ed836200069e565b9250826200070057620006ff620006a7565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000744826200069e565b915062000751836200069e565b92508282039050818111156200076c576200076b6200070b565b5b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620007a18262000776565b9050919050565b620007b38162000795565b8114620007be575f80fd5b50565b5f81519050620007d181620007a8565b92915050565b5f60208284031215620007ef57620007ee62000772565b5b5f620007fe84828501620007c1565b91505092915050565b620008128162000795565b82525050565b5f6040820190506200082d5f83018562000807565b6200083c602083018462000807565b9392505050565b6200084e816200069e565b82525050565b5f602082019050620008695f83018462000843565b92915050565b61342b806200087d5f395ff3fe608060405260043610610184575f3560e01c80637d1db4a5116100d0578063a9059cbb11610089578063c492f04611610063578063c492f0461461052f578063dd62ed3e14610557578063ecf0052314610593578063f2fde38b146105bb5761018b565b8063a9059cbb146104b5578063b1192e18146104f1578063c3c8cd80146105195761018b565b80637d1db4a5146103a95780637f2feddc146103d35780638da5cb5b1461040f5780638f9a55c01461043957806395d89b411461046357806398a5c3151461048d5761018b565b8063313ce5671161013d5780636fc3eaec116101175780636fc3eaec1461032b57806370a0823114610341578063715018a61461037d5780637785be7c146103935761018b565b8063313ce567146102af57806349bd5a5e146102d95780636d8aa8f8146103035761018b565b806306fdde031461018f578063095ea7b3146101b95780631694505e146101f557806318160ddd1461021f57806323b872dd146102495780632fd689e3146102855761018b565b3661018b57005b5f80fd5b34801561019a575f80fd5b506101a36105e3565b6040516101b0919061260c565b60405180910390f35b3480156101c4575f80fd5b506101df60048036038101906101da91906126c1565b610620565b6040516101ec9190612719565b60405180910390f35b348015610200575f80fd5b5061020961063d565b604051610216919061278d565b60405180910390f35b34801561022a575f80fd5b50610233610662565b60405161024091906127b5565b60405180910390f35b348015610254575f80fd5b5061026f600480360381019061026a91906127ce565b610671565b60405161027c9190612719565b60405180910390f35b348015610290575f80fd5b50610299610745565b6040516102a691906127b5565b60405180910390f35b3480156102ba575f80fd5b506102c361074b565b6040516102d09190612839565b60405180910390f35b3480156102e4575f80fd5b506102ed610753565b6040516102fa9190612861565b60405180910390f35b34801561030e575f80fd5b50610329600480360381019061032491906128a4565b610778565b005b348015610336575f80fd5b5061033f610829565b005b34801561034c575f80fd5b50610367600480360381019061036291906128cf565b6108f6565b60405161037491906127b5565b60405180910390f35b348015610388575f80fd5b50610391610944565b005b34801561039e575f80fd5b506103a7610a92565b005b3480156103b4575f80fd5b506103bd610b46565b6040516103ca91906127b5565b60405180910390f35b3480156103de575f80fd5b506103f960048036038101906103f491906128cf565b610b4c565b60405161040691906127b5565b60405180910390f35b34801561041a575f80fd5b50610423610b61565b6040516104309190612861565b60405180910390f35b348015610444575f80fd5b5061044d610b88565b60405161045a91906127b5565b60405180910390f35b34801561046e575f80fd5b50610477610b8e565b604051610484919061260c565b60405180910390f35b348015610498575f80fd5b506104b360048036038101906104ae91906128fa565b610bcb565b005b3480156104c0575f80fd5b506104db60048036038101906104d691906126c1565b610c69565b6040516104e89190612719565b60405180910390f35b3480156104fc575f80fd5b5061051760048036038101906105129190612925565b610c86565b005b348015610524575f80fd5b5061052d610d3c565b005b34801561053a575f80fd5b50610555600480360381019061055091906129ea565b610e11565b005b348015610562575f80fd5b5061057d60048036038101906105789190612a47565b610f40565b60405161058a91906127b5565b60405180910390f35b34801561059e575f80fd5b506105b960048036038101906105b491906128a4565b610fc2565b005b3480156105c6575f80fd5b506105e160048036038101906105dc91906128cf565b611072565b005b60606040518060400160405280600781526020017f343034204c414200000000000000000000000000000000000000000000000000815250905090565b5f61063361062c61122f565b8484611236565b6001905092915050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f67016345785d8a0000905090565b5f61067d8484846113f9565b61073a8461068961122f565b610735856040518060600160405280602881526020016133ce6028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6106ec61122f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611af49092919063ffffffff16565b611236565b600190509392505050565b60175481565b5f6009905090565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61078061122f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461080c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080390612acf565b60405180910390fd5b80601460166101000a81548160ff02191690831515021790555050565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661086961122f565b73ffffffffffffffffffffffffffffffffffffffff1614806108de575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108c661122f565b73ffffffffffffffffffffffffffffffffffffffff16145b6108e6575f80fd5b5f4790506108f381611b56565b50565b5f61093d60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611bbe565b9050919050565b61094c61122f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109cf90612acf565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610a9a61122f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1d90612acf565b60405180910390fd5b67016345785d8a000060158190555067016345785d8a0000601681905550565b60155481565b6010602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60165481565b60606040518060400160405280600381526020017f4c41420000000000000000000000000000000000000000000000000000000000815250905090565b610bd361122f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5690612acf565b60405180910390fd5b8060178190555050565b5f610c7c610c7561122f565b84846113f9565b6001905092915050565b610c8e61122f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1190612acf565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d7c61122f565b73ffffffffffffffffffffffffffffffffffffffff161480610df1575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610dd961122f565b73ffffffffffffffffffffffffffffffffffffffff16145b610df9575f80fd5b5f610e03306108f6565b9050610e0e81611c2a565b50565b610e1961122f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ea5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9c90612acf565b60405180910390fd5b5f5b83839050811015610f3a578160055f868685818110610ec957610ec8612aed565b5b9050602002016020810190610ede91906128cf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610ea7565b50505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610fca61122f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611056576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104d90612acf565b60405180910390fd5b806014806101000a81548160ff02191690831515021790555050565b61107a61122f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611106576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fd90612acf565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611174576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116b90612b8a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129b90612c18565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611312576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130990612ca6565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113ec91906127b5565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611467576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145e90612d34565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cc90612dc2565b60405180910390fd5b5f8111611517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150e90612e50565b60405180910390fd5b61151f610b61565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561158d575061155d610b61565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611801576015548111156115d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ce90612eb8565b60405180910390fd5b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146116835760165481611638846108f6565b6116429190612f03565b10611682576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167990612fa6565b60405180910390fd5b5b5f61168d306108f6565b90505f601754821015905060155482106116a75760155491505b8080156116c15750601460159054906101000a900460ff16155b801561171a575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156117325750601460169054906101000a900460ff165b8015611785575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156117d8575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156117fe576117e682611c2a565b5f4790505f8111156117fc576117fb47611b56565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806118a1575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611952575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611951575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b1561195f575f9050611ae2565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611a08575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611a2057600854600c81905550600954600d819055505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611ac9575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611ae157600a54600c81905550600b54600d819055505b5b611aee84848484611e95565b50505050565b5f838311158290611b3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b32919061260c565b60405180910390fd5b505f8385611b499190612fc4565b9050809150509392505050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611bba573d5f803e3d5ffd5b5050565b5f600654821115611c04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfb90613067565b60405180910390fd5b5f611c0d611ec2565b9050611c228184611eeb90919063ffffffff16565b915050919050565b6001601460156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611c6157611c60613085565b5b604051908082528060200260200182016040528015611c8f5781602001602082028036833780820191505090505b50905030815f81518110611ca657611ca5612aed565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d4a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d6e91906130c6565b81600181518110611d8257611d81612aed565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611de83060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611236565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611e4a9594939291906131e1565b5f604051808303815f87803b158015611e61575f80fd5b505af1158015611e73573d5f803e3d5ffd5b50505050505f601460156101000a81548160ff02191690831515021790555050565b80611ea357611ea2611f34565b5b611eae848484611f6d565b80611ebc57611ebb61212d565b5b50505050565b5f805f611ecd612141565b91509150611ee48183611eeb90919063ffffffff16565b9250505090565b5f611f2c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061219d565b905092915050565b5f600c54148015611f4657505f600d54145b611f6b57600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f80611f7c876121fe565b955095509550955095509550611fd88660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461225e90919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506120698560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122a790919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506120b381612304565b6120bd84836123bb565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161211a91906127b5565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b5f805f60065490505f67016345785d8a0000905061217267016345785d8a0000600654611eeb90919063ffffffff16565b8210156121905760065467016345785d8a0000935093505050612199565b81819350935050505b9091565b5f80831182906121e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121da919061260c565b60405180910390fd5b505f83856121f19190613266565b9050809150509392505050565b5f805f805f805f805f6122168a600c54600d546123f5565b9250925092505f612225611ec2565b90505f805f6122368e878787612487565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f61229f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611af4565b905092915050565b5f8082846122b59190612f03565b9050838110156122fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f1906132e0565b60405180910390fd5b8091505092915050565b5f61230d611ec2565b90505f612323828461250b90919063ffffffff16565b90506123758160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122a790919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b6123d08260065461225e90919063ffffffff16565b6006819055506123eb816007546122a790919063ffffffff16565b6007819055505050565b5f805f8061241f6064612411888a61250b90919063ffffffff16565b611eeb90919063ffffffff16565b90505f612448606461243a888b61250b90919063ffffffff16565b611eeb90919063ffffffff16565b90505f61247082612462858c61225e90919063ffffffff16565b61225e90919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f8061249e858961250b90919063ffffffff16565b90505f6124b4868961250b90919063ffffffff16565b90505f6124ca878961250b90919063ffffffff16565b90505f6124f2826124e4858761225e90919063ffffffff16565b61225e90919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f80830361251b575f905061257c565b5f828461252891906132fe565b90508284826125379190613266565b14612577576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256e906133af565b60405180910390fd5b809150505b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156125b957808201518184015260208101905061259e565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6125de82612582565b6125e8818561258c565b93506125f881856020860161259c565b612601816125c4565b840191505092915050565b5f6020820190508181035f83015261262481846125d4565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61265d82612634565b9050919050565b61266d81612653565b8114612677575f80fd5b50565b5f8135905061268881612664565b92915050565b5f819050919050565b6126a08161268e565b81146126aa575f80fd5b50565b5f813590506126bb81612697565b92915050565b5f80604083850312156126d7576126d661262c565b5b5f6126e48582860161267a565b92505060206126f5858286016126ad565b9150509250929050565b5f8115159050919050565b612713816126ff565b82525050565b5f60208201905061272c5f83018461270a565b92915050565b5f819050919050565b5f61275561275061274b84612634565b612732565b612634565b9050919050565b5f6127668261273b565b9050919050565b5f6127778261275c565b9050919050565b6127878161276d565b82525050565b5f6020820190506127a05f83018461277e565b92915050565b6127af8161268e565b82525050565b5f6020820190506127c85f8301846127a6565b92915050565b5f805f606084860312156127e5576127e461262c565b5b5f6127f28682870161267a565b93505060206128038682870161267a565b9250506040612814868287016126ad565b9150509250925092565b5f60ff82169050919050565b6128338161281e565b82525050565b5f60208201905061284c5f83018461282a565b92915050565b61285b81612653565b82525050565b5f6020820190506128745f830184612852565b92915050565b612883816126ff565b811461288d575f80fd5b50565b5f8135905061289e8161287a565b92915050565b5f602082840312156128b9576128b861262c565b5b5f6128c684828501612890565b91505092915050565b5f602082840312156128e4576128e361262c565b5b5f6128f18482850161267a565b91505092915050565b5f6020828403121561290f5761290e61262c565b5b5f61291c848285016126ad565b91505092915050565b5f805f806080858703121561293d5761293c61262c565b5b5f61294a878288016126ad565b945050602061295b878288016126ad565b935050604061296c878288016126ad565b925050606061297d878288016126ad565b91505092959194509250565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126129aa576129a9612989565b5b8235905067ffffffffffffffff8111156129c7576129c661298d565b5b6020830191508360208202830111156129e3576129e2612991565b5b9250929050565b5f805f60408486031215612a0157612a0061262c565b5b5f84013567ffffffffffffffff811115612a1e57612a1d612630565b5b612a2a86828701612995565b93509350506020612a3d86828701612890565b9150509250925092565b5f8060408385031215612a5d57612a5c61262c565b5b5f612a6a8582860161267a565b9250506020612a7b8582860161267a565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612ab960208361258c565b9150612ac482612a85565b602082019050919050565b5f6020820190508181035f830152612ae681612aad565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612b7460268361258c565b9150612b7f82612b1a565b604082019050919050565b5f6020820190508181035f830152612ba181612b68565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612c0260248361258c565b9150612c0d82612ba8565b604082019050919050565b5f6020820190508181035f830152612c2f81612bf6565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612c9060228361258c565b9150612c9b82612c36565b604082019050919050565b5f6020820190508181035f830152612cbd81612c84565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612d1e60258361258c565b9150612d2982612cc4565b604082019050919050565b5f6020820190508181035f830152612d4b81612d12565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612dac60238361258c565b9150612db782612d52565b604082019050919050565b5f6020820190508181035f830152612dd981612da0565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612e3a60298361258c565b9150612e4582612de0565b604082019050919050565b5f6020820190508181035f830152612e6781612e2e565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f612ea2601c8361258c565b9150612ead82612e6e565b602082019050919050565b5f6020820190508181035f830152612ecf81612e96565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612f0d8261268e565b9150612f188361268e565b9250828201905080821115612f3057612f2f612ed6565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f612f9060238361258c565b9150612f9b82612f36565b604082019050919050565b5f6020820190508181035f830152612fbd81612f84565b9050919050565b5f612fce8261268e565b9150612fd98361268e565b9250828203905081811115612ff157612ff0612ed6565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f613051602a8361258c565b915061305c82612ff7565b604082019050919050565b5f6020820190508181035f83015261307e81613045565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f815190506130c081612664565b92915050565b5f602082840312156130db576130da61262c565b5b5f6130e8848285016130b2565b91505092915050565b5f819050919050565b5f61311461310f61310a846130f1565b612732565b61268e565b9050919050565b613124816130fa565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61315c81612653565b82525050565b5f61316d8383613153565b60208301905092915050565b5f602082019050919050565b5f61318f8261312a565b6131998185613134565b93506131a483613144565b805f5b838110156131d45781516131bb8882613162565b97506131c683613179565b9250506001810190506131a7565b5085935050505092915050565b5f60a0820190506131f45f8301886127a6565b613201602083018761311b565b81810360408301526132138186613185565b90506132226060830185612852565b61322f60808301846127a6565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6132708261268e565b915061327b8361268e565b92508261328b5761328a613239565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6132ca601b8361258c565b91506132d582613296565b602082019050919050565b5f6020820190508181035f8301526132f7816132be565b9050919050565b5f6133088261268e565b91506133138361268e565b92508282026133218161268e565b9150828204841483151761333857613337612ed6565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61339960218361258c565b91506133a48261333f565b604082019050919050565b5f6020820190508181035f8301526133c68161338d565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212205735617282924808fdbfa0d174b3bd967d90b2d24b155c4b2868f305a81f045864736f6c63430008180033

Deployed Bytecode

0x608060405260043610610184575f3560e01c80637d1db4a5116100d0578063a9059cbb11610089578063c492f04611610063578063c492f0461461052f578063dd62ed3e14610557578063ecf0052314610593578063f2fde38b146105bb5761018b565b8063a9059cbb146104b5578063b1192e18146104f1578063c3c8cd80146105195761018b565b80637d1db4a5146103a95780637f2feddc146103d35780638da5cb5b1461040f5780638f9a55c01461043957806395d89b411461046357806398a5c3151461048d5761018b565b8063313ce5671161013d5780636fc3eaec116101175780636fc3eaec1461032b57806370a0823114610341578063715018a61461037d5780637785be7c146103935761018b565b8063313ce567146102af57806349bd5a5e146102d95780636d8aa8f8146103035761018b565b806306fdde031461018f578063095ea7b3146101b95780631694505e146101f557806318160ddd1461021f57806323b872dd146102495780632fd689e3146102855761018b565b3661018b57005b5f80fd5b34801561019a575f80fd5b506101a36105e3565b6040516101b0919061260c565b60405180910390f35b3480156101c4575f80fd5b506101df60048036038101906101da91906126c1565b610620565b6040516101ec9190612719565b60405180910390f35b348015610200575f80fd5b5061020961063d565b604051610216919061278d565b60405180910390f35b34801561022a575f80fd5b50610233610662565b60405161024091906127b5565b60405180910390f35b348015610254575f80fd5b5061026f600480360381019061026a91906127ce565b610671565b60405161027c9190612719565b60405180910390f35b348015610290575f80fd5b50610299610745565b6040516102a691906127b5565b60405180910390f35b3480156102ba575f80fd5b506102c361074b565b6040516102d09190612839565b60405180910390f35b3480156102e4575f80fd5b506102ed610753565b6040516102fa9190612861565b60405180910390f35b34801561030e575f80fd5b50610329600480360381019061032491906128a4565b610778565b005b348015610336575f80fd5b5061033f610829565b005b34801561034c575f80fd5b50610367600480360381019061036291906128cf565b6108f6565b60405161037491906127b5565b60405180910390f35b348015610388575f80fd5b50610391610944565b005b34801561039e575f80fd5b506103a7610a92565b005b3480156103b4575f80fd5b506103bd610b46565b6040516103ca91906127b5565b60405180910390f35b3480156103de575f80fd5b506103f960048036038101906103f491906128cf565b610b4c565b60405161040691906127b5565b60405180910390f35b34801561041a575f80fd5b50610423610b61565b6040516104309190612861565b60405180910390f35b348015610444575f80fd5b5061044d610b88565b60405161045a91906127b5565b60405180910390f35b34801561046e575f80fd5b50610477610b8e565b604051610484919061260c565b60405180910390f35b348015610498575f80fd5b506104b360048036038101906104ae91906128fa565b610bcb565b005b3480156104c0575f80fd5b506104db60048036038101906104d691906126c1565b610c69565b6040516104e89190612719565b60405180910390f35b3480156104fc575f80fd5b5061051760048036038101906105129190612925565b610c86565b005b348015610524575f80fd5b5061052d610d3c565b005b34801561053a575f80fd5b50610555600480360381019061055091906129ea565b610e11565b005b348015610562575f80fd5b5061057d60048036038101906105789190612a47565b610f40565b60405161058a91906127b5565b60405180910390f35b34801561059e575f80fd5b506105b960048036038101906105b491906128a4565b610fc2565b005b3480156105c6575f80fd5b506105e160048036038101906105dc91906128cf565b611072565b005b60606040518060400160405280600781526020017f343034204c414200000000000000000000000000000000000000000000000000815250905090565b5f61063361062c61122f565b8484611236565b6001905092915050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f67016345785d8a0000905090565b5f61067d8484846113f9565b61073a8461068961122f565b610735856040518060600160405280602881526020016133ce6028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6106ec61122f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611af49092919063ffffffff16565b611236565b600190509392505050565b60175481565b5f6009905090565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61078061122f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461080c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080390612acf565b60405180910390fd5b80601460166101000a81548160ff02191690831515021790555050565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661086961122f565b73ffffffffffffffffffffffffffffffffffffffff1614806108de575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108c661122f565b73ffffffffffffffffffffffffffffffffffffffff16145b6108e6575f80fd5b5f4790506108f381611b56565b50565b5f61093d60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611bbe565b9050919050565b61094c61122f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109cf90612acf565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610a9a61122f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1d90612acf565b60405180910390fd5b67016345785d8a000060158190555067016345785d8a0000601681905550565b60155481565b6010602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60165481565b60606040518060400160405280600381526020017f4c41420000000000000000000000000000000000000000000000000000000000815250905090565b610bd361122f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5690612acf565b60405180910390fd5b8060178190555050565b5f610c7c610c7561122f565b84846113f9565b6001905092915050565b610c8e61122f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1190612acf565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d7c61122f565b73ffffffffffffffffffffffffffffffffffffffff161480610df1575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610dd961122f565b73ffffffffffffffffffffffffffffffffffffffff16145b610df9575f80fd5b5f610e03306108f6565b9050610e0e81611c2a565b50565b610e1961122f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ea5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9c90612acf565b60405180910390fd5b5f5b83839050811015610f3a578160055f868685818110610ec957610ec8612aed565b5b9050602002016020810190610ede91906128cf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610ea7565b50505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610fca61122f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611056576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104d90612acf565b60405180910390fd5b806014806101000a81548160ff02191690831515021790555050565b61107a61122f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611106576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fd90612acf565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611174576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116b90612b8a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129b90612c18565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611312576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130990612ca6565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113ec91906127b5565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611467576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145e90612d34565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cc90612dc2565b60405180910390fd5b5f8111611517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150e90612e50565b60405180910390fd5b61151f610b61565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561158d575061155d610b61565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611801576015548111156115d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ce90612eb8565b60405180910390fd5b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146116835760165481611638846108f6565b6116429190612f03565b10611682576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167990612fa6565b60405180910390fd5b5b5f61168d306108f6565b90505f601754821015905060155482106116a75760155491505b8080156116c15750601460159054906101000a900460ff16155b801561171a575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156117325750601460169054906101000a900460ff165b8015611785575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156117d8575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156117fe576117e682611c2a565b5f4790505f8111156117fc576117fb47611b56565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806118a1575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611952575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611951575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b1561195f575f9050611ae2565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611a08575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611a2057600854600c81905550600954600d819055505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611ac9575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611ae157600a54600c81905550600b54600d819055505b5b611aee84848484611e95565b50505050565b5f838311158290611b3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b32919061260c565b60405180910390fd5b505f8385611b499190612fc4565b9050809150509392505050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611bba573d5f803e3d5ffd5b5050565b5f600654821115611c04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfb90613067565b60405180910390fd5b5f611c0d611ec2565b9050611c228184611eeb90919063ffffffff16565b915050919050565b6001601460156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611c6157611c60613085565b5b604051908082528060200260200182016040528015611c8f5781602001602082028036833780820191505090505b50905030815f81518110611ca657611ca5612aed565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d4a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d6e91906130c6565b81600181518110611d8257611d81612aed565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611de83060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611236565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611e4a9594939291906131e1565b5f604051808303815f87803b158015611e61575f80fd5b505af1158015611e73573d5f803e3d5ffd5b50505050505f601460156101000a81548160ff02191690831515021790555050565b80611ea357611ea2611f34565b5b611eae848484611f6d565b80611ebc57611ebb61212d565b5b50505050565b5f805f611ecd612141565b91509150611ee48183611eeb90919063ffffffff16565b9250505090565b5f611f2c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061219d565b905092915050565b5f600c54148015611f4657505f600d54145b611f6b57600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f80611f7c876121fe565b955095509550955095509550611fd88660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461225e90919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506120698560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122a790919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506120b381612304565b6120bd84836123bb565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161211a91906127b5565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b5f805f60065490505f67016345785d8a0000905061217267016345785d8a0000600654611eeb90919063ffffffff16565b8210156121905760065467016345785d8a0000935093505050612199565b81819350935050505b9091565b5f80831182906121e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121da919061260c565b60405180910390fd5b505f83856121f19190613266565b9050809150509392505050565b5f805f805f805f805f6122168a600c54600d546123f5565b9250925092505f612225611ec2565b90505f805f6122368e878787612487565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f61229f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611af4565b905092915050565b5f8082846122b59190612f03565b9050838110156122fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f1906132e0565b60405180910390fd5b8091505092915050565b5f61230d611ec2565b90505f612323828461250b90919063ffffffff16565b90506123758160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122a790919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b6123d08260065461225e90919063ffffffff16565b6006819055506123eb816007546122a790919063ffffffff16565b6007819055505050565b5f805f8061241f6064612411888a61250b90919063ffffffff16565b611eeb90919063ffffffff16565b90505f612448606461243a888b61250b90919063ffffffff16565b611eeb90919063ffffffff16565b90505f61247082612462858c61225e90919063ffffffff16565b61225e90919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f8061249e858961250b90919063ffffffff16565b90505f6124b4868961250b90919063ffffffff16565b90505f6124ca878961250b90919063ffffffff16565b90505f6124f2826124e4858761225e90919063ffffffff16565b61225e90919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f80830361251b575f905061257c565b5f828461252891906132fe565b90508284826125379190613266565b14612577576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256e906133af565b60405180910390fd5b809150505b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156125b957808201518184015260208101905061259e565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6125de82612582565b6125e8818561258c565b93506125f881856020860161259c565b612601816125c4565b840191505092915050565b5f6020820190508181035f83015261262481846125d4565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61265d82612634565b9050919050565b61266d81612653565b8114612677575f80fd5b50565b5f8135905061268881612664565b92915050565b5f819050919050565b6126a08161268e565b81146126aa575f80fd5b50565b5f813590506126bb81612697565b92915050565b5f80604083850312156126d7576126d661262c565b5b5f6126e48582860161267a565b92505060206126f5858286016126ad565b9150509250929050565b5f8115159050919050565b612713816126ff565b82525050565b5f60208201905061272c5f83018461270a565b92915050565b5f819050919050565b5f61275561275061274b84612634565b612732565b612634565b9050919050565b5f6127668261273b565b9050919050565b5f6127778261275c565b9050919050565b6127878161276d565b82525050565b5f6020820190506127a05f83018461277e565b92915050565b6127af8161268e565b82525050565b5f6020820190506127c85f8301846127a6565b92915050565b5f805f606084860312156127e5576127e461262c565b5b5f6127f28682870161267a565b93505060206128038682870161267a565b9250506040612814868287016126ad565b9150509250925092565b5f60ff82169050919050565b6128338161281e565b82525050565b5f60208201905061284c5f83018461282a565b92915050565b61285b81612653565b82525050565b5f6020820190506128745f830184612852565b92915050565b612883816126ff565b811461288d575f80fd5b50565b5f8135905061289e8161287a565b92915050565b5f602082840312156128b9576128b861262c565b5b5f6128c684828501612890565b91505092915050565b5f602082840312156128e4576128e361262c565b5b5f6128f18482850161267a565b91505092915050565b5f6020828403121561290f5761290e61262c565b5b5f61291c848285016126ad565b91505092915050565b5f805f806080858703121561293d5761293c61262c565b5b5f61294a878288016126ad565b945050602061295b878288016126ad565b935050604061296c878288016126ad565b925050606061297d878288016126ad565b91505092959194509250565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126129aa576129a9612989565b5b8235905067ffffffffffffffff8111156129c7576129c661298d565b5b6020830191508360208202830111156129e3576129e2612991565b5b9250929050565b5f805f60408486031215612a0157612a0061262c565b5b5f84013567ffffffffffffffff811115612a1e57612a1d612630565b5b612a2a86828701612995565b93509350506020612a3d86828701612890565b9150509250925092565b5f8060408385031215612a5d57612a5c61262c565b5b5f612a6a8582860161267a565b9250506020612a7b8582860161267a565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612ab960208361258c565b9150612ac482612a85565b602082019050919050565b5f6020820190508181035f830152612ae681612aad565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612b7460268361258c565b9150612b7f82612b1a565b604082019050919050565b5f6020820190508181035f830152612ba181612b68565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612c0260248361258c565b9150612c0d82612ba8565b604082019050919050565b5f6020820190508181035f830152612c2f81612bf6565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612c9060228361258c565b9150612c9b82612c36565b604082019050919050565b5f6020820190508181035f830152612cbd81612c84565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612d1e60258361258c565b9150612d2982612cc4565b604082019050919050565b5f6020820190508181035f830152612d4b81612d12565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612dac60238361258c565b9150612db782612d52565b604082019050919050565b5f6020820190508181035f830152612dd981612da0565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612e3a60298361258c565b9150612e4582612de0565b604082019050919050565b5f6020820190508181035f830152612e6781612e2e565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f612ea2601c8361258c565b9150612ead82612e6e565b602082019050919050565b5f6020820190508181035f830152612ecf81612e96565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612f0d8261268e565b9150612f188361268e565b9250828201905080821115612f3057612f2f612ed6565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f612f9060238361258c565b9150612f9b82612f36565b604082019050919050565b5f6020820190508181035f830152612fbd81612f84565b9050919050565b5f612fce8261268e565b9150612fd98361268e565b9250828203905081811115612ff157612ff0612ed6565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f613051602a8361258c565b915061305c82612ff7565b604082019050919050565b5f6020820190508181035f83015261307e81613045565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f815190506130c081612664565b92915050565b5f602082840312156130db576130da61262c565b5b5f6130e8848285016130b2565b91505092915050565b5f819050919050565b5f61311461310f61310a846130f1565b612732565b61268e565b9050919050565b613124816130fa565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61315c81612653565b82525050565b5f61316d8383613153565b60208301905092915050565b5f602082019050919050565b5f61318f8261312a565b6131998185613134565b93506131a483613144565b805f5b838110156131d45781516131bb8882613162565b97506131c683613179565b9250506001810190506131a7565b5085935050505092915050565b5f60a0820190506131f45f8301886127a6565b613201602083018761311b565b81810360408301526132138186613185565b90506132226060830185612852565b61322f60808301846127a6565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6132708261268e565b915061327b8361268e565b92508261328b5761328a613239565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6132ca601b8361258c565b91506132d582613296565b602082019050919050565b5f6020820190508181035f8301526132f7816132be565b9050919050565b5f6133088261268e565b91506133138361268e565b92508282026133218161268e565b9150828204841483151761333857613337612ed6565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61339960218361258c565b91506133a48261333f565b604082019050919050565b5f6020820190508181035f8301526133c68161338d565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212205735617282924808fdbfa0d174b3bd967d90b2d24b155c4b2868f305a81f045864736f6c63430008180033

Deployed Bytecode Sourcemap

4228:12687:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6615:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7540:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5461:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6892:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7741:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5766:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6801:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5509:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16439:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12261:235;;;;;;;;;;;;;:::i;:::-;;6995:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1715:148;;;;;;;;;;;;;:::i;:::-;;16548:120;;;;;;;;;;;;;:::i;:::-;;5660:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5267:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1501:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5712:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6706:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16248:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7141:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15902:294;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12017:236;;;;;;;;;;;;;:::i;:::-;;16676:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7348:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11911:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1871:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6615:83;6652:13;6685:5;;;;;;;;;;;;;;;;;6678:12;;6615:83;:::o;7540:193::-;7642:4;7664:39;7673:12;:10;:12::i;:::-;7687:7;7696:6;7664:8;:39::i;:::-;7721:4;7714:11;;7540:193;;;;:::o;5461:41::-;;;;;;;;;;;;;:::o;6892:95::-;6945:7;4768:17;6965:14;;6892:95;:::o;7741:446::-;7873:4;7890:36;7900:6;7908:9;7919:6;7890:9;:36::i;:::-;7937:220;7960:6;7981:12;:10;:12::i;:::-;8008:138;8064:6;8008:138;;;;;;;;;;;;;;;;;:11;:19;8020:6;8008:19;;;;;;;;;;;;;;;:33;8028:12;:10;:12::i;:::-;8008:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;7937:8;:220::i;:::-;8175:4;8168:11;;7741:446;;;;;:::o;5766:49::-;;;;:::o;6801:83::-;6842:5;4442:1;6860:16;;6801:83;:::o;5509:28::-;;;;;;;;;;;;;:::o;16439:101::-;1638:12;:10;:12::i;:::-;1628:22;;:6;;;;;;;;;;:22;;;1620:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16520:12:::1;16506:11;;:26;;;;;;;;;;;;;;;;;;16439:101:::0;:::o;12261:235::-;12327:19;;;;;;;;;;;12311:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12366:17;;;;;;;;;;;12350:33;;:12;:10;:12::i;:::-;:33;;;12311:72;12303:81;;;;;;12395:26;12424:21;12395:50;;12456:32;12469:18;12456:12;:32::i;:::-;12292:204;12261:235::o;6995:138::-;7061:7;7088:37;7108:7;:16;7116:7;7108:16;;;;;;;;;;;;;;;;7088:19;:37::i;:::-;7081:44;;6995:138;;;:::o;1715:148::-;1638:12;:10;:12::i;:::-;1628:22;;:6;;;;;;;;;;:22;;;1620:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1822:1:::1;1785:40;;1806:6;::::0;::::1;;;;;;;;1785:40;;;;;;;;;;;;1853:1;1836:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1715:148::o:0;16548:120::-;1638:12;:10;:12::i;:::-;1628:22;;:6;;;;;;;;;;:22;;;1620:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4768:17:::1;16603:12;:22;;;;4768:17;16636:14;:24;;;;16548:120::o:0;5660:45::-;;;;:::o;5267:43::-;;;;;;;;;;;;;;;;;:::o;1501:79::-;1539:7;1566:6;;;;;;;;;;;1559:13;;1501:79;:::o;5712:47::-;;;;:::o;6706:87::-;6745:13;6778:7;;;;;;;;;;;;;;;;;6771:14;;6706:87;:::o;16248:139::-;1638:12;:10;:12::i;:::-;1628:22;;:6;;;;;;;;;;:22;;;1620:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16361:18:::1;16339:19;:40;;;;16248:139:::0;:::o;7141:199::-;7246:4;7268:42;7278:12;:10;:12::i;:::-;7292:9;7303:6;7268:9;:42::i;:::-;7328:4;7321:11;;7141:199;;;;:::o;15902:294::-;1638:12;:10;:12::i;:::-;1628:22;;:6;;;;;;;;;;:22;;;1620:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16056:13:::1;16039:14;:30;;;;16098:14;16080:15;:32;;;;16138:11;16123:12;:26;;;;16176:12;16160:13;:28;;;;15902:294:::0;;;;:::o;12017:236::-;12083:19;;;;;;;;;;;12067:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12122:17;;;;;;;;;;;12106:33;;:12;:10;:12::i;:::-;:33;;;12067:72;12059:81;;;;;;12151:23;12177:24;12195:4;12177:9;:24::i;:::-;12151:50;;12212:33;12229:15;12212:16;:33::i;:::-;12048:205;12017:236::o;16676:234::-;1638:12;:10;:12::i;:::-;1628:22;;:6;;;;;;;;;;:22;;;1620:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16793:9:::1;16789:114;16812:8;;:15;;16808:1;:19;16789:114;;;16883:8;16849:18;:31;16868:8;;16877:1;16868:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;16849:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;16829:3;;;;;;;16789:114;;;;16676:234:::0;;;:::o;7348:184::-;7465:7;7497:11;:18;7509:5;7497:18;;;;;;;;;;;;;;;:27;7516:7;7497:27;;;;;;;;;;;;;;;;7490:34;;7348:184;;;;:::o;11911:98::-;1638:12;:10;:12::i;:::-;1628:22;;:6;;;;;;;;;;:22;;;1620:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11989:12:::1;11975:11;::::0;:26:::1;;;;;;;;;;;;;;;;;;11911:98:::0;:::o;1871:244::-;1638:12;:10;:12::i;:::-;1628:22;;:6;;;;;;;;;;:22;;;1620:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1980:1:::1;1960:22;;:8;:22;;::::0;1952:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2070:8;2041:38;;2062:6;::::0;::::1;;;;;;;;2041:38;;;;;;;;;;;;2099:8;2090:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1871:244:::0;:::o;260:98::-;313:7;340:10;333:17;;260:98;:::o;8878:369::-;9022:1;9005:19;;:5;:19;;;8997:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9103:1;9084:21;;:7;:21;;;9076:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9185:6;9155:11;:18;9167:5;9155:18;;;;;;;;;;;;;;;:27;9174:7;9155:27;;;;;;;;;;;;;;;:36;;;;9223:7;9207:32;;9216:5;9207:32;;;9232:6;9207:32;;;;;;:::i;:::-;;;;;;;;8878:369;;;:::o;9255:2050::-;9393:1;9377:18;;:4;:18;;;9369:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9470:1;9456:16;;:2;:16;;;9448:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9540:1;9531:6;:10;9523:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9612:7;:5;:7::i;:::-;9604:15;;:4;:15;;;;:32;;;;;9629:7;:5;:7::i;:::-;9623:13;;:2;:13;;;;9604:32;9600:979;;;9673:12;;9663:6;:22;;9655:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;9744:13;;;;;;;;;;;9738:19;;:2;:19;;;9735:146;;9811:14;;9802:6;9786:13;9796:2;9786:9;:13::i;:::-;:22;;;;:::i;:::-;:39;9778:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;9735:146;9897:28;9928:24;9946:4;9928:9;:24::i;:::-;9897:55;;9967:12;10006:19;;9982:20;:43;;9967:58;;10069:12;;10045:20;:36;10042:124;;10138:12;;10115:35;;10042:124;10186:7;:18;;;;;10198:6;;;;;;;;;;;10197:7;10186:18;:43;;;;;10216:13;;;;;;;;;;;10208:21;;:4;:21;;;;10186:43;:58;;;;;10233:11;;;;;;;;;;;10186:58;:87;;;;;10249:18;:24;10268:4;10249:24;;;;;;;;;;;;;;;;;;;;;;;;;10248:25;10186:87;:114;;;;;10278:18;:22;10297:2;10278:22;;;;;;;;;;;;;;;;;;;;;;;;;10277:23;10186:114;10182:386;;;10321:38;10338:20;10321:16;:38::i;:::-;10378:26;10407:21;10378:50;;10472:1;10451:18;:22;10447:106;;;10498:35;10511:21;10498:12;:35::i;:::-;10447:106;10302:266;10182:386;9638:941;;9600:979;10591:12;10606:4;10591:19;;10655:18;:24;10674:4;10655:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;10683:18;:22;10702:2;10683:22;;;;;;;;;;;;;;;;;;;;;;;;;10655:50;10654:102;;;;10719:13;;;;;;;;;;;10711:21;;:4;:21;;;;:44;;;;;10742:13;;;;;;;;;;;10736:19;;:2;:19;;;;10711:44;10654:102;10650:594;;;10783:5;10773:15;;10650:594;;;10866:13;;;;;;;;;;;10858:21;;:4;:21;;;:55;;;;;10897:15;;;;;;;;;;;10883:30;;:2;:30;;;;10858:55;10855:162;;;10946:14;;10934:9;:26;;;;10989:12;;10979:7;:22;;;;10855:162;11076:13;;;;;;;;;;;11070:19;;:2;:19;;;:55;;;;;11109:15;;;;;;;;;;;11093:32;;:4;:32;;;;11070:55;11066:165;;;11158:15;;11146:9;:27;;;;11202:13;;11192:7;:23;;;;11066:165;10650:594;11256:41;11271:4;11277:2;11281:6;11289:7;11256:14;:41::i;:::-;9358:1947;9255:2050;;;:::o;2479:224::-;2599:7;2632:1;2627;:6;;2635:12;2619:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2659:9;2675:1;2671;:5;;;;:::i;:::-;2659:17;;2694:1;2687:8;;;2479:224;;;;;:::o;11804:99::-;11861:17;;;;;;;;;;;:26;;:34;11888:6;11861:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11804:99;:::o;8195:323::-;8290:7;8348;;8337;:18;;8315:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8436:19;8458:10;:8;:10::i;:::-;8436:32;;8486:24;8498:11;8486:7;:11;;:24;;;;:::i;:::-;8479:31;;;8195:323;;;:::o;11313:483::-;5918:4;5909:6;;:13;;;;;;;;;;;;;;;;;;11391:21:::1;11429:1;11415:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11391:40;;11460:4;11442;11447:1;11442:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11486:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11476:4;11481:1;11476:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11519:62;11536:4;11551:15;;;;;;;;;;;11569:11;11519:8;:62::i;:::-;11592:15;;;;;;;;;;;:66;;;11673:11;11699:1;11715:4;11742;11762:15;11592:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11380:416;5954:5:::0;5945:6;;:14;;;;;;;;;;;;;;;;;;11313:483;:::o;12504:282::-;12660:7;12655:28;;12669:14;:12;:14::i;:::-;12655:28;12694:44;12712:6;12720:9;12731:6;12694:17;:44::i;:::-;12754:7;12749:29;;12763:15;:13;:15::i;:::-;12749:29;12504:282;;;;:::o;15465:164::-;15507:7;15528:15;15545;15564:19;:17;:19::i;:::-;15527:56;;;;15601:20;15613:7;15601;:11;;:20;;;;:::i;:::-;15594:27;;;;15465:164;:::o;2965:132::-;3023:7;3050:39;3054:1;3057;3050:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3043:46;;2965:132;;;;:::o;8526:219::-;8586:1;8573:9;;:14;:30;;;;;8602:1;8591:7;;:12;8573:30;8605:7;8569:43;8644:9;;8624:17;:29;;;;8682:7;;8664:15;:25;;;;8714:1;8702:9;:13;;;;8736:1;8726:7;:11;;;;8526:219;:::o;12794:610::-;12941:15;12971:23;13009:12;13036:23;13074:12;13101:13;13128:19;13139:7;13128:10;:19::i;:::-;12926:221;;;;;;;;;;;;13176:28;13196:7;13176;:15;13184:6;13176:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13158:7;:15;13166:6;13158:15;;;;;;;;;;;;;;;:46;;;;13236:39;13259:15;13236:7;:18;13244:9;13236:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13215:7;:18;13223:9;13215:18;;;;;;;;;;;;;;;:60;;;;13286:16;13296:5;13286:9;:16::i;:::-;13313:23;13325:4;13331;13313:11;:23::i;:::-;13369:9;13352:44;;13361:6;13352:44;;;13380:15;13352:44;;;;;;:::i;:::-;;;;;;;;12915:489;;;;;;12794:610;;;:::o;8753:117::-;8809:17;;8797:9;:29;;;;8847:15;;8837:7;:25;;;;8753:117::o;15637:257::-;15688:7;15697;15717:15;15735:7;;15717:25;;15753:15;4768:17;15753:25;;15803:20;4768:17;15803:7;;:11;;:20;;;;:::i;:::-;15793:7;:30;15789:61;;;15833:7;;4768:17;15825:25;;;;;;;;15789:61;15869:7;15878;15861:25;;;;;;15637:257;;;:::o;3105:223::-;3225:7;3257:1;3253;:5;3260:12;3245:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3284:9;3300:1;3296;:5;;;;:::i;:::-;3284:17;;3319:1;3312:8;;;3105:223;;;;;:::o;13823:615::-;13923:7;13945;13967;13989;14011;14033;14069:23;14094:12;14108:13;14138:40;14150:7;14159:9;;14170:7;;14138:11;:40::i;:::-;14068:110;;;;;;14189:19;14211:10;:8;:10::i;:::-;14189:32;;14233:15;14250:23;14275:12;14304:46;14316:7;14325:4;14331:5;14338:11;14304;:46::i;:::-;14232:118;;;;;;14369:7;14378:15;14395:4;14401:15;14418:4;14424:5;14361:69;;;;;;;;;;;;;;;;;;;13823:615;;;;;;;:::o;2335:136::-;2393:7;2420:43;2424:1;2427;2420:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2413:50;;2335:136;;;;:::o;2148:179::-;2206:7;2226:9;2242:1;2238;:5;;;;:::i;:::-;2226:17;;2267:1;2262;:6;;2254:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2318:1;2311:8;;;2148:179;;;;:::o;13412:211::-;13465:19;13487:10;:8;:10::i;:::-;13465:32;;13508:13;13524:22;13534:11;13524:5;:9;;:22;;;;:::i;:::-;13508:38;;13582:33;13609:5;13582:7;:22;13598:4;13582:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;13557:7;:22;13573:4;13557:22;;;;;;;;;;;;;;;:58;;;;13454:169;;13412:211;:::o;13631:147::-;13709:17;13721:4;13709:7;;:11;;:17;;;;:::i;:::-;13699:7;:27;;;;13750:20;13765:4;13750:10;;:14;;:20;;;;:::i;:::-;13737:10;:33;;;;13631:147;;:::o;14446:469::-;14615:7;14637;14659;14694:12;14709:30;14735:3;14709:21;14721:8;14709:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;14694:45;;14750:13;14766:28;14790:3;14766:19;14778:6;14766:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;14750:44;;14805:23;14831:28;14853:5;14831:17;14843:4;14831:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;14805:54;;14878:15;14895:4;14901:5;14870:37;;;;;;;;;14446:469;;;;;;;:::o;14923:534::-;15117:7;15139;15161;15196:15;15214:24;15226:11;15214:7;:11;;:24;;;;:::i;:::-;15196:42;;15249:12;15264:21;15273:11;15264:4;:8;;:21;;;;:::i;:::-;15249:36;;15296:13;15312:22;15322:11;15312:5;:9;;:22;;;;:::i;:::-;15296:38;;15345:23;15371:28;15393:5;15371:17;15383:4;15371:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15345:54;;15418:7;15427:15;15444:4;15410:39;;;;;;;;;;14923:534;;;;;;;;:::o;2711:246::-;2769:7;2798:1;2793;:6;2789:47;;2823:1;2816:8;;;;2789:47;2846:9;2862:1;2858;:5;;;;:::i;:::-;2846:17;;2891:1;2886;2882;:5;;;;:::i;:::-;:10;2874:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2948:1;2941:8;;;2711:246;;;;;:::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:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:152::-;3868:9;3901:37;3932:5;3901:37;:::i;:::-;3888:50;;3792:152;;;:::o;3950:183::-;4063:63;4120:5;4063:63;:::i;:::-;4058:3;4051:76;3950:183;;:::o;4139:274::-;4258:4;4296:2;4285:9;4281:18;4273:26;;4309:97;4403:1;4392:9;4388:17;4379:6;4309:97;:::i;:::-;4139:274;;;;:::o;4419:118::-;4506:24;4524:5;4506:24;:::i;:::-;4501:3;4494:37;4419:118;;:::o;4543:222::-;4636:4;4674:2;4663:9;4659:18;4651:26;;4687:71;4755:1;4744:9;4740:17;4731:6;4687:71;:::i;:::-;4543:222;;;;:::o;4771:619::-;4848:6;4856;4864;4913:2;4901:9;4892:7;4888:23;4884:32;4881:119;;;4919:79;;:::i;:::-;4881:119;5039:1;5064:53;5109:7;5100:6;5089:9;5085:22;5064:53;:::i;:::-;5054:63;;5010:117;5166:2;5192:53;5237:7;5228:6;5217:9;5213:22;5192:53;:::i;:::-;5182:63;;5137:118;5294:2;5320:53;5365:7;5356:6;5345:9;5341:22;5320:53;:::i;:::-;5310:63;;5265:118;4771:619;;;;;:::o;5396:86::-;5431:7;5471:4;5464:5;5460:16;5449:27;;5396:86;;;:::o;5488:112::-;5571:22;5587:5;5571:22;:::i;:::-;5566:3;5559:35;5488:112;;:::o;5606:214::-;5695:4;5733:2;5722:9;5718:18;5710:26;;5746:67;5810:1;5799:9;5795:17;5786:6;5746:67;:::i;:::-;5606:214;;;;:::o;5826:118::-;5913:24;5931:5;5913:24;:::i;:::-;5908:3;5901:37;5826:118;;:::o;5950:222::-;6043:4;6081:2;6070:9;6066:18;6058:26;;6094:71;6162:1;6151:9;6147:17;6138:6;6094:71;:::i;:::-;5950:222;;;;:::o;6178:116::-;6248:21;6263:5;6248:21;:::i;:::-;6241:5;6238:32;6228:60;;6284:1;6281;6274:12;6228:60;6178:116;:::o;6300:133::-;6343:5;6381:6;6368:20;6359:29;;6397:30;6421:5;6397:30;:::i;:::-;6300:133;;;;:::o;6439:323::-;6495:6;6544:2;6532:9;6523:7;6519:23;6515:32;6512:119;;;6550:79;;:::i;:::-;6512:119;6670:1;6695:50;6737:7;6728:6;6717:9;6713:22;6695:50;:::i;:::-;6685:60;;6641:114;6439:323;;;;:::o;6768:329::-;6827:6;6876:2;6864:9;6855:7;6851:23;6847:32;6844:119;;;6882:79;;:::i;:::-;6844:119;7002:1;7027:53;7072:7;7063:6;7052:9;7048:22;7027:53;:::i;:::-;7017:63;;6973:117;6768:329;;;;:::o;7103:::-;7162:6;7211:2;7199:9;7190:7;7186:23;7182:32;7179:119;;;7217:79;;:::i;:::-;7179:119;7337:1;7362:53;7407:7;7398:6;7387:9;7383:22;7362:53;:::i;:::-;7352:63;;7308:117;7103:329;;;;:::o;7438:765::-;7524:6;7532;7540;7548;7597:3;7585:9;7576:7;7572:23;7568:33;7565:120;;;7604:79;;:::i;:::-;7565:120;7724:1;7749:53;7794:7;7785:6;7774:9;7770:22;7749:53;:::i;:::-;7739:63;;7695:117;7851:2;7877:53;7922:7;7913:6;7902:9;7898:22;7877:53;:::i;:::-;7867:63;;7822:118;7979:2;8005:53;8050:7;8041:6;8030:9;8026:22;8005:53;:::i;:::-;7995:63;;7950:118;8107:2;8133:53;8178:7;8169:6;8158:9;8154:22;8133:53;:::i;:::-;8123:63;;8078:118;7438:765;;;;;;;:::o;8209:117::-;8318:1;8315;8308:12;8332:117;8441:1;8438;8431:12;8455:117;8564:1;8561;8554:12;8595:568;8668:8;8678:6;8728:3;8721:4;8713:6;8709:17;8705:27;8695:122;;8736:79;;:::i;:::-;8695:122;8849:6;8836:20;8826:30;;8879:18;8871:6;8868:30;8865:117;;;8901:79;;:::i;:::-;8865:117;9015:4;9007:6;9003:17;8991:29;;9069:3;9061:4;9053:6;9049:17;9039:8;9035:32;9032:41;9029:128;;;9076:79;;:::i;:::-;9029:128;8595:568;;;;;:::o;9169:698::-;9261:6;9269;9277;9326:2;9314:9;9305:7;9301:23;9297:32;9294:119;;;9332:79;;:::i;:::-;9294:119;9480:1;9469:9;9465:17;9452:31;9510:18;9502:6;9499:30;9496:117;;;9532:79;;:::i;:::-;9496:117;9645:80;9717:7;9708:6;9697:9;9693:22;9645:80;:::i;:::-;9627:98;;;;9423:312;9774:2;9800:50;9842:7;9833:6;9822:9;9818:22;9800:50;:::i;:::-;9790:60;;9745:115;9169:698;;;;;:::o;9873:474::-;9941:6;9949;9998:2;9986:9;9977:7;9973:23;9969:32;9966:119;;;10004:79;;:::i;:::-;9966:119;10124:1;10149:53;10194:7;10185:6;10174:9;10170:22;10149:53;:::i;:::-;10139:63;;10095:117;10251:2;10277:53;10322:7;10313:6;10302:9;10298:22;10277:53;:::i;:::-;10267:63;;10222:118;9873:474;;;;;:::o;10353:182::-;10493:34;10489:1;10481:6;10477:14;10470:58;10353:182;:::o;10541:366::-;10683:3;10704:67;10768:2;10763:3;10704:67;:::i;:::-;10697:74;;10780:93;10869:3;10780:93;:::i;:::-;10898:2;10893:3;10889:12;10882:19;;10541:366;;;:::o;10913:419::-;11079:4;11117:2;11106:9;11102:18;11094:26;;11166:9;11160:4;11156:20;11152:1;11141:9;11137:17;11130:47;11194:131;11320:4;11194:131;:::i;:::-;11186:139;;10913:419;;;:::o;11338:180::-;11386:77;11383:1;11376:88;11483:4;11480:1;11473:15;11507:4;11504:1;11497:15;11524:225;11664:34;11660:1;11652:6;11648:14;11641:58;11733:8;11728:2;11720:6;11716:15;11709:33;11524:225;:::o;11755:366::-;11897:3;11918:67;11982:2;11977:3;11918:67;:::i;:::-;11911:74;;11994:93;12083:3;11994:93;:::i;:::-;12112:2;12107:3;12103:12;12096:19;;11755:366;;;:::o;12127:419::-;12293:4;12331:2;12320:9;12316:18;12308:26;;12380:9;12374:4;12370:20;12366:1;12355:9;12351:17;12344:47;12408:131;12534:4;12408:131;:::i;:::-;12400:139;;12127:419;;;:::o;12552:223::-;12692:34;12688:1;12680:6;12676:14;12669:58;12761:6;12756:2;12748:6;12744:15;12737:31;12552:223;:::o;12781:366::-;12923:3;12944:67;13008:2;13003:3;12944:67;:::i;:::-;12937:74;;13020:93;13109:3;13020:93;:::i;:::-;13138:2;13133:3;13129:12;13122:19;;12781:366;;;:::o;13153:419::-;13319:4;13357:2;13346:9;13342:18;13334:26;;13406:9;13400:4;13396:20;13392:1;13381:9;13377:17;13370:47;13434:131;13560:4;13434:131;:::i;:::-;13426:139;;13153:419;;;:::o;13578:221::-;13718:34;13714:1;13706:6;13702:14;13695:58;13787:4;13782:2;13774:6;13770:15;13763:29;13578:221;:::o;13805:366::-;13947:3;13968:67;14032:2;14027:3;13968:67;:::i;:::-;13961:74;;14044:93;14133:3;14044:93;:::i;:::-;14162:2;14157:3;14153:12;14146:19;;13805:366;;;:::o;14177:419::-;14343:4;14381:2;14370:9;14366:18;14358:26;;14430:9;14424:4;14420:20;14416:1;14405:9;14401:17;14394:47;14458:131;14584:4;14458:131;:::i;:::-;14450:139;;14177:419;;;:::o;14602:224::-;14742:34;14738:1;14730:6;14726:14;14719:58;14811:7;14806:2;14798:6;14794:15;14787:32;14602:224;:::o;14832:366::-;14974:3;14995:67;15059:2;15054:3;14995:67;:::i;:::-;14988:74;;15071:93;15160:3;15071:93;:::i;:::-;15189:2;15184:3;15180:12;15173:19;;14832:366;;;:::o;15204:419::-;15370:4;15408:2;15397:9;15393:18;15385:26;;15457:9;15451:4;15447:20;15443:1;15432:9;15428:17;15421:47;15485:131;15611:4;15485:131;:::i;:::-;15477:139;;15204:419;;;:::o;15629:222::-;15769:34;15765:1;15757:6;15753:14;15746:58;15838:5;15833:2;15825:6;15821:15;15814:30;15629:222;:::o;15857:366::-;15999:3;16020:67;16084:2;16079:3;16020:67;:::i;:::-;16013:74;;16096:93;16185:3;16096:93;:::i;:::-;16214:2;16209:3;16205:12;16198:19;;15857:366;;;:::o;16229:419::-;16395:4;16433:2;16422:9;16418:18;16410:26;;16482:9;16476:4;16472:20;16468:1;16457:9;16453:17;16446:47;16510:131;16636:4;16510:131;:::i;:::-;16502:139;;16229:419;;;:::o;16654:228::-;16794:34;16790:1;16782:6;16778:14;16771:58;16863:11;16858:2;16850:6;16846:15;16839:36;16654:228;:::o;16888:366::-;17030:3;17051:67;17115:2;17110:3;17051:67;:::i;:::-;17044:74;;17127:93;17216:3;17127:93;:::i;:::-;17245:2;17240:3;17236:12;17229:19;;16888:366;;;:::o;17260:419::-;17426:4;17464:2;17453:9;17449:18;17441:26;;17513:9;17507:4;17503:20;17499:1;17488:9;17484:17;17477:47;17541:131;17667:4;17541:131;:::i;:::-;17533:139;;17260:419;;;:::o;17685:178::-;17825:30;17821:1;17813:6;17809:14;17802:54;17685:178;:::o;17869:366::-;18011:3;18032:67;18096:2;18091:3;18032:67;:::i;:::-;18025:74;;18108:93;18197:3;18108:93;:::i;:::-;18226:2;18221:3;18217:12;18210:19;;17869:366;;;:::o;18241:419::-;18407:4;18445:2;18434:9;18430:18;18422:26;;18494:9;18488:4;18484:20;18480:1;18469:9;18465:17;18458:47;18522:131;18648:4;18522:131;:::i;:::-;18514:139;;18241:419;;;:::o;18666:180::-;18714:77;18711:1;18704:88;18811:4;18808:1;18801:15;18835:4;18832:1;18825:15;18852:191;18892:3;18911:20;18929:1;18911:20;:::i;:::-;18906:25;;18945:20;18963:1;18945:20;:::i;:::-;18940:25;;18988:1;18985;18981:9;18974:16;;19009:3;19006:1;19003:10;19000:36;;;19016:18;;:::i;:::-;19000:36;18852:191;;;;:::o;19049:222::-;19189:34;19185:1;19177:6;19173:14;19166:58;19258:5;19253:2;19245:6;19241:15;19234:30;19049:222;:::o;19277:366::-;19419:3;19440:67;19504:2;19499:3;19440:67;:::i;:::-;19433:74;;19516:93;19605:3;19516:93;:::i;:::-;19634:2;19629:3;19625:12;19618:19;;19277:366;;;:::o;19649:419::-;19815:4;19853:2;19842:9;19838:18;19830:26;;19902:9;19896:4;19892:20;19888:1;19877:9;19873:17;19866:47;19930:131;20056:4;19930:131;:::i;:::-;19922:139;;19649:419;;;:::o;20074:194::-;20114:4;20134:20;20152:1;20134:20;:::i;:::-;20129:25;;20168:20;20186:1;20168:20;:::i;:::-;20163:25;;20212:1;20209;20205:9;20197:17;;20236:1;20230:4;20227:11;20224:37;;;20241:18;;:::i;:::-;20224:37;20074:194;;;;:::o;20274:229::-;20414:34;20410:1;20402:6;20398:14;20391:58;20483:12;20478:2;20470:6;20466:15;20459:37;20274:229;:::o;20509:366::-;20651:3;20672:67;20736:2;20731:3;20672:67;:::i;:::-;20665:74;;20748:93;20837:3;20748:93;:::i;:::-;20866:2;20861:3;20857:12;20850:19;;20509:366;;;:::o;20881:419::-;21047:4;21085:2;21074:9;21070:18;21062:26;;21134:9;21128:4;21124:20;21120:1;21109:9;21105:17;21098:47;21162:131;21288:4;21162:131;:::i;:::-;21154:139;;20881:419;;;:::o;21306:180::-;21354:77;21351:1;21344:88;21451:4;21448:1;21441:15;21475:4;21472:1;21465:15;21492:143;21549:5;21580:6;21574:13;21565:22;;21596:33;21623:5;21596:33;:::i;:::-;21492:143;;;;:::o;21641:351::-;21711:6;21760:2;21748:9;21739:7;21735:23;21731:32;21728:119;;;21766:79;;:::i;:::-;21728:119;21886:1;21911:64;21967:7;21958:6;21947:9;21943:22;21911:64;:::i;:::-;21901:74;;21857:128;21641:351;;;;:::o;21998:85::-;22043:7;22072:5;22061:16;;21998:85;;;:::o;22089:158::-;22147:9;22180:61;22198:42;22207:32;22233:5;22207:32;:::i;:::-;22198:42;:::i;:::-;22180:61;:::i;:::-;22167:74;;22089:158;;;:::o;22253:147::-;22348:45;22387:5;22348:45;:::i;:::-;22343:3;22336:58;22253:147;;:::o;22406:114::-;22473:6;22507:5;22501:12;22491:22;;22406:114;;;:::o;22526:184::-;22625:11;22659:6;22654:3;22647:19;22699:4;22694:3;22690:14;22675:29;;22526:184;;;;:::o;22716:132::-;22783:4;22806:3;22798:11;;22836:4;22831:3;22827:14;22819:22;;22716:132;;;:::o;22854:108::-;22931:24;22949:5;22931:24;:::i;:::-;22926:3;22919:37;22854:108;;:::o;22968:179::-;23037:10;23058:46;23100:3;23092:6;23058:46;:::i;:::-;23136:4;23131:3;23127:14;23113:28;;22968:179;;;;:::o;23153:113::-;23223:4;23255;23250:3;23246:14;23238:22;;23153:113;;;:::o;23302:732::-;23421:3;23450:54;23498:5;23450:54;:::i;:::-;23520:86;23599:6;23594:3;23520:86;:::i;:::-;23513:93;;23630:56;23680:5;23630:56;:::i;:::-;23709:7;23740:1;23725:284;23750:6;23747:1;23744:13;23725:284;;;23826:6;23820:13;23853:63;23912:3;23897:13;23853:63;:::i;:::-;23846:70;;23939:60;23992:6;23939:60;:::i;:::-;23929:70;;23785:224;23772:1;23769;23765:9;23760:14;;23725:284;;;23729:14;24025:3;24018:10;;23426:608;;;23302:732;;;;:::o;24040:831::-;24303:4;24341:3;24330:9;24326:19;24318:27;;24355:71;24423:1;24412:9;24408:17;24399:6;24355:71;:::i;:::-;24436:80;24512:2;24501:9;24497:18;24488:6;24436:80;:::i;:::-;24563:9;24557:4;24553:20;24548:2;24537:9;24533:18;24526:48;24591:108;24694:4;24685:6;24591:108;:::i;:::-;24583:116;;24709:72;24777:2;24766:9;24762:18;24753:6;24709:72;:::i;:::-;24791:73;24859:3;24848:9;24844:19;24835:6;24791:73;:::i;:::-;24040:831;;;;;;;;:::o;24877:180::-;24925:77;24922:1;24915:88;25022:4;25019:1;25012:15;25046:4;25043:1;25036:15;25063:185;25103:1;25120:20;25138:1;25120:20;:::i;:::-;25115:25;;25154:20;25172:1;25154:20;:::i;:::-;25149:25;;25193:1;25183:35;;25198:18;;:::i;:::-;25183:35;25240:1;25237;25233:9;25228:14;;25063:185;;;;:::o;25254:177::-;25394:29;25390:1;25382:6;25378:14;25371:53;25254:177;:::o;25437:366::-;25579:3;25600:67;25664:2;25659:3;25600:67;:::i;:::-;25593:74;;25676:93;25765:3;25676:93;:::i;:::-;25794:2;25789:3;25785:12;25778:19;;25437:366;;;:::o;25809:419::-;25975:4;26013:2;26002:9;25998:18;25990:26;;26062:9;26056:4;26052:20;26048:1;26037:9;26033:17;26026:47;26090:131;26216:4;26090:131;:::i;:::-;26082:139;;25809:419;;;:::o;26234:410::-;26274:7;26297:20;26315:1;26297:20;:::i;:::-;26292:25;;26331:20;26349:1;26331:20;:::i;:::-;26326:25;;26386:1;26383;26379:9;26408:30;26426:11;26408:30;:::i;:::-;26397:41;;26587:1;26578:7;26574:15;26571:1;26568:22;26548:1;26541:9;26521:83;26498:139;;26617:18;;:::i;:::-;26498:139;26282:362;26234:410;;;;:::o;26650:220::-;26790:34;26786:1;26778:6;26774:14;26767:58;26859:3;26854:2;26846:6;26842:15;26835:28;26650:220;:::o;26876:366::-;27018:3;27039:67;27103:2;27098:3;27039:67;:::i;:::-;27032:74;;27115:93;27204:3;27115:93;:::i;:::-;27233:2;27228:3;27224:12;27217:19;;26876:366;;;:::o;27248:419::-;27414:4;27452:2;27441:9;27437:18;27429:26;;27501:9;27495:4;27491:20;27487:1;27476:9;27472:17;27465:47;27529:131;27655:4;27529:131;:::i;:::-;27521:139;;27248:419;;;:::o

Swarm Source

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