ETH Price: $3,780.19 (+5.57%)

Token

ERC-20: AirGPU AI (AIRGPU)
 

Overview

Max Total Supply

100,000,000 AIRGPU

Holders

68

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
AIRGPU

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-03-12
*/

/**
* Cloud mining just got a lot easier with AirGPU AI
* Welcome to AirGPU AI, your gateway to decentralized GPU renting and AI-powered services. 
* Website: https://airgpu.ai
* Telegram: https://t.me/AirGPUAI
* Twitter(X): http://x.com/AirGPUAI
* Docs: http://docs.airgpu.ai
**/

// SPDX-License-Identifier: Unlicensed

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

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

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

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

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

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

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

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

pragma solidity ^0.8.18;

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

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

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

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

contract AIRGPU is Context, IERC20, Ownable { 
    using SafeMath for uint256;

    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => uint256) private _balances;
    mapping(address => uint256) public _buyMap;

    uint8 private constant _decimals = 9;
    string private constant _name = "AirGPU AI";
    string private constant _symbol = "AIRGPU";

    uint256 private constant MAX = ~uint256(0);

    uint256 private constant _totalSupply = 100_000_000 * 10**9;
    uint256 private _reflectedTotalSupply = (MAX - (MAX % _totalSupply));

    uint256 private _taxFeeOnBuy = 5;
    uint256 private _taxFeeOnSell = 5;

    uint256 private _redisFeeOnBuy = 0;
    uint256 private _redisFeeOnSell = 0;

    uint256 private _tFeeTotal;

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

    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;

    address payable private _marketindAddress =
        payable(0x2548cc6B23D876796BbB3Ce62AC114495A54d0D2);

    bool private _maxTxnCan = false;
    bool private _maxWalletCan = false;
    bool private _maxTxn = false;
    bool private _maxWallet = false;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool private allowToTrade;
    bool private swappingAllowed = true;
    bool private inSwap = false;

    uint256 public _maxTxAmount = 1_000_000 * 10**9;
    uint256 public _maxWalletSize = 2_000_000 * 10**9;
    uint256 public _swapTokensAtAmount = 1000 * 10**9;

    event MaxTxAmountUpdated(uint256 _maxTxAmount);

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

    constructor() {
        _balances[_msgSender()] = _reflectedTotalSupply;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

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

        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[_marketindAddress] = true;

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

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

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

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

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

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

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "Can't approve from zero address");
        require(spender != address(0), "Can't approve to zero address");

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

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

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

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

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

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

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

    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 sendFeeToMarketing(uint256 amount) private {
        _marketindAddress.transfer(amount);
    }

    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
    }

    function setAllowTrading(bool _allowToTrade) public onlyOwner {
        allowToTrade = _allowToTrade;
    }

    function manualsend() external {
        require(_msgSender() == _marketindAddress);

        uint256 contractETHBalance = address(this).balance;

        sendFeeToMarketing(contractETHBalance);
    }

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

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "Cant transfer from address zero");
        require(to != address(0), "Cant transfer to address zero");
        require(amount > 0, "Amount should be above zero");

        if (from != owner() && to != owner()) {
            //Trade start check
            if (!allowToTrade) {
                require(
                    from == owner(),
                    "Only owner can trade before trading activation"
                );
            }

            require(amount <= _maxTxAmount, "Exceeded max transaction limit");

            if (to != uniswapV2Pair) {
                require(
                    balanceOf(to) + amount < _maxWalletSize,
                    "Exceeds max wallet balance"
                );
            }

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

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

            if (
                canSwap &&
                !inSwap &&
                from != uniswapV2Pair &&
                swappingAllowed &&
                !_isExcludedFromFee[from] &&
                !_isExcludedFromFee[to]
            ) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendFeeToMarketing(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 manualswap() external {
        require(_msgSender() == _marketindAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function _transferWithFees(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getFeeValues(tAmount);
        _balances[sender] = _balances[sender].sub(rAmount);
        _balances[recipient] = _balances[recipient].add(rTransferAmount);
        _transferFeeDev(tTeam);
        _updateReflectedFees(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        return (_reflectedTotalSupply, _totalSupply);
    }

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

    function _getFeeValues(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 setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = maxTxAmount;
    }

    receive() external payable {}

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) skipFee();
        _transferWithFees(sender, recipient, amount);
        if (!takeFee) unskipFee();
    }

    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 excludeMultipleAccountsFromFees(
        address[] calldata accounts,
        bool excluded
    ) public onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }

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


    function toggleSwappingAllowed(bool _swappingAllowed) public onlyOwner {
        swappingAllowed = _swappingAllowed;
    }

    function setFee(
        uint256 taxFeeOnBuy,
        uint256 taxFeeOnSell
    ) public onlyOwner {
        require(
            taxFeeOnBuy >= 0 && taxFeeOnBuy <= 95,
            "Buy tax must be between 0% and 95%"
        );
        require(
            taxFeeOnSell >= 0 && taxFeeOnSell <= 95,
            "Sell tax must be between 0% and 95%"
        );

        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }


    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount)
        public
        onlyOwner
    {
        _swapTokensAtAmount = swapTokensAtAmount;
    }
}

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":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","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":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_allowToTrade","type":"bool"}],"name":"setAllowTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","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":"_swappingAllowed","type":"bool"}],"name":"toggleSwappingAllowed","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"}]

608060405267016345785d8a00006000196200001c9190620006ab565b6000196200002b919062000712565b6006556005600755600560085560006009556000600a55600e54600c55600f54600d55600a54600e55600854600f55732548cc6b23d876796bbb3ce62ac114495a54d0d2601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601060146101000a81548160ff0219169083151502179055506000601060156101000a81548160ff0219169083151502179055506000601060166101000a81548160ff0219169083151502179055506000601060176101000a81548160ff0219169083151502179055506001601260156101000a81548160ff0219169083151502179055506000601260166101000a81548160ff02191690831515021790555066038d7ea4c6800060135566071afd498d000060145564e8d4a510006015553480156200017d57600080fd5b506000620001906200064160201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460046000620002456200064160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000329573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034f9190620007b7565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003b7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003dd9190620007b7565b6040518363ffffffff1660e01b8152600401620003fc929190620007fa565b6020604051808303816000875af11580156200041c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004429190620007b7565b601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000620004f06200064960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620005cb6200064160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef67016345785d8a000060405162000632919062000838565b60405180910390a35062000855565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620006b88262000672565b9150620006c58362000672565b925082620006d857620006d76200067c565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200071f8262000672565b91506200072c8362000672565b9250828203905081811115620007475762000746620006e3565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200077f8262000752565b9050919050565b620007918162000772565b81146200079d57600080fd5b50565b600081519050620007b18162000786565b92915050565b600060208284031215620007d057620007cf6200074d565b5b6000620007e084828501620007a0565b91505092915050565b620007f48162000772565b82525050565b6000604082019050620008116000830185620007e9565b620008206020830184620007e9565b9392505050565b620008328162000672565b82525050565b60006020820190506200084f600083018462000827565b92915050565b61375780620008656000396000f3fe6080604052600436106101a05760003560e01c806374010ece116100ec578063a9059cbb1161008a578063dd62ed3e11610064578063dd62ed3e1461059d578063ea1644d5146105da578063eceebc3f14610603578063f2fde38b1461062c576101a7565b8063a9059cbb14610520578063c3c8cd801461055d578063c492f04614610574576101a7565b80638da5cb5b116100c65780638da5cb5b146104765780638f9a55c0146104a157806395d89b41146104cc57806398a5c315146104f7576101a7565b806374010ece146103e55780637d1db4a51461040e5780637f2feddc14610439576101a7565b80632fd689e31161015957806352f7c9881161013357806352f7c988146103515780636fc3eaec1461037a57806370a0823114610391578063715018a6146103ce576101a7565b80632fd689e3146102d0578063313ce567146102fb57806349bd5a5e14610326576101a7565b806306fdde03146101ac578063095ea7b3146101d757806311ece8a6146102145780631694505e1461023d57806318160ddd1461026857806323b872dd14610293576101a7565b366101a757005b600080fd5b3480156101b857600080fd5b506101c1610655565b6040516101ce91906127ca565b60405180910390f35b3480156101e357600080fd5b506101fe60048036038101906101f9919061288a565b610692565b60405161020b91906128e5565b60405180910390f35b34801561022057600080fd5b5061023b6004803603810190610236919061292c565b6106b0565b005b34801561024957600080fd5b50610252610762565b60405161025f91906129b8565b60405180910390f35b34801561027457600080fd5b5061027d610788565b60405161028a91906129e2565b60405180910390f35b34801561029f57600080fd5b506102ba60048036038101906102b591906129fd565b610798565b6040516102c791906128e5565b60405180910390f35b3480156102dc57600080fd5b506102e5610871565b6040516102f291906129e2565b60405180910390f35b34801561030757600080fd5b50610310610877565b60405161031d9190612a6c565b60405180910390f35b34801561033257600080fd5b5061033b610880565b6040516103489190612a96565b60405180910390f35b34801561035d57600080fd5b5061037860048036038101906103739190612ab1565b6108a6565b005b34801561038657600080fd5b5061038f6109ef565b005b34801561039d57600080fd5b506103b860048036038101906103b39190612af1565b610a61565b6040516103c591906129e2565b60405180910390f35b3480156103da57600080fd5b506103e3610ab2565b005b3480156103f157600080fd5b5061040c60048036038101906104079190612b1e565b610c05565b005b34801561041a57600080fd5b50610423610ca4565b60405161043091906129e2565b60405180910390f35b34801561044557600080fd5b50610460600480360381019061045b9190612af1565b610caa565b60405161046d91906129e2565b60405180910390f35b34801561048257600080fd5b5061048b610cc2565b6040516104989190612a96565b60405180910390f35b3480156104ad57600080fd5b506104b6610ceb565b6040516104c391906129e2565b60405180910390f35b3480156104d857600080fd5b506104e1610cf1565b6040516104ee91906127ca565b60405180910390f35b34801561050357600080fd5b5061051e60048036038101906105199190612b1e565b610d2e565b005b34801561052c57600080fd5b506105476004803603810190610542919061288a565b610dcd565b60405161055491906128e5565b60405180910390f35b34801561056957600080fd5b50610572610deb565b005b34801561058057600080fd5b5061059b60048036038101906105969190612bb0565b610e65565b005b3480156105a957600080fd5b506105c460048036038101906105bf9190612c10565b610f9f565b6040516105d191906129e2565b60405180910390f35b3480156105e657600080fd5b5061060160048036038101906105fc9190612b1e565b611026565b005b34801561060f57600080fd5b5061062a6004803603810190610625919061292c565b6110c5565b005b34801561063857600080fd5b50610653600480360381019061064e9190612af1565b611177565b005b60606040518060400160405280600981526020017f4169724750552041490000000000000000000000000000000000000000000000815250905090565b60006106a661069f611338565b8484611340565b6001905092915050565b6106b8611338565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610745576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073c90612c9c565b60405180910390fd5b80601260156101000a81548160ff02191690831515021790555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600067016345785d8a0000905090565b60006107a5848484611509565b610866846107b1611338565b610861856040518060600160405280602581526020016136fd60259139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610817611338565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cab9092919063ffffffff16565b611340565b600190509392505050565b60155481565b60006009905090565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6108ae611338565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461093b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093290612c9c565b60405180910390fd5b6000821015801561094d5750605f8211155b61098c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098390612d2e565b60405180910390fd5b6000811015801561099e5750605f8111155b6109dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d490612dc0565b60405180910390fd5b81600781905550806008819055505050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a30611338565b73ffffffffffffffffffffffffffffffffffffffff1614610a5057600080fd5b6000479050610a5e81611d0f565b50565b6000610aab600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d7b565b9050919050565b610aba611338565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3e90612c9c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610c0d611338565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9190612c9c565b60405180910390fd5b8060138190555050565b60135481565b60056020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60145481565b60606040518060400160405280600681526020017f4149524750550000000000000000000000000000000000000000000000000000815250905090565b610d36611338565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dba90612c9c565b60405180910390fd5b8060158190555050565b6000610de1610dda611338565b8484611509565b6001905092915050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e2c611338565b73ffffffffffffffffffffffffffffffffffffffff1614610e4c57600080fd5b6000610e5730610a61565b9050610e6281611de9565b50565b610e6d611338565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610efa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef190612c9c565b60405180910390fd5b60005b83839050811015610f99578160036000868685818110610f2057610f1f612de0565b5b9050602002016020810190610f359190612af1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610f9190612e3e565b915050610efd565b50505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61102e611338565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b290612c9c565b60405180910390fd5b8060148190555050565b6110cd611338565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461115a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115190612c9c565b60405180910390fd5b80601260146101000a81548160ff02191690831515021790555050565b61117f611338565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461120c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120390612c9c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361127b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127290612ef8565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a690612f64565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361141e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141590612fd0565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516114fc91906129e2565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611578576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156f9061303c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115de906130a8565b60405180910390fd5b6000811161162a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162190613114565b60405180910390fd5b611632610cc2565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156116a05750611670610cc2565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156119aa57601260149054906101000a900460ff1661172f576116c1610cc2565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461172e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611725906131a6565b60405180910390fd5b5b601354811115611774576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176b90613212565b60405180910390fd5b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461182157601454816117d684610a61565b6117e09190613232565b10611820576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611817906132b2565b60405180910390fd5b5b600061182c30610a61565b90506000601554821015905060135482106118475760135491505b8080156118615750601260169054906101000a900460ff16155b80156118bb5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156118d35750601260159054906101000a900460ff165b80156119295750600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561197f5750600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156119a75761198d82611de9565b600047905060008111156119a5576119a447611d0f565b5b505b50505b600060019050600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611a515750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611b045750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611b035750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611b125760009050611c99565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611bbd5750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611bd557600954600e81905550600754600f819055505b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611c805750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611c9857600a54600e81905550600854600f819055505b5b611ca584848484612062565b50505050565b6000838311158290611cf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cea91906127ca565b60405180910390fd5b5060008385611d0291906132d2565b9050809150509392505050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611d77573d6000803e3d6000fd5b5050565b6000600654821115611dc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db990613378565b60405180910390fd5b6000611dcc61208f565b9050611de181846120ba90919063ffffffff16565b915050919050565b6001601260166101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611e2157611e20613398565b5b604051908082528060200260200182016040528015611e4f5781602001602082028036833780820191505090505b5090503081600081518110611e6757611e66612de0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f3291906133dc565b81600181518110611f4657611f45612de0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611fad30601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611340565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612011959493929190613502565b600060405180830381600087803b15801561202b57600080fd5b505af115801561203f573d6000803e3d6000fd5b50505050506000601260166101000a81548160ff02191690831515021790555050565b806120705761206f612104565b5b61207b848484612141565b806120895761208861230c565b5b50505050565b600080600061209c612320565b915091506120b381836120ba90919063ffffffff16565b9250505090565b60006120fc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612337565b905092915050565b6000600e5414801561211857506000600f54145b61213f57600e54600c81905550600f54600d819055506000600e819055506000600f819055505b565b6000806000806000806121538761239a565b9550955095509550955095506121b186600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461240290919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061224685600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461244c90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612292816124aa565b61229c8483612567565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516122f991906129e2565b60405180910390a3505050505050505050565b600c54600e81905550600d54600f81905550565b60008060065467016345785d8a0000915091509091565b6000808311829061237e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237591906127ca565b60405180910390fd5b506000838561238d919061358b565b9050809150509392505050565b60008060008060008060008060006123b78a600e54600f546125a1565b92509250925060006123c761208f565b905060008060006123da8e878787612637565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061244483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611cab565b905092915050565b600080828461245b9190613232565b9050838110156124a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249790613608565b60405180910390fd5b8091505092915050565b60006124b461208f565b905060006124cb82846126c090919063ffffffff16565b905061251f81600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461244c90919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61257c8260065461240290919063ffffffff16565b60068190555061259781600b5461244c90919063ffffffff16565b600b819055505050565b6000806000806125cd60646125bf888a6126c090919063ffffffff16565b6120ba90919063ffffffff16565b905060006125f760646125e9888b6126c090919063ffffffff16565b6120ba90919063ffffffff16565b9050600061262082612612858c61240290919063ffffffff16565b61240290919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061265085896126c090919063ffffffff16565b9050600061266786896126c090919063ffffffff16565b9050600061267e87896126c090919063ffffffff16565b905060006126a782612699858761240290919063ffffffff16565b61240290919063ffffffff16565b9050838184965096509650505050509450945094915050565b60008083036126d25760009050612734565b600082846126e09190613628565b90508284826126ef919061358b565b1461272f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612726906136dc565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612774578082015181840152602081019050612759565b60008484015250505050565b6000601f19601f8301169050919050565b600061279c8261273a565b6127a68185612745565b93506127b6818560208601612756565b6127bf81612780565b840191505092915050565b600060208201905081810360008301526127e48184612791565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612821826127f6565b9050919050565b61283181612816565b811461283c57600080fd5b50565b60008135905061284e81612828565b92915050565b6000819050919050565b61286781612854565b811461287257600080fd5b50565b6000813590506128848161285e565b92915050565b600080604083850312156128a1576128a06127ec565b5b60006128af8582860161283f565b92505060206128c085828601612875565b9150509250929050565b60008115159050919050565b6128df816128ca565b82525050565b60006020820190506128fa60008301846128d6565b92915050565b612909816128ca565b811461291457600080fd5b50565b60008135905061292681612900565b92915050565b600060208284031215612942576129416127ec565b5b600061295084828501612917565b91505092915050565b6000819050919050565b600061297e612979612974846127f6565b612959565b6127f6565b9050919050565b600061299082612963565b9050919050565b60006129a282612985565b9050919050565b6129b281612997565b82525050565b60006020820190506129cd60008301846129a9565b92915050565b6129dc81612854565b82525050565b60006020820190506129f760008301846129d3565b92915050565b600080600060608486031215612a1657612a156127ec565b5b6000612a248682870161283f565b9350506020612a358682870161283f565b9250506040612a4686828701612875565b9150509250925092565b600060ff82169050919050565b612a6681612a50565b82525050565b6000602082019050612a816000830184612a5d565b92915050565b612a9081612816565b82525050565b6000602082019050612aab6000830184612a87565b92915050565b60008060408385031215612ac857612ac76127ec565b5b6000612ad685828601612875565b9250506020612ae785828601612875565b9150509250929050565b600060208284031215612b0757612b066127ec565b5b6000612b158482850161283f565b91505092915050565b600060208284031215612b3457612b336127ec565b5b6000612b4284828501612875565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112612b7057612b6f612b4b565b5b8235905067ffffffffffffffff811115612b8d57612b8c612b50565b5b602083019150836020820283011115612ba957612ba8612b55565b5b9250929050565b600080600060408486031215612bc957612bc86127ec565b5b600084013567ffffffffffffffff811115612be757612be66127f1565b5b612bf386828701612b5a565b93509350506020612c0686828701612917565b9150509250925092565b60008060408385031215612c2757612c266127ec565b5b6000612c358582860161283f565b9250506020612c468582860161283f565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612c86602083612745565b9150612c9182612c50565b602082019050919050565b60006020820190508181036000830152612cb581612c79565b9050919050565b7f42757920746178206d757374206265206265747765656e20302520616e64203960008201527f3525000000000000000000000000000000000000000000000000000000000000602082015250565b6000612d18602283612745565b9150612d2382612cbc565b604082019050919050565b60006020820190508181036000830152612d4781612d0b565b9050919050565b7f53656c6c20746178206d757374206265206265747765656e20302520616e642060008201527f3935250000000000000000000000000000000000000000000000000000000000602082015250565b6000612daa602383612745565b9150612db582612d4e565b604082019050919050565b60006020820190508181036000830152612dd981612d9d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612e4982612854565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612e7b57612e7a612e0f565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612ee2602683612745565b9150612eed82612e86565b604082019050919050565b60006020820190508181036000830152612f1181612ed5565b9050919050565b7f43616e277420617070726f76652066726f6d207a65726f206164647265737300600082015250565b6000612f4e601f83612745565b9150612f5982612f18565b602082019050919050565b60006020820190508181036000830152612f7d81612f41565b9050919050565b7f43616e277420617070726f766520746f207a65726f2061646472657373000000600082015250565b6000612fba601d83612745565b9150612fc582612f84565b602082019050919050565b60006020820190508181036000830152612fe981612fad565b9050919050565b7f43616e74207472616e736665722066726f6d2061646472657373207a65726f00600082015250565b6000613026601f83612745565b915061303182612ff0565b602082019050919050565b6000602082019050818103600083015261305581613019565b9050919050565b7f43616e74207472616e7366657220746f2061646472657373207a65726f000000600082015250565b6000613092601d83612745565b915061309d8261305c565b602082019050919050565b600060208201905081810360008301526130c181613085565b9050919050565b7f416d6f756e742073686f756c642062652061626f7665207a65726f0000000000600082015250565b60006130fe601b83612745565b9150613109826130c8565b602082019050919050565b6000602082019050818103600083015261312d816130f1565b9050919050565b7f4f6e6c79206f776e65722063616e207472616465206265666f7265207472616460008201527f696e672061637469766174696f6e000000000000000000000000000000000000602082015250565b6000613190602e83612745565b915061319b82613134565b604082019050919050565b600060208201905081810360008301526131bf81613183565b9050919050565b7f4578636565646564206d6178207472616e73616374696f6e206c696d69740000600082015250565b60006131fc601e83612745565b9150613207826131c6565b602082019050919050565b6000602082019050818103600083015261322b816131ef565b9050919050565b600061323d82612854565b915061324883612854565b92508282019050808211156132605761325f612e0f565b5b92915050565b7f45786365656473206d61782077616c6c65742062616c616e6365000000000000600082015250565b600061329c601a83612745565b91506132a782613266565b602082019050919050565b600060208201905081810360008301526132cb8161328f565b9050919050565b60006132dd82612854565b91506132e883612854565b9250828203905081811115613300576132ff612e0f565b5b92915050565b7f416d6f756e742068617320746f206265206c657373207468616e20746f74616c60008201527f207265666c656374696f6e730000000000000000000000000000000000000000602082015250565b6000613362602c83612745565b915061336d82613306565b604082019050919050565b6000602082019050818103600083015261339181613355565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506133d681612828565b92915050565b6000602082840312156133f2576133f16127ec565b5b6000613400848285016133c7565b91505092915050565b6000819050919050565b600061342e61342961342484613409565b612959565b612854565b9050919050565b61343e81613413565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61347981612816565b82525050565b600061348b8383613470565b60208301905092915050565b6000602082019050919050565b60006134af82613444565b6134b9818561344f565b93506134c483613460565b8060005b838110156134f55781516134dc888261347f565b97506134e783613497565b9250506001810190506134c8565b5085935050505092915050565b600060a08201905061351760008301886129d3565b6135246020830187613435565b818103604083015261353681866134a4565b90506135456060830185612a87565b61355260808301846129d3565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061359682612854565b91506135a183612854565b9250826135b1576135b061355c565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006135f2601b83612745565b91506135fd826135bc565b602082019050919050565b60006020820190508181036000830152613621816135e5565b9050919050565b600061363382612854565b915061363e83612854565b925082820261364c81612854565b9150828204841483151761366357613662612e0f565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006136c6602183612745565b91506136d18261366a565b604082019050919050565b600060208201905081810360008301526136f5816136b9565b905091905056fe746865207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212201a567ec16f53a2cea20be994d4069c6431f3dc94428bcd3656e73f7b56d1550f64736f6c63430008120033

Deployed Bytecode

0x6080604052600436106101a05760003560e01c806374010ece116100ec578063a9059cbb1161008a578063dd62ed3e11610064578063dd62ed3e1461059d578063ea1644d5146105da578063eceebc3f14610603578063f2fde38b1461062c576101a7565b8063a9059cbb14610520578063c3c8cd801461055d578063c492f04614610574576101a7565b80638da5cb5b116100c65780638da5cb5b146104765780638f9a55c0146104a157806395d89b41146104cc57806398a5c315146104f7576101a7565b806374010ece146103e55780637d1db4a51461040e5780637f2feddc14610439576101a7565b80632fd689e31161015957806352f7c9881161013357806352f7c988146103515780636fc3eaec1461037a57806370a0823114610391578063715018a6146103ce576101a7565b80632fd689e3146102d0578063313ce567146102fb57806349bd5a5e14610326576101a7565b806306fdde03146101ac578063095ea7b3146101d757806311ece8a6146102145780631694505e1461023d57806318160ddd1461026857806323b872dd14610293576101a7565b366101a757005b600080fd5b3480156101b857600080fd5b506101c1610655565b6040516101ce91906127ca565b60405180910390f35b3480156101e357600080fd5b506101fe60048036038101906101f9919061288a565b610692565b60405161020b91906128e5565b60405180910390f35b34801561022057600080fd5b5061023b6004803603810190610236919061292c565b6106b0565b005b34801561024957600080fd5b50610252610762565b60405161025f91906129b8565b60405180910390f35b34801561027457600080fd5b5061027d610788565b60405161028a91906129e2565b60405180910390f35b34801561029f57600080fd5b506102ba60048036038101906102b591906129fd565b610798565b6040516102c791906128e5565b60405180910390f35b3480156102dc57600080fd5b506102e5610871565b6040516102f291906129e2565b60405180910390f35b34801561030757600080fd5b50610310610877565b60405161031d9190612a6c565b60405180910390f35b34801561033257600080fd5b5061033b610880565b6040516103489190612a96565b60405180910390f35b34801561035d57600080fd5b5061037860048036038101906103739190612ab1565b6108a6565b005b34801561038657600080fd5b5061038f6109ef565b005b34801561039d57600080fd5b506103b860048036038101906103b39190612af1565b610a61565b6040516103c591906129e2565b60405180910390f35b3480156103da57600080fd5b506103e3610ab2565b005b3480156103f157600080fd5b5061040c60048036038101906104079190612b1e565b610c05565b005b34801561041a57600080fd5b50610423610ca4565b60405161043091906129e2565b60405180910390f35b34801561044557600080fd5b50610460600480360381019061045b9190612af1565b610caa565b60405161046d91906129e2565b60405180910390f35b34801561048257600080fd5b5061048b610cc2565b6040516104989190612a96565b60405180910390f35b3480156104ad57600080fd5b506104b6610ceb565b6040516104c391906129e2565b60405180910390f35b3480156104d857600080fd5b506104e1610cf1565b6040516104ee91906127ca565b60405180910390f35b34801561050357600080fd5b5061051e60048036038101906105199190612b1e565b610d2e565b005b34801561052c57600080fd5b506105476004803603810190610542919061288a565b610dcd565b60405161055491906128e5565b60405180910390f35b34801561056957600080fd5b50610572610deb565b005b34801561058057600080fd5b5061059b60048036038101906105969190612bb0565b610e65565b005b3480156105a957600080fd5b506105c460048036038101906105bf9190612c10565b610f9f565b6040516105d191906129e2565b60405180910390f35b3480156105e657600080fd5b5061060160048036038101906105fc9190612b1e565b611026565b005b34801561060f57600080fd5b5061062a6004803603810190610625919061292c565b6110c5565b005b34801561063857600080fd5b50610653600480360381019061064e9190612af1565b611177565b005b60606040518060400160405280600981526020017f4169724750552041490000000000000000000000000000000000000000000000815250905090565b60006106a661069f611338565b8484611340565b6001905092915050565b6106b8611338565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610745576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073c90612c9c565b60405180910390fd5b80601260156101000a81548160ff02191690831515021790555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600067016345785d8a0000905090565b60006107a5848484611509565b610866846107b1611338565b610861856040518060600160405280602581526020016136fd60259139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610817611338565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611cab9092919063ffffffff16565b611340565b600190509392505050565b60155481565b60006009905090565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6108ae611338565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461093b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093290612c9c565b60405180910390fd5b6000821015801561094d5750605f8211155b61098c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098390612d2e565b60405180910390fd5b6000811015801561099e5750605f8111155b6109dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d490612dc0565b60405180910390fd5b81600781905550806008819055505050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a30611338565b73ffffffffffffffffffffffffffffffffffffffff1614610a5057600080fd5b6000479050610a5e81611d0f565b50565b6000610aab600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d7b565b9050919050565b610aba611338565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3e90612c9c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610c0d611338565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9190612c9c565b60405180910390fd5b8060138190555050565b60135481565b60056020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60145481565b60606040518060400160405280600681526020017f4149524750550000000000000000000000000000000000000000000000000000815250905090565b610d36611338565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dba90612c9c565b60405180910390fd5b8060158190555050565b6000610de1610dda611338565b8484611509565b6001905092915050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e2c611338565b73ffffffffffffffffffffffffffffffffffffffff1614610e4c57600080fd5b6000610e5730610a61565b9050610e6281611de9565b50565b610e6d611338565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610efa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef190612c9c565b60405180910390fd5b60005b83839050811015610f99578160036000868685818110610f2057610f1f612de0565b5b9050602002016020810190610f359190612af1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610f9190612e3e565b915050610efd565b50505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61102e611338565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b290612c9c565b60405180910390fd5b8060148190555050565b6110cd611338565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461115a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115190612c9c565b60405180910390fd5b80601260146101000a81548160ff02191690831515021790555050565b61117f611338565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461120c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120390612c9c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361127b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127290612ef8565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a690612f64565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361141e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141590612fd0565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516114fc91906129e2565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611578576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156f9061303c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115de906130a8565b60405180910390fd5b6000811161162a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162190613114565b60405180910390fd5b611632610cc2565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156116a05750611670610cc2565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156119aa57601260149054906101000a900460ff1661172f576116c1610cc2565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461172e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611725906131a6565b60405180910390fd5b5b601354811115611774576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176b90613212565b60405180910390fd5b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461182157601454816117d684610a61565b6117e09190613232565b10611820576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611817906132b2565b60405180910390fd5b5b600061182c30610a61565b90506000601554821015905060135482106118475760135491505b8080156118615750601260169054906101000a900460ff16155b80156118bb5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156118d35750601260159054906101000a900460ff165b80156119295750600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561197f5750600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156119a75761198d82611de9565b600047905060008111156119a5576119a447611d0f565b5b505b50505b600060019050600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611a515750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611b045750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611b035750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611b125760009050611c99565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611bbd5750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611bd557600954600e81905550600754600f819055505b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611c805750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611c9857600a54600e81905550600854600f819055505b5b611ca584848484612062565b50505050565b6000838311158290611cf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cea91906127ca565b60405180910390fd5b5060008385611d0291906132d2565b9050809150509392505050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611d77573d6000803e3d6000fd5b5050565b6000600654821115611dc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db990613378565b60405180910390fd5b6000611dcc61208f565b9050611de181846120ba90919063ffffffff16565b915050919050565b6001601260166101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611e2157611e20613398565b5b604051908082528060200260200182016040528015611e4f5781602001602082028036833780820191505090505b5090503081600081518110611e6757611e66612de0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f3291906133dc565b81600181518110611f4657611f45612de0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611fad30601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611340565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612011959493929190613502565b600060405180830381600087803b15801561202b57600080fd5b505af115801561203f573d6000803e3d6000fd5b50505050506000601260166101000a81548160ff02191690831515021790555050565b806120705761206f612104565b5b61207b848484612141565b806120895761208861230c565b5b50505050565b600080600061209c612320565b915091506120b381836120ba90919063ffffffff16565b9250505090565b60006120fc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612337565b905092915050565b6000600e5414801561211857506000600f54145b61213f57600e54600c81905550600f54600d819055506000600e819055506000600f819055505b565b6000806000806000806121538761239a565b9550955095509550955095506121b186600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461240290919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061224685600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461244c90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612292816124aa565b61229c8483612567565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516122f991906129e2565b60405180910390a3505050505050505050565b600c54600e81905550600d54600f81905550565b60008060065467016345785d8a0000915091509091565b6000808311829061237e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237591906127ca565b60405180910390fd5b506000838561238d919061358b565b9050809150509392505050565b60008060008060008060008060006123b78a600e54600f546125a1565b92509250925060006123c761208f565b905060008060006123da8e878787612637565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061244483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611cab565b905092915050565b600080828461245b9190613232565b9050838110156124a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249790613608565b60405180910390fd5b8091505092915050565b60006124b461208f565b905060006124cb82846126c090919063ffffffff16565b905061251f81600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461244c90919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61257c8260065461240290919063ffffffff16565b60068190555061259781600b5461244c90919063ffffffff16565b600b819055505050565b6000806000806125cd60646125bf888a6126c090919063ffffffff16565b6120ba90919063ffffffff16565b905060006125f760646125e9888b6126c090919063ffffffff16565b6120ba90919063ffffffff16565b9050600061262082612612858c61240290919063ffffffff16565b61240290919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061265085896126c090919063ffffffff16565b9050600061266786896126c090919063ffffffff16565b9050600061267e87896126c090919063ffffffff16565b905060006126a782612699858761240290919063ffffffff16565b61240290919063ffffffff16565b9050838184965096509650505050509450945094915050565b60008083036126d25760009050612734565b600082846126e09190613628565b90508284826126ef919061358b565b1461272f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612726906136dc565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612774578082015181840152602081019050612759565b60008484015250505050565b6000601f19601f8301169050919050565b600061279c8261273a565b6127a68185612745565b93506127b6818560208601612756565b6127bf81612780565b840191505092915050565b600060208201905081810360008301526127e48184612791565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612821826127f6565b9050919050565b61283181612816565b811461283c57600080fd5b50565b60008135905061284e81612828565b92915050565b6000819050919050565b61286781612854565b811461287257600080fd5b50565b6000813590506128848161285e565b92915050565b600080604083850312156128a1576128a06127ec565b5b60006128af8582860161283f565b92505060206128c085828601612875565b9150509250929050565b60008115159050919050565b6128df816128ca565b82525050565b60006020820190506128fa60008301846128d6565b92915050565b612909816128ca565b811461291457600080fd5b50565b60008135905061292681612900565b92915050565b600060208284031215612942576129416127ec565b5b600061295084828501612917565b91505092915050565b6000819050919050565b600061297e612979612974846127f6565b612959565b6127f6565b9050919050565b600061299082612963565b9050919050565b60006129a282612985565b9050919050565b6129b281612997565b82525050565b60006020820190506129cd60008301846129a9565b92915050565b6129dc81612854565b82525050565b60006020820190506129f760008301846129d3565b92915050565b600080600060608486031215612a1657612a156127ec565b5b6000612a248682870161283f565b9350506020612a358682870161283f565b9250506040612a4686828701612875565b9150509250925092565b600060ff82169050919050565b612a6681612a50565b82525050565b6000602082019050612a816000830184612a5d565b92915050565b612a9081612816565b82525050565b6000602082019050612aab6000830184612a87565b92915050565b60008060408385031215612ac857612ac76127ec565b5b6000612ad685828601612875565b9250506020612ae785828601612875565b9150509250929050565b600060208284031215612b0757612b066127ec565b5b6000612b158482850161283f565b91505092915050565b600060208284031215612b3457612b336127ec565b5b6000612b4284828501612875565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112612b7057612b6f612b4b565b5b8235905067ffffffffffffffff811115612b8d57612b8c612b50565b5b602083019150836020820283011115612ba957612ba8612b55565b5b9250929050565b600080600060408486031215612bc957612bc86127ec565b5b600084013567ffffffffffffffff811115612be757612be66127f1565b5b612bf386828701612b5a565b93509350506020612c0686828701612917565b9150509250925092565b60008060408385031215612c2757612c266127ec565b5b6000612c358582860161283f565b9250506020612c468582860161283f565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612c86602083612745565b9150612c9182612c50565b602082019050919050565b60006020820190508181036000830152612cb581612c79565b9050919050565b7f42757920746178206d757374206265206265747765656e20302520616e64203960008201527f3525000000000000000000000000000000000000000000000000000000000000602082015250565b6000612d18602283612745565b9150612d2382612cbc565b604082019050919050565b60006020820190508181036000830152612d4781612d0b565b9050919050565b7f53656c6c20746178206d757374206265206265747765656e20302520616e642060008201527f3935250000000000000000000000000000000000000000000000000000000000602082015250565b6000612daa602383612745565b9150612db582612d4e565b604082019050919050565b60006020820190508181036000830152612dd981612d9d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612e4982612854565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612e7b57612e7a612e0f565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612ee2602683612745565b9150612eed82612e86565b604082019050919050565b60006020820190508181036000830152612f1181612ed5565b9050919050565b7f43616e277420617070726f76652066726f6d207a65726f206164647265737300600082015250565b6000612f4e601f83612745565b9150612f5982612f18565b602082019050919050565b60006020820190508181036000830152612f7d81612f41565b9050919050565b7f43616e277420617070726f766520746f207a65726f2061646472657373000000600082015250565b6000612fba601d83612745565b9150612fc582612f84565b602082019050919050565b60006020820190508181036000830152612fe981612fad565b9050919050565b7f43616e74207472616e736665722066726f6d2061646472657373207a65726f00600082015250565b6000613026601f83612745565b915061303182612ff0565b602082019050919050565b6000602082019050818103600083015261305581613019565b9050919050565b7f43616e74207472616e7366657220746f2061646472657373207a65726f000000600082015250565b6000613092601d83612745565b915061309d8261305c565b602082019050919050565b600060208201905081810360008301526130c181613085565b9050919050565b7f416d6f756e742073686f756c642062652061626f7665207a65726f0000000000600082015250565b60006130fe601b83612745565b9150613109826130c8565b602082019050919050565b6000602082019050818103600083015261312d816130f1565b9050919050565b7f4f6e6c79206f776e65722063616e207472616465206265666f7265207472616460008201527f696e672061637469766174696f6e000000000000000000000000000000000000602082015250565b6000613190602e83612745565b915061319b82613134565b604082019050919050565b600060208201905081810360008301526131bf81613183565b9050919050565b7f4578636565646564206d6178207472616e73616374696f6e206c696d69740000600082015250565b60006131fc601e83612745565b9150613207826131c6565b602082019050919050565b6000602082019050818103600083015261322b816131ef565b9050919050565b600061323d82612854565b915061324883612854565b92508282019050808211156132605761325f612e0f565b5b92915050565b7f45786365656473206d61782077616c6c65742062616c616e6365000000000000600082015250565b600061329c601a83612745565b91506132a782613266565b602082019050919050565b600060208201905081810360008301526132cb8161328f565b9050919050565b60006132dd82612854565b91506132e883612854565b9250828203905081811115613300576132ff612e0f565b5b92915050565b7f416d6f756e742068617320746f206265206c657373207468616e20746f74616c60008201527f207265666c656374696f6e730000000000000000000000000000000000000000602082015250565b6000613362602c83612745565b915061336d82613306565b604082019050919050565b6000602082019050818103600083015261339181613355565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506133d681612828565b92915050565b6000602082840312156133f2576133f16127ec565b5b6000613400848285016133c7565b91505092915050565b6000819050919050565b600061342e61342961342484613409565b612959565b612854565b9050919050565b61343e81613413565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61347981612816565b82525050565b600061348b8383613470565b60208301905092915050565b6000602082019050919050565b60006134af82613444565b6134b9818561344f565b93506134c483613460565b8060005b838110156134f55781516134dc888261347f565b97506134e783613497565b9250506001810190506134c8565b5085935050505092915050565b600060a08201905061351760008301886129d3565b6135246020830187613435565b818103604083015261353681866134a4565b90506135456060830185612a87565b61355260808301846129d3565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061359682612854565b91506135a183612854565b9250826135b1576135b061355c565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006135f2601b83612745565b91506135fd826135bc565b602082019050919050565b60006020820190508181036000830152613621816135e5565b9050919050565b600061363382612854565b915061363e83612854565b925082820261364c81612854565b9150828204841483151761366357613662612e0f565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006136c6602183612745565b91506136d18261366a565b604082019050919050565b600060208201905081810360008301526136f5816136b9565b905091905056fe746865207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212201a567ec16f53a2cea20be994d4069c6431f3dc94428bcd3656e73f7b56d1550f64736f6c63430008120033

Deployed Bytecode Sourcemap

4442:13428:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7102:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8010:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17109:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5770:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7193:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8418:443;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6075:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6916:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5818:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17241:454;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10403:206;;;;;;;;;;;;;:::i;:::-;;7301:140;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3998:148;;;;;;;;;;;;;:::i;:::-;;15691:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5965:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4713:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3784:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6019:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7007:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17705:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8211:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13281:197;;;;;;;;;;;;;:::i;:::-;;16667:260;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7818:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10163:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10286:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4154:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7102:83;7139:13;7172:5;;;;;;;;;;;;;;;;;7165:12;;7102:83;:::o;8010:193::-;8112:4;8134:39;8143:12;:10;:12::i;:::-;8157:7;8166:6;8134:8;:39::i;:::-;8191:4;8184:11;;8010:193;;;;:::o;17109:124::-;3921:12;:10;:12::i;:::-;3911:22;;:6;;;;;;;;;;:22;;;3903:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17209:16:::1;17191:15;;:34;;;;;;;;;;;;;;;;;;17109:124:::0;:::o;5770:41::-;;;;;;;;;;;;;:::o;7193:100::-;7246:7;4999:19;7266;;7193:100;:::o;8418:443::-;8550:4;8567:36;8577:6;8585:9;8596:6;8567:9;:36::i;:::-;8614:217;8637:6;8658:12;:10;:12::i;:::-;8685:135;8741:6;8685:135;;;;;;;;;;;;;;;;;:11;:19;8697:6;8685:19;;;;;;;;;;;;;;;:33;8705:12;:10;:12::i;:::-;8685:33;;;;;;;;;;;;;;;;:37;;:135;;;;;:::i;:::-;8614:8;:217::i;:::-;8849:4;8842:11;;8418:443;;;;;:::o;6075:49::-;;;;:::o;6916:83::-;6957:5;4799:1;6975:16;;6916:83;:::o;5818:28::-;;;;;;;;;;;;;:::o;17241:454::-;3921:12;:10;:12::i;:::-;3911:22;;:6;;;;;;;;;;:22;;;3903:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17390:1:::1;17375:11;:16;;:37;;;;;17410:2;17395:11;:17;;17375:37;17353:121;;;;;;;;;;;;:::i;:::-;;;;;;;;;17523:1;17507:12;:17;;:39;;;;;17544:2;17528:12;:18;;17507:39;17485:124;;;;;;;;;;;;:::i;:::-;;;;;;;;;17637:11;17622:12;:26;;;;17675:12;17659:13;:28;;;;17241:454:::0;;:::o;10403:206::-;10469:17;;;;;;;;;;;10453:33;;:12;:10;:12::i;:::-;:33;;;10445:42;;;;;;10500:26;10529:21;10500:50;;10563:38;10582:18;10563;:38::i;:::-;10434:175;10403:206::o;7301:140::-;7367:7;7394:39;7414:9;:18;7424:7;7414:18;;;;;;;;;;;;;;;;7394:19;:39::i;:::-;7387:46;;7301:140;;;:::o;3998:148::-;3921:12;:10;:12::i;:::-;3911:22;;:6;;;;;;;;;;:22;;;3903:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4105:1:::1;4068:40;;4089:6;::::0;::::1;;;;;;;;4068:40;;;;;;;;;;;;4136:1;4119:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3998:148::o:0;15691:108::-;3921:12;:10;:12::i;:::-;3911:22;;:6;;;;;;;;;;:22;;;3903:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15780:11:::1;15765:12;:26;;;;15691:108:::0;:::o;5965:47::-;;;;:::o;4713:42::-;;;;;;;;;;;;;;;;;:::o;3784:79::-;3822:7;3849:6;;;;;;;;;;;3842:13;;3784:79;:::o;6019:49::-;;;;:::o;7007:87::-;7046:13;7079:7;;;;;;;;;;;;;;;;;7072:14;;7007:87;:::o;17705:162::-;3921:12;:10;:12::i;:::-;3911:22;;:6;;;;;;;;;;:22;;;3903:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17841:18:::1;17819:19;:40;;;;17705:162:::0;:::o;8211:199::-;8316:4;8338:42;8348:12;:10;:12::i;:::-;8362:9;8373:6;8338:9;:42::i;:::-;8398:4;8391:11;;8211:199;;;;:::o;13281:197::-;13347:17;;;;;;;;;;;13331:33;;:12;:10;:12::i;:::-;:33;;;13323:42;;;;;;13376:23;13402:24;13420:4;13402:9;:24::i;:::-;13376:50;;13437:33;13454:15;13437:16;:33::i;:::-;13312:166;13281:197::o;16667:260::-;3921:12;:10;:12::i;:::-;3911:22;;:6;;;;;;;;;;:22;;;3903:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16810:9:::1;16805:115;16829:8;;:15;;16825:1;:19;16805:115;;;16900:8;16866:18;:31;16885:8;;16894:1;16885:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;16866:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;16846:3;;;;;:::i;:::-;;;;16805:115;;;;16667:260:::0;;;:::o;7818:184::-;7935:7;7967:11;:18;7979:5;7967:18;;;;;;;;;;;;;;;:27;7986:7;7967:27;;;;;;;;;;;;;;;;7960:34;;7818:184;;;;:::o;10163:115::-;3921:12;:10;:12::i;:::-;3911:22;;:6;;;;;;;;;;:22;;;3903:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10257:13:::1;10240:14;:30;;;;10163:115:::0;:::o;10286:109::-;3921:12;:10;:12::i;:::-;3911:22;;:6;;;;;;;;;;:22;;;3903:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10374:13:::1;10359:12;;:28;;;;;;;;;;;;;;;;;;10286:109:::0;:::o;4154:281::-;3921:12;:10;:12::i;:::-;3911:22;;:6;;;;;;;;;;:22;;;3903:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4277:1:::1;4257:22;;:8;:22;;::::0;4235:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;4390:8;4361:38;;4382:6;::::0;::::1;;;;;;;;4361:38;;;;;;;;;;;;4419:8;4410:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;4154:281:::0;:::o;1945:98::-;1998:7;2025:10;2018:17;;1945:98;:::o;7449:361::-;7593:1;7576:19;;:5;:19;;;7568:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;7669:1;7650:21;;:7;:21;;;7642:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;7748:6;7718:11;:18;7730:5;7718:18;;;;;;;;;;;;;;;:27;7737:7;7718:27;;;;;;;;;;;;;;;:36;;;;7786:7;7770:32;;7779:5;7770:32;;;7795:6;7770:32;;;;;;:::i;:::-;;;;;;;;7449:361;;;:::o;10809:2464::-;10947:1;10931:18;;:4;:18;;;10923:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;11018:1;11004:16;;:2;:16;;;10996:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;11082:1;11073:6;:10;11065:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;11140:7;:5;:7::i;:::-;11132:15;;:4;:15;;;;:32;;;;;11157:7;:5;:7::i;:::-;11151:13;;:2;:13;;;;11132:32;11128:1385;;;11219:12;;;;;;;;;;;11214:189;;11290:7;:5;:7::i;:::-;11282:15;;:4;:15;;;11252:135;;;;;;;;;;;;:::i;:::-;;;;;;;;;11214:189;11437:12;;11427:6;:22;;11419:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;11511:13;;;;;;;;;;;11505:19;;:2;:19;;;11501:199;;11600:14;;11591:6;11575:13;11585:2;11575:9;:13::i;:::-;:22;;;;:::i;:::-;:39;11545:139;;;;;;;;;;;;:::i;:::-;;;;;;;;;11501:199;11716:28;11747:24;11765:4;11747:9;:24::i;:::-;11716:55;;11786:12;11825:19;;11801:20;:43;;11786:58;;11889:12;;11865:20;:36;11861:112;;11945:12;;11922:35;;11861:112;12011:7;:35;;;;;12040:6;;;;;;;;;;;12039:7;12011:35;:77;;;;;12075:13;;;;;;;;;;;12067:21;;:4;:21;;;;12011:77;:113;;;;;12109:15;;;;;;;;;;;12011:113;:159;;;;;12146:18;:24;12165:4;12146:24;;;;;;;;;;;;;;;;;;;;;;;;;12145:25;12011:159;:203;;;;;12192:18;:22;12211:2;12192:22;;;;;;;;;;;;;;;;;;;;;;;;;12191:23;12011:203;11989:513;;;12249:38;12266:20;12249:16;:38::i;:::-;12306:26;12335:21;12306:50;;12400:1;12379:18;:22;12375:112;;;12426:41;12445:21;12426:18;:41::i;:::-;12375:112;12230:272;11989:513;11166:1347;;11128:1385;12525:12;12540:4;12525:19;;12603:18;:24;12622:4;12603:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;12631:18;:22;12650:2;12631:22;;;;;;;;;;;;;;;;;;;;;;;;;12603:50;12602:115;;;;12680:13;;;;;;;;;;;12672:21;;:4;:21;;;;:44;;;;;12703:13;;;;;;;;;;;12697:19;;:2;:19;;;;12672:44;12602:115;12584:628;;;12754:5;12744:15;;12584:628;;;12836:13;;;;;;;;;;;12828:21;;:4;:21;;;:55;;;;;12867:15;;;;;;;;;;;12853:30;;:2;:30;;;;12828:55;12824:163;;;12916:14;;12904:9;:26;;;;12959:12;;12949:7;:22;;;;12824:163;13046:13;;;;;;;;;;;13040:19;;:2;:19;;;:55;;;;;13079:15;;;;;;;;;;;13063:32;;:4;:32;;;;13040:55;13036:165;;;13128:15;;13116:9;:27;;;;13172:13;;13162:7;:23;;;;13036:165;12584:628;13224:41;13239:4;13245:2;13249:6;13257:7;13224:14;:41::i;:::-;10912:2361;10809:2464;;;:::o;2549:224::-;2669:7;2702:1;2697;:6;;2705:12;2689:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2729:9;2745:1;2741;:5;;;;:::i;:::-;2729:17;;2764:1;2757:8;;;2549:224;;;;;:::o;10050:105::-;10113:17;;;;;;;;;;;:26;;:34;10140:6;10113:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10050:105;:::o;9212:339::-;9307:7;9365:21;;9354:7;:32;;9332:126;;;;;;;;;;;;:::i;:::-;;;;;;;;;9469:19;9491:10;:8;:10::i;:::-;9469:32;;9519:24;9531:11;9519:7;:11;;:24;;;;:::i;:::-;9512:31;;;9212:339;;;:::o;9559:483::-;6231:4;6222:6;;:13;;;;;;;;;;;;;;;;;;9637:21:::1;9675:1;9661:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9637:40;;9706:4;9688;9693:1;9688:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;9732:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9722:4;9727:1;9722:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;9765:62;9782:4;9797:15;;;;;;;;;;;9815:11;9765:8;:62::i;:::-;9838:15;;;;;;;;;;;:66;;;9919:11;9945:1;9961:4;9988;10008:15;9838:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9626:416;6267:5:::0;6258:6;;:14;;;;;;;;;;;;;;;;;;9559:483;:::o;15844:273::-;16000:7;15995:23;;16009:9;:7;:9::i;:::-;15995:23;16029:44;16047:6;16055:9;16066:6;16029:17;:44::i;:::-;16089:7;16084:25;;16098:11;:9;:11::i;:::-;16084:25;15844:273;;;;:::o;16935:164::-;16977:7;16998:15;17015;17034:19;:17;:19::i;:::-;16997:56;;;;17071:20;17083:7;17071;:11;;:20;;;;:::i;:::-;17064:27;;;;16935:164;:::o;3035:132::-;3093:7;3120:39;3124:1;3127;3120:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3113:46;;3035:132;;;;:::o;8869:214::-;8924:1;8911:9;;:14;:30;;;;;8940:1;8929:7;;:12;8911:30;8943:7;8907:43;8982:9;;8962:17;:29;;;;9020:7;;9002:15;:25;;;;9052:1;9040:9;:13;;;;9074:1;9064:7;:11;;;;8869:214;:::o;13486:636::-;13633:15;13663:23;13701:12;13728:23;13766:12;13793:13;13820:22;13834:7;13820:13;:22::i;:::-;13618:224;;;;;;;;;;;;13873:30;13895:7;13873:9;:17;13883:6;13873:17;;;;;;;;;;;;;;;;:21;;:30;;;;:::i;:::-;13853:9;:17;13863:6;13853:17;;;;;;;;;;;;;;;:50;;;;13937:41;13962:15;13937:9;:20;13947:9;13937:20;;;;;;;;;;;;;;;;:24;;:41;;;;:::i;:::-;13914:9;:20;13924:9;13914:20;;;;;;;;;;;;;;;:64;;;;13989:22;14005:5;13989:15;:22::i;:::-;14022:32;14043:4;14049;14022:20;:32::i;:::-;14087:9;14070:44;;14079:6;14070:44;;;14098:15;14070:44;;;;;;:::i;:::-;;;;;;;;13607:515;;;;;;13486:636;;;:::o;9091:113::-;9143:17;;9131:9;:29;;;;9181:15;;9171:7;:25;;;;9091:113::o;14130:132::-;14181:7;14190;14218:21;;4999:19;14210:44;;;;14130:132;;:::o;3175:223::-;3295:7;3327:1;3323;:5;3330:12;3315:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3354:9;3370:1;3366;:5;;;;:::i;:::-;3354:17;;3389:1;3382:8;;;3175:223;;;;;:::o;14499:705::-;14602:7;14624;14646;14668;14690;14712;14748:23;14773:12;14787:13;14804:90;14830:7;14852:9;;14876:7;;14804:11;:90::i;:::-;14747:147;;;;;;14905:19;14927:10;:8;:10::i;:::-;14905:32;;14949:15;14966:23;14991:12;15007:109;15033:7;15055:4;15074:5;15094:11;15007;:109::i;:::-;14948:168;;;;;;15135:7;15144:15;15161:4;15167:15;15184:4;15190:5;15127:69;;;;;;;;;;;;;;;;;;;14499:705;;;;;;;:::o;2405:136::-;2463:7;2490:43;2494:1;2497;2490:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2483:50;;2405:136;;;;:::o;2218:179::-;2276:7;2296:9;2312:1;2308;:5;;;;:::i;:::-;2296:17;;2337:1;2332;:6;;2324:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2388:1;2381:8;;;2218:179;;;;:::o;14270:221::-;14329:19;14351:10;:8;:10::i;:::-;14329:32;;14372:13;14388:22;14398:11;14388:5;:9;;:22;;;;:::i;:::-;14372:38;;14448:35;14477:5;14448:9;:24;14466:4;14448:24;;;;;;;;;;;;;;;;:28;;:35;;;;:::i;:::-;14421:9;:24;14439:4;14421:24;;;;;;;;;;;;;;;:62;;;;14318:173;;14270:221;:::o;10617:184::-;10718:31;10744:4;10718:21;;:25;;:31;;;;:::i;:::-;10694:21;:55;;;;10773:20;10788:4;10773:10;;:14;;:20;;;;:::i;:::-;10760:10;:33;;;;10617:184;;:::o;15212:469::-;15381:7;15403;15425;15460:12;15475:30;15501:3;15475:21;15487:8;15475:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15460:45;;15516:13;15532:28;15556:3;15532:19;15544:6;15532:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15516:44;;15571:23;15597:28;15619:5;15597:17;15609:4;15597:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15571:54;;15644:15;15661:4;15667:5;15636:37;;;;;;;;;15212:469;;;;;;;:::o;16125:534::-;16319:7;16341;16363;16398:15;16416:24;16428:11;16416:7;:11;;:24;;;;:::i;:::-;16398:42;;16451:12;16466:21;16475:11;16466:4;:8;;:21;;;;:::i;:::-;16451:36;;16498:13;16514:22;16524:11;16514:5;:9;;:22;;;;:::i;:::-;16498:38;;16547:23;16573:28;16595:5;16573:17;16585:4;16573:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16547:54;;16620:7;16629:15;16646:4;16612:39;;;;;;;;;;16125:534;;;;;;;;:::o;2781:246::-;2839:7;2868:1;2863;:6;2859:47;;2893:1;2886:8;;;;2859:47;2916:9;2932:1;2928;:5;;;;:::i;:::-;2916:17;;2961:1;2956;2952;:5;;;;:::i;:::-;:10;2944:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3018:1;3011:8;;;2781: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:116::-;3516:21;3531:5;3516:21;:::i;:::-;3509:5;3506:32;3496:60;;3552:1;3549;3542:12;3496:60;3446:116;:::o;3568:133::-;3611:5;3649:6;3636:20;3627:29;;3665:30;3689:5;3665:30;:::i;:::-;3568:133;;;;:::o;3707:323::-;3763:6;3812:2;3800:9;3791:7;3787:23;3783:32;3780:119;;;3818:79;;:::i;:::-;3780:119;3938:1;3963:50;4005:7;3996:6;3985:9;3981:22;3963:50;:::i;:::-;3953:60;;3909:114;3707:323;;;;:::o;4036:60::-;4064:3;4085:5;4078:12;;4036:60;;;:::o;4102:142::-;4152:9;4185:53;4203:34;4212:24;4230:5;4212:24;:::i;:::-;4203:34;:::i;:::-;4185:53;:::i;:::-;4172:66;;4102:142;;;:::o;4250:126::-;4300:9;4333:37;4364:5;4333:37;:::i;:::-;4320:50;;4250:126;;;:::o;4382:152::-;4458:9;4491:37;4522:5;4491:37;:::i;:::-;4478:50;;4382:152;;;:::o;4540:183::-;4653:63;4710:5;4653:63;:::i;:::-;4648:3;4641:76;4540:183;;:::o;4729:274::-;4848:4;4886:2;4875:9;4871:18;4863:26;;4899:97;4993:1;4982:9;4978:17;4969:6;4899:97;:::i;:::-;4729:274;;;;:::o;5009:118::-;5096:24;5114:5;5096:24;:::i;:::-;5091:3;5084:37;5009:118;;:::o;5133:222::-;5226:4;5264:2;5253:9;5249:18;5241:26;;5277:71;5345:1;5334:9;5330:17;5321:6;5277:71;:::i;:::-;5133:222;;;;:::o;5361:619::-;5438:6;5446;5454;5503:2;5491:9;5482:7;5478:23;5474:32;5471:119;;;5509:79;;:::i;:::-;5471:119;5629:1;5654:53;5699:7;5690:6;5679:9;5675:22;5654:53;:::i;:::-;5644:63;;5600:117;5756:2;5782:53;5827:7;5818:6;5807:9;5803:22;5782:53;:::i;:::-;5772:63;;5727:118;5884:2;5910:53;5955:7;5946:6;5935:9;5931:22;5910:53;:::i;:::-;5900:63;;5855:118;5361:619;;;;;:::o;5986:86::-;6021:7;6061:4;6054:5;6050:16;6039:27;;5986:86;;;:::o;6078:112::-;6161:22;6177:5;6161:22;:::i;:::-;6156:3;6149:35;6078:112;;:::o;6196:214::-;6285:4;6323:2;6312:9;6308:18;6300:26;;6336:67;6400:1;6389:9;6385:17;6376:6;6336:67;:::i;:::-;6196:214;;;;:::o;6416:118::-;6503:24;6521:5;6503:24;:::i;:::-;6498:3;6491:37;6416:118;;:::o;6540:222::-;6633:4;6671:2;6660:9;6656:18;6648:26;;6684:71;6752:1;6741:9;6737:17;6728:6;6684:71;:::i;:::-;6540:222;;;;:::o;6768:474::-;6836:6;6844;6893:2;6881:9;6872:7;6868:23;6864:32;6861:119;;;6899:79;;:::i;:::-;6861:119;7019:1;7044:53;7089:7;7080:6;7069:9;7065:22;7044:53;:::i;:::-;7034:63;;6990:117;7146:2;7172:53;7217:7;7208:6;7197:9;7193:22;7172:53;:::i;:::-;7162:63;;7117:118;6768:474;;;;;:::o;7248:329::-;7307:6;7356:2;7344:9;7335:7;7331:23;7327:32;7324:119;;;7362:79;;:::i;:::-;7324:119;7482:1;7507:53;7552:7;7543:6;7532:9;7528:22;7507:53;:::i;:::-;7497:63;;7453:117;7248:329;;;;:::o;7583:::-;7642:6;7691:2;7679:9;7670:7;7666:23;7662:32;7659:119;;;7697:79;;:::i;:::-;7659:119;7817:1;7842:53;7887:7;7878:6;7867:9;7863:22;7842:53;:::i;:::-;7832:63;;7788:117;7583:329;;;;:::o;7918:117::-;8027:1;8024;8017:12;8041:117;8150:1;8147;8140:12;8164:117;8273:1;8270;8263:12;8304:568;8377:8;8387:6;8437:3;8430:4;8422:6;8418:17;8414:27;8404:122;;8445:79;;:::i;:::-;8404:122;8558:6;8545:20;8535:30;;8588:18;8580:6;8577:30;8574:117;;;8610:79;;:::i;:::-;8574:117;8724:4;8716:6;8712:17;8700:29;;8778:3;8770:4;8762:6;8758:17;8748:8;8744:32;8741:41;8738:128;;;8785:79;;:::i;:::-;8738:128;8304:568;;;;;:::o;8878:698::-;8970:6;8978;8986;9035:2;9023:9;9014:7;9010:23;9006:32;9003:119;;;9041:79;;:::i;:::-;9003:119;9189:1;9178:9;9174:17;9161:31;9219:18;9211:6;9208:30;9205:117;;;9241:79;;:::i;:::-;9205:117;9354:80;9426:7;9417:6;9406:9;9402:22;9354:80;:::i;:::-;9336:98;;;;9132:312;9483:2;9509:50;9551:7;9542:6;9531:9;9527:22;9509:50;:::i;:::-;9499:60;;9454:115;8878:698;;;;;:::o;9582:474::-;9650:6;9658;9707:2;9695:9;9686:7;9682:23;9678:32;9675:119;;;9713:79;;:::i;:::-;9675:119;9833:1;9858:53;9903:7;9894:6;9883:9;9879:22;9858:53;:::i;:::-;9848:63;;9804:117;9960:2;9986:53;10031:7;10022:6;10011:9;10007:22;9986:53;:::i;:::-;9976:63;;9931:118;9582:474;;;;;:::o;10062:182::-;10202:34;10198:1;10190:6;10186:14;10179:58;10062:182;:::o;10250:366::-;10392:3;10413:67;10477:2;10472:3;10413:67;:::i;:::-;10406:74;;10489:93;10578:3;10489:93;:::i;:::-;10607:2;10602:3;10598:12;10591:19;;10250:366;;;:::o;10622:419::-;10788:4;10826:2;10815:9;10811:18;10803:26;;10875:9;10869:4;10865:20;10861:1;10850:9;10846:17;10839:47;10903:131;11029:4;10903:131;:::i;:::-;10895:139;;10622:419;;;:::o;11047:221::-;11187:34;11183:1;11175:6;11171:14;11164:58;11256:4;11251:2;11243:6;11239:15;11232:29;11047:221;:::o;11274:366::-;11416:3;11437:67;11501:2;11496:3;11437:67;:::i;:::-;11430:74;;11513:93;11602:3;11513:93;:::i;:::-;11631:2;11626:3;11622:12;11615:19;;11274:366;;;:::o;11646:419::-;11812:4;11850:2;11839:9;11835:18;11827:26;;11899:9;11893:4;11889:20;11885:1;11874:9;11870:17;11863:47;11927:131;12053:4;11927:131;:::i;:::-;11919:139;;11646:419;;;:::o;12071:222::-;12211:34;12207:1;12199:6;12195:14;12188:58;12280:5;12275:2;12267:6;12263:15;12256:30;12071:222;:::o;12299:366::-;12441:3;12462:67;12526:2;12521:3;12462:67;:::i;:::-;12455:74;;12538:93;12627:3;12538:93;:::i;:::-;12656:2;12651:3;12647:12;12640:19;;12299:366;;;:::o;12671:419::-;12837:4;12875:2;12864:9;12860:18;12852:26;;12924:9;12918:4;12914:20;12910:1;12899:9;12895:17;12888:47;12952:131;13078:4;12952:131;:::i;:::-;12944:139;;12671:419;;;:::o;13096:180::-;13144:77;13141:1;13134:88;13241:4;13238:1;13231:15;13265:4;13262:1;13255:15;13282:180;13330:77;13327:1;13320:88;13427:4;13424:1;13417:15;13451:4;13448:1;13441:15;13468:233;13507:3;13530:24;13548:5;13530:24;:::i;:::-;13521:33;;13576:66;13569:5;13566:77;13563:103;;13646:18;;:::i;:::-;13563:103;13693:1;13686:5;13682:13;13675:20;;13468:233;;;:::o;13707:225::-;13847:34;13843:1;13835:6;13831:14;13824:58;13916:8;13911:2;13903:6;13899:15;13892:33;13707:225;:::o;13938:366::-;14080:3;14101:67;14165:2;14160:3;14101:67;:::i;:::-;14094:74;;14177:93;14266:3;14177:93;:::i;:::-;14295:2;14290:3;14286:12;14279:19;;13938:366;;;:::o;14310:419::-;14476:4;14514:2;14503:9;14499:18;14491:26;;14563:9;14557:4;14553:20;14549:1;14538:9;14534:17;14527:47;14591:131;14717:4;14591:131;:::i;:::-;14583:139;;14310:419;;;:::o;14735:181::-;14875:33;14871:1;14863:6;14859:14;14852:57;14735:181;:::o;14922:366::-;15064:3;15085:67;15149:2;15144:3;15085:67;:::i;:::-;15078:74;;15161:93;15250:3;15161:93;:::i;:::-;15279:2;15274:3;15270:12;15263:19;;14922:366;;;:::o;15294:419::-;15460:4;15498:2;15487:9;15483:18;15475:26;;15547:9;15541:4;15537:20;15533:1;15522:9;15518:17;15511:47;15575:131;15701:4;15575:131;:::i;:::-;15567:139;;15294:419;;;:::o;15719:179::-;15859:31;15855:1;15847:6;15843:14;15836:55;15719:179;:::o;15904:366::-;16046:3;16067:67;16131:2;16126:3;16067:67;:::i;:::-;16060:74;;16143:93;16232:3;16143:93;:::i;:::-;16261:2;16256:3;16252:12;16245:19;;15904:366;;;:::o;16276:419::-;16442:4;16480:2;16469:9;16465:18;16457:26;;16529:9;16523:4;16519:20;16515:1;16504:9;16500:17;16493:47;16557:131;16683:4;16557:131;:::i;:::-;16549:139;;16276:419;;;:::o;16701:181::-;16841:33;16837:1;16829:6;16825:14;16818:57;16701:181;:::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:179::-;17825:31;17821:1;17813:6;17809:14;17802:55;17685:179;:::o;17870:366::-;18012:3;18033:67;18097:2;18092:3;18033:67;:::i;:::-;18026:74;;18109:93;18198:3;18109:93;:::i;:::-;18227:2;18222:3;18218:12;18211:19;;17870:366;;;:::o;18242:419::-;18408:4;18446:2;18435:9;18431:18;18423:26;;18495:9;18489:4;18485:20;18481:1;18470:9;18466:17;18459:47;18523:131;18649:4;18523:131;:::i;:::-;18515:139;;18242:419;;;:::o;18667:177::-;18807:29;18803:1;18795:6;18791:14;18784:53;18667:177;:::o;18850:366::-;18992:3;19013:67;19077:2;19072:3;19013:67;:::i;:::-;19006:74;;19089:93;19178:3;19089:93;:::i;:::-;19207:2;19202:3;19198:12;19191:19;;18850:366;;;:::o;19222:419::-;19388:4;19426:2;19415:9;19411:18;19403:26;;19475:9;19469:4;19465:20;19461:1;19450:9;19446:17;19439:47;19503:131;19629:4;19503:131;:::i;:::-;19495:139;;19222:419;;;:::o;19647:233::-;19787:34;19783:1;19775:6;19771:14;19764:58;19856:16;19851:2;19843:6;19839:15;19832:41;19647:233;:::o;19886:366::-;20028:3;20049:67;20113:2;20108:3;20049:67;:::i;:::-;20042:74;;20125:93;20214:3;20125:93;:::i;:::-;20243:2;20238:3;20234:12;20227:19;;19886:366;;;:::o;20258:419::-;20424:4;20462:2;20451:9;20447:18;20439:26;;20511:9;20505:4;20501:20;20497:1;20486:9;20482:17;20475:47;20539:131;20665:4;20539:131;:::i;:::-;20531:139;;20258:419;;;:::o;20683:180::-;20823:32;20819:1;20811:6;20807:14;20800:56;20683:180;:::o;20869:366::-;21011:3;21032:67;21096:2;21091:3;21032:67;:::i;:::-;21025:74;;21108:93;21197:3;21108:93;:::i;:::-;21226:2;21221:3;21217:12;21210:19;;20869:366;;;:::o;21241:419::-;21407:4;21445:2;21434:9;21430:18;21422:26;;21494:9;21488:4;21484:20;21480:1;21469:9;21465:17;21458:47;21522:131;21648:4;21522:131;:::i;:::-;21514:139;;21241:419;;;:::o;21666:191::-;21706:3;21725:20;21743:1;21725:20;:::i;:::-;21720:25;;21759:20;21777:1;21759:20;:::i;:::-;21754:25;;21802:1;21799;21795:9;21788:16;;21823:3;21820:1;21817:10;21814:36;;;21830:18;;:::i;:::-;21814:36;21666:191;;;;:::o;21863:176::-;22003:28;21999:1;21991:6;21987:14;21980:52;21863:176;:::o;22045:366::-;22187:3;22208:67;22272:2;22267:3;22208:67;:::i;:::-;22201:74;;22284:93;22373:3;22284:93;:::i;:::-;22402:2;22397:3;22393:12;22386:19;;22045:366;;;:::o;22417:419::-;22583:4;22621:2;22610:9;22606:18;22598:26;;22670:9;22664:4;22660:20;22656:1;22645:9;22641:17;22634:47;22698:131;22824:4;22698:131;:::i;:::-;22690:139;;22417:419;;;:::o;22842:194::-;22882:4;22902:20;22920:1;22902:20;:::i;:::-;22897:25;;22936:20;22954:1;22936:20;:::i;:::-;22931:25;;22980:1;22977;22973:9;22965:17;;23004:1;22998:4;22995:11;22992:37;;;23009:18;;:::i;:::-;22992:37;22842:194;;;;:::o;23042:231::-;23182:34;23178:1;23170:6;23166:14;23159:58;23251:14;23246:2;23238:6;23234:15;23227:39;23042:231;:::o;23279:366::-;23421:3;23442:67;23506:2;23501:3;23442:67;:::i;:::-;23435:74;;23518:93;23607:3;23518:93;:::i;:::-;23636:2;23631:3;23627:12;23620:19;;23279:366;;;:::o;23651:419::-;23817:4;23855:2;23844:9;23840:18;23832:26;;23904:9;23898:4;23894:20;23890:1;23879:9;23875:17;23868:47;23932:131;24058:4;23932:131;:::i;:::-;23924:139;;23651:419;;;:::o;24076:180::-;24124:77;24121:1;24114:88;24221:4;24218:1;24211:15;24245:4;24242:1;24235:15;24262:143;24319:5;24350:6;24344:13;24335:22;;24366:33;24393:5;24366:33;:::i;:::-;24262:143;;;;:::o;24411:351::-;24481:6;24530:2;24518:9;24509:7;24505:23;24501:32;24498:119;;;24536:79;;:::i;:::-;24498:119;24656:1;24681:64;24737:7;24728:6;24717:9;24713:22;24681:64;:::i;:::-;24671:74;;24627:128;24411:351;;;;:::o;24768:85::-;24813:7;24842:5;24831:16;;24768:85;;;:::o;24859:158::-;24917:9;24950:61;24968:42;24977:32;25003:5;24977:32;:::i;:::-;24968:42;:::i;:::-;24950:61;:::i;:::-;24937:74;;24859:158;;;:::o;25023:147::-;25118:45;25157:5;25118:45;:::i;:::-;25113:3;25106:58;25023:147;;:::o;25176:114::-;25243:6;25277:5;25271:12;25261:22;;25176:114;;;:::o;25296:184::-;25395:11;25429:6;25424:3;25417:19;25469:4;25464:3;25460:14;25445:29;;25296:184;;;;:::o;25486:132::-;25553:4;25576:3;25568:11;;25606:4;25601:3;25597:14;25589:22;;25486:132;;;:::o;25624:108::-;25701:24;25719:5;25701:24;:::i;:::-;25696:3;25689:37;25624:108;;:::o;25738:179::-;25807:10;25828:46;25870:3;25862:6;25828:46;:::i;:::-;25906:4;25901:3;25897:14;25883:28;;25738:179;;;;:::o;25923:113::-;25993:4;26025;26020:3;26016:14;26008:22;;25923:113;;;:::o;26072:732::-;26191:3;26220:54;26268:5;26220:54;:::i;:::-;26290:86;26369:6;26364:3;26290:86;:::i;:::-;26283:93;;26400:56;26450:5;26400:56;:::i;:::-;26479:7;26510:1;26495:284;26520:6;26517:1;26514:13;26495:284;;;26596:6;26590:13;26623:63;26682:3;26667:13;26623:63;:::i;:::-;26616:70;;26709:60;26762:6;26709:60;:::i;:::-;26699:70;;26555:224;26542:1;26539;26535:9;26530:14;;26495:284;;;26499:14;26795:3;26788:10;;26196:608;;;26072:732;;;;:::o;26810:831::-;27073:4;27111:3;27100:9;27096:19;27088:27;;27125:71;27193:1;27182:9;27178:17;27169:6;27125:71;:::i;:::-;27206:80;27282:2;27271:9;27267:18;27258:6;27206:80;:::i;:::-;27333:9;27327:4;27323:20;27318:2;27307:9;27303:18;27296:48;27361:108;27464:4;27455:6;27361:108;:::i;:::-;27353:116;;27479:72;27547:2;27536:9;27532:18;27523:6;27479:72;:::i;:::-;27561:73;27629:3;27618:9;27614:19;27605:6;27561:73;:::i;:::-;26810:831;;;;;;;;:::o;27647:180::-;27695:77;27692:1;27685:88;27792:4;27789:1;27782:15;27816:4;27813:1;27806:15;27833:185;27873:1;27890:20;27908:1;27890:20;:::i;:::-;27885:25;;27924:20;27942:1;27924:20;:::i;:::-;27919:25;;27963:1;27953:35;;27968:18;;:::i;:::-;27953:35;28010:1;28007;28003:9;27998:14;;27833:185;;;;:::o;28024:177::-;28164:29;28160:1;28152:6;28148:14;28141:53;28024:177;:::o;28207:366::-;28349:3;28370:67;28434:2;28429:3;28370:67;:::i;:::-;28363:74;;28446:93;28535:3;28446:93;:::i;:::-;28564:2;28559:3;28555:12;28548:19;;28207:366;;;:::o;28579:419::-;28745:4;28783:2;28772:9;28768:18;28760:26;;28832:9;28826:4;28822:20;28818:1;28807:9;28803:17;28796:47;28860:131;28986:4;28860:131;:::i;:::-;28852:139;;28579:419;;;:::o;29004:410::-;29044:7;29067:20;29085:1;29067:20;:::i;:::-;29062:25;;29101:20;29119:1;29101:20;:::i;:::-;29096:25;;29156:1;29153;29149:9;29178:30;29196:11;29178:30;:::i;:::-;29167:41;;29357:1;29348:7;29344:15;29341:1;29338:22;29318:1;29311:9;29291:83;29268:139;;29387:18;;:::i;:::-;29268:139;29052:362;29004:410;;;;:::o;29420:220::-;29560:34;29556:1;29548:6;29544:14;29537:58;29629:3;29624:2;29616:6;29612:15;29605:28;29420:220;:::o;29646:366::-;29788:3;29809:67;29873:2;29868:3;29809:67;:::i;:::-;29802:74;;29885:93;29974:3;29885:93;:::i;:::-;30003:2;29998:3;29994:12;29987:19;;29646:366;;;:::o;30018:419::-;30184:4;30222:2;30211:9;30207:18;30199:26;;30271:9;30265:4;30261:20;30257:1;30246:9;30242:17;30235:47;30299:131;30425:4;30299:131;:::i;:::-;30291:139;;30018:419;;;:::o

Swarm Source

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