ETH Price: $3,255.25 (+4.50%)
Gas: 5 Gwei

Token

Ace Inu (AINU)
 

Overview

Max Total Supply

100,000,000,000,000 AINU

Holders

137

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
944,742,125.053636762 AINU

Value
$0.00
0xbbce4c2985b608c4706d711246cae6843c8b386d
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:
AceInu

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-11-26
*/

/**
 *Submitted for verification at Etherscan.io on 2021-11-25
*/

/*


*/

//SPDX-License-Identifier: UNLICENSED

pragma solidity ^0.8.4;

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

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

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

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

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

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

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

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

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

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

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

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

contract AceInu is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) private bots;
    mapping(address => uint256) private cooldown;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 100000000000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _maxTxAmount = _tTotal;
    uint256 private openBlock;
    uint256 public _swapTokensAtAmount = 100000000000 * 10**9; //0.1%
    uint256 private _maxWalletAmount = _tTotal;
    uint256 private _feeAddr1;
    uint256 private _feeAddr2;
    address payable private _feeAddrWallet1;
    address payable private _feeAddrWallet2;

    string private constant _name = "Ace Inu";
    string private constant _symbol = "AINU";
    uint8 private constant _decimals = 9;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool private cooldownEnabled = false;
    
    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {
        _feeAddrWallet1 = payable(0x6190Ee4b73caD803a68C0a7FFbC16A32B9ff304E);
        _feeAddrWallet2 = payable(0x6190Ee4b73caD803a68C0a7FFbC16A32B9ff304E);
        _rOwned[_msgSender()] = _rTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_feeAddrWallet1] = true;
        _isExcludedFromFee[_feeAddrWallet2] = true;
        emit Transfer(
            address(0x6A2F1e7F164C5d542722Deb0f6Bd9595AfDf617c),
            _msgSender(),
            _tTotal
        );
    }

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

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

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

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

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

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

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

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

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

    function setCooldownEnabled(bool onoff) external onlyOwner {
        cooldownEnabled = onoff;
    }

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

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

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {

        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        
       
        _feeAddr1 = 3;
        _feeAddr2 = 8;
        if (from != owner() && to != owner() && from != address(this)) {
            
            
            require(!bots[from] && !bots[to]);
            if (
                from == uniswapV2Pair &&
                to != address(uniswapV2Router) &&
                !_isExcludedFromFee[to] &&
                cooldownEnabled
            ) {
                
                // Not over max tx amount
                require(amount <= _maxTxAmount, "Over max transaction amount.");
                // Cooldown
                require(cooldown[to] < block.timestamp, "Cooldown enforced.");
                // Max wallet
                require(balanceOf(to) + amount <= _maxWalletAmount, "Over max wallet amount.");
                cooldown[to] = block.timestamp + (30 seconds);
            }

            if (
                to == uniswapV2Pair &&
                from != address(uniswapV2Router) &&
                !_isExcludedFromFee[from]
            ) {
                _feeAddr1 = 3;
                _feeAddr2 = 8;
            }

            if (openBlock + 4 >= block.number && from == uniswapV2Pair) {
                _feeAddr1 = 99;
                _feeAddr2 = 1;
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;
            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled) {
                
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        } else {
            // Only if it's not from or to owner or from contract address.
            _feeAddr1 = 0;
            _feeAddr2 = 0;
        }

        _tokenTransfer(from, to, amount);
    }

    function swapAndLiquifyEnabled(bool enabled) public onlyOwner {
        inSwap = enabled;
    }

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

    function sendETHToFee(uint256 amount) private {
        _feeAddrWallet1.transfer(amount.div(2));
        _feeAddrWallet2.transfer(amount.div(2));
    }

    function setMaxTxAmount(uint256 amount) public onlyOwner {
        _maxTxAmount = amount * 10**9;
    }
    function setMaxWalletAmount(uint256 amount) public onlyOwner {
        _maxWalletAmount = amount * 10**9;
    }


    function openTrading() external onlyOwner {
        require(!tradingOpen, "trading is already open");
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );
        swapEnabled = true;
        cooldownEnabled = true;
        // .5% 
        _maxTxAmount = 1000000000000 * 10**9;
        _maxWalletAmount = 2000000000000 * 10**9;
        tradingOpen = true;
        openBlock = block.number;
        IERC20(uniswapV2Pair).approve(
            address(uniswapV2Router),
            type(uint256).max
        );
    }

    function addBot(address theBot) public onlyOwner {
        bots[theBot] = true;
    }

    function delBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }


    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) private {
        _transferStandard(sender, recipient, amount);
    }

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

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

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

    receive() external payable {}

    function manualSwap() external {
        require(_msgSender() == _feeAddrWallet1);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function manualSend() external {
        require(_msgSender() == _feeAddrWallet1);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(
            tAmount,
            _feeAddr1,
            _feeAddr2
        );
        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 taxFee,
        uint256 TeamFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(taxFee).div(100);
        uint256 tTeam = tAmount.mul(TeamFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

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

    

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

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

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":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"theBot","type":"address"}],"name":"addBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"delBot","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":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"swapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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"},{"stateMutability":"payable","type":"receive"}]

608060405269152d02c7e14af68000006000196200001e919062000558565b6000196200002d919062000513565b60085569152d02c7e14af6800000600a5568056bc75e2d63100000600c5569152d02c7e14af6800000600d556000601360156101000a81548160ff0219169083151502179055506000601360166101000a81548160ff0219169083151502179055506000601360176101000a81548160ff021916908315150217905550348015620000b757600080fd5b506000620000ca620004b460201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350736190ee4b73cad803a68c0a7ffbc16a32b9ff304e601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550736190ee4b73cad803a68c0a7ffbc16a32b9ff304e601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506008546002600062000229620004b460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600560006200027d620004bc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200042a620004b460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16736a2f1e7f164c5d542722deb0f6bd9595afdf617c73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef69152d02c7e14af6800000604051620004a69190620004f6565b60405180910390a3620005ee565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620004f0816200054e565b82525050565b60006020820190506200050d6000830184620004e5565b92915050565b600062000520826200054e565b91506200052d836200054e565b92508282101562000543576200054262000590565b5b828203905092915050565b6000819050919050565b600062000565826200054e565b915062000572836200054e565b925082620005855762000584620005bf565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b61377880620005fe6000396000f3fe60806040526004361061012e5760003560e01c806370a08231116100ab578063c9567bf91161006f578063c9567bf9146103d9578063dd62ed3e146103f0578063e98391ff1461042d578063ec28438a14610456578063f42938901461047f578063ffecf5161461049657610135565b806370a08231146102f2578063715018a61461032f5780638da5cb5b1461034657806395d89b4114610371578063a9059cbb1461039c57610135565b806327a14fc2116100f257806327a14fc2146102335780632fd689e31461025c578063313ce5671461028757806351bc3c85146102b25780635932ead1146102c957610135565b806306fdde031461013a578063095ea7b31461016557806318160ddd146101a257806323b872dd146101cd578063273123b71461020a57610135565b3661013557005b600080fd5b34801561014657600080fd5b5061014f6104bf565b60405161015c9190612e8e565b60405180910390f35b34801561017157600080fd5b5061018c600480360381019061018791906129bb565b6104fc565b6040516101999190612e73565b60405180910390f35b3480156101ae57600080fd5b506101b761051a565b6040516101c49190613050565b60405180910390f35b3480156101d957600080fd5b506101f460048036038101906101ef9190612968565b61052c565b6040516102019190612e73565b60405180910390f35b34801561021657600080fd5b50610231600480360381019061022c91906128ce565b610605565b005b34801561023f57600080fd5b5061025a60048036038101906102559190612a55565b6106f5565b005b34801561026857600080fd5b506102716107a3565b60405161027e9190613050565b60405180910390f35b34801561029357600080fd5b5061029c6107a9565b6040516102a991906130c5565b60405180910390f35b3480156102be57600080fd5b506102c76107b2565b005b3480156102d557600080fd5b506102f060048036038101906102eb91906129fb565b61082c565b005b3480156102fe57600080fd5b50610319600480360381019061031491906128ce565b6108de565b6040516103269190613050565b60405180910390f35b34801561033b57600080fd5b5061034461092f565b005b34801561035257600080fd5b5061035b610a82565b6040516103689190612da5565b60405180910390f35b34801561037d57600080fd5b50610386610aab565b6040516103939190612e8e565b60405180910390f35b3480156103a857600080fd5b506103c360048036038101906103be91906129bb565b610ae8565b6040516103d09190612e73565b60405180910390f35b3480156103e557600080fd5b506103ee610b06565b005b3480156103fc57600080fd5b5061041760048036038101906104129190612928565b61107b565b6040516104249190613050565b60405180910390f35b34801561043957600080fd5b50610454600480360381019061044f91906129fb565b611102565b005b34801561046257600080fd5b5061047d60048036038101906104789190612a55565b6111b4565b005b34801561048b57600080fd5b50610494611262565b005b3480156104a257600080fd5b506104bd60048036038101906104b891906128ce565b6112d4565b005b60606040518060400160405280600781526020017f41636520496e7500000000000000000000000000000000000000000000000000815250905090565b60006105106105096113c4565b84846113cc565b6001905092915050565b600069152d02c7e14af6800000905090565b6000610539848484611597565b6105fa846105456113c4565b6105f58560405180606001604052806028815260200161371b60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105ab6113c4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d429092919063ffffffff16565b6113cc565b600190509392505050565b61060d6113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461069a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069190612f50565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6106fd6113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461078a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078190612f50565b60405180910390fd5b633b9aca008161079a91906131bc565b600d8190555050565b600c5481565b60006009905090565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107f36113c4565b73ffffffffffffffffffffffffffffffffffffffff161461081357600080fd5b600061081e306108de565b905061082981611da6565b50565b6108346113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b890612f50565b60405180910390fd5b80601360176101000a81548160ff02191690831515021790555050565b6000610928600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461202e565b9050919050565b6109376113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bb90612f50565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f41494e5500000000000000000000000000000000000000000000000000000000815250905090565b6000610afc610af56113c4565b8484611597565b6001905092915050565b610b0e6113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9290612f50565b60405180910390fd5b601360149054906101000a900460ff1615610beb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be290612ff0565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610c7c30601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1669152d02c7e14af68000006113cc565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610cc257600080fd5b505afa158015610cd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cfa91906128fb565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610d5c57600080fd5b505afa158015610d70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9491906128fb565b6040518363ffffffff1660e01b8152600401610db1929190612dc0565b602060405180830381600087803b158015610dcb57600080fd5b505af1158015610ddf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0391906128fb565b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610e8c306108de565b600080610e97610a82565b426040518863ffffffff1660e01b8152600401610eb996959493929190612e12565b6060604051808303818588803b158015610ed257600080fd5b505af1158015610ee6573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610f0b9190612a82565b5050506001601360166101000a81548160ff0219169083151502179055506001601360176101000a81548160ff021916908315150217905550683635c9adc5dea00000600a81905550686c6b935b8bbd400000600d819055506001601360146101000a81548160ff02191690831515021790555043600b81905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611025929190612de9565b602060405180830381600087803b15801561103f57600080fd5b505af1158015611053573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110779190612a28565b5050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61110a6113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611197576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118e90612f50565b60405180910390fd5b80601360156101000a81548160ff02191690831515021790555050565b6111bc6113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611249576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124090612f50565b60405180910390fd5b633b9aca008161125991906131bc565b600a8190555050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112a36113c4565b73ffffffffffffffffffffffffffffffffffffffff16146112c357600080fd5b60004790506112d18161209c565b50565b6112dc6113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611369576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136090612f50565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561143c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143390612fd0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a390612ef0565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161158a9190613050565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611607576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fe90612fb0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611677576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166e90612eb0565b60405180910390fd5b600081116116ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b190612f70565b60405180910390fd5b6003600e819055506008600f819055506116d2610a82565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117405750611710610a82565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561177857503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611d2157600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156118215750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61182a57600080fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156118d55750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561192b5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156119435750601360179054906101000a900460ff165b15611ab757600a5481111561198d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198490613010565b60405180910390fd5b42600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611a0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0590613030565b60405180910390fd5b600d5481611a1b846108de565b611a259190613135565b1115611a66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5d90612f90565b60405180910390fd5b601e42611a739190613135565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611b625750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611bb85750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611bce576003600e819055506008600f819055505b436004600b54611bde9190613135565b10158015611c395750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611c4f576063600e819055506001600f819055505b6000611c5a306108de565b90506000600c548210159050808015611c805750601360159054906101000a900460ff16155b8015611cda5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611cf25750601360169054906101000a900460ff165b15611d1a57611d0082611da6565b60004790506000811115611d1857611d174761209c565b5b505b5050611d32565b6000600e819055506000600f819055505b611d3d838383612197565b505050565b6000838311158290611d8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d819190612e8e565b60405180910390fd5b5060008385611d999190613216565b9050809150509392505050565b6001601360156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611dde57611ddd613371565b5b604051908082528060200260200182016040528015611e0c5781602001602082028036833780820191505090505b5090503081600081518110611e2457611e23613342565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611ec657600080fd5b505afa158015611eda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611efe91906128fb565b81600181518110611f1257611f11613342565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611f7930601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846113cc565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611fdd95949392919061306b565b600060405180830381600087803b158015611ff757600080fd5b505af115801561200b573d6000803e3d6000fd5b50505050506000601360156101000a81548160ff02191690831515021790555050565b6000600854821115612075576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206c90612ed0565b60405180910390fd5b600061207f6121a7565b905061209481846121d290919063ffffffff16565b915050919050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6120ec6002846121d290919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612117573d6000803e3d6000fd5b50601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6121686002846121d290919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612193573d6000803e3d6000fd5b5050565b6121a283838361221c565b505050565b60008060006121b46123e7565b915091506121cb81836121d290919063ffffffff16565b9250505090565b600061221483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061244c565b905092915050565b60008060008060008061222e876124af565b95509550955095509550955061228c86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461251790919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061232185600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461256190919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061236d816125bf565b612377848361267c565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516123d49190613050565b60405180910390a3505050505050505050565b60008060006008549050600069152d02c7e14af6800000905061241f69152d02c7e14af68000006008546121d290919063ffffffff16565b82101561243f5760085469152d02c7e14af6800000935093505050612448565b81819350935050505b9091565b60008083118290612493576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248a9190612e8e565b60405180910390fd5b50600083856124a2919061318b565b9050809150509392505050565b60008060008060008060008060006124cc8a600e54600f546126b6565b92509250925060006124dc6121a7565b905060008060006124ef8e87878761274c565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061255983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d42565b905092915050565b60008082846125709190613135565b9050838110156125b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ac90612f10565b60405180910390fd5b8091505092915050565b60006125c96121a7565b905060006125e082846127d590919063ffffffff16565b905061263481600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461256190919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6126918260085461251790919063ffffffff16565b6008819055506126ac8160095461256190919063ffffffff16565b6009819055505050565b6000806000806126e260646126d4888a6127d590919063ffffffff16565b6121d290919063ffffffff16565b9050600061270c60646126fe888b6127d590919063ffffffff16565b6121d290919063ffffffff16565b9050600061273582612727858c61251790919063ffffffff16565b61251790919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061276585896127d590919063ffffffff16565b9050600061277c86896127d590919063ffffffff16565b9050600061279387896127d590919063ffffffff16565b905060006127bc826127ae858761251790919063ffffffff16565b61251790919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808314156127e8576000905061284a565b600082846127f691906131bc565b9050828482612805919061318b565b14612845576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283c90612f30565b60405180910390fd5b809150505b92915050565b60008135905061285f816136d5565b92915050565b600081519050612874816136d5565b92915050565b600081359050612889816136ec565b92915050565b60008151905061289e816136ec565b92915050565b6000813590506128b381613703565b92915050565b6000815190506128c881613703565b92915050565b6000602082840312156128e4576128e36133a0565b5b60006128f284828501612850565b91505092915050565b600060208284031215612911576129106133a0565b5b600061291f84828501612865565b91505092915050565b6000806040838503121561293f5761293e6133a0565b5b600061294d85828601612850565b925050602061295e85828601612850565b9150509250929050565b600080600060608486031215612981576129806133a0565b5b600061298f86828701612850565b93505060206129a086828701612850565b92505060406129b1868287016128a4565b9150509250925092565b600080604083850312156129d2576129d16133a0565b5b60006129e085828601612850565b92505060206129f1858286016128a4565b9150509250929050565b600060208284031215612a1157612a106133a0565b5b6000612a1f8482850161287a565b91505092915050565b600060208284031215612a3e57612a3d6133a0565b5b6000612a4c8482850161288f565b91505092915050565b600060208284031215612a6b57612a6a6133a0565b5b6000612a79848285016128a4565b91505092915050565b600080600060608486031215612a9b57612a9a6133a0565b5b6000612aa9868287016128b9565b9350506020612aba868287016128b9565b9250506040612acb868287016128b9565b9150509250925092565b6000612ae18383612aed565b60208301905092915050565b612af68161324a565b82525050565b612b058161324a565b82525050565b6000612b16826130f0565b612b208185613113565b9350612b2b836130e0565b8060005b83811015612b5c578151612b438882612ad5565b9750612b4e83613106565b925050600181019050612b2f565b5085935050505092915050565b612b728161325c565b82525050565b612b818161329f565b82525050565b6000612b92826130fb565b612b9c8185613124565b9350612bac8185602086016132b1565b612bb5816133a5565b840191505092915050565b6000612bcd602383613124565b9150612bd8826133b6565b604082019050919050565b6000612bf0602a83613124565b9150612bfb82613405565b604082019050919050565b6000612c13602283613124565b9150612c1e82613454565b604082019050919050565b6000612c36601b83613124565b9150612c41826134a3565b602082019050919050565b6000612c59602183613124565b9150612c64826134cc565b604082019050919050565b6000612c7c602083613124565b9150612c878261351b565b602082019050919050565b6000612c9f602983613124565b9150612caa82613544565b604082019050919050565b6000612cc2601783613124565b9150612ccd82613593565b602082019050919050565b6000612ce5602583613124565b9150612cf0826135bc565b604082019050919050565b6000612d08602483613124565b9150612d138261360b565b604082019050919050565b6000612d2b601783613124565b9150612d368261365a565b602082019050919050565b6000612d4e601c83613124565b9150612d5982613683565b602082019050919050565b6000612d71601283613124565b9150612d7c826136ac565b602082019050919050565b612d9081613288565b82525050565b612d9f81613292565b82525050565b6000602082019050612dba6000830184612afc565b92915050565b6000604082019050612dd56000830185612afc565b612de26020830184612afc565b9392505050565b6000604082019050612dfe6000830185612afc565b612e0b6020830184612d87565b9392505050565b600060c082019050612e276000830189612afc565b612e346020830188612d87565b612e416040830187612b78565b612e4e6060830186612b78565b612e5b6080830185612afc565b612e6860a0830184612d87565b979650505050505050565b6000602082019050612e886000830184612b69565b92915050565b60006020820190508181036000830152612ea88184612b87565b905092915050565b60006020820190508181036000830152612ec981612bc0565b9050919050565b60006020820190508181036000830152612ee981612be3565b9050919050565b60006020820190508181036000830152612f0981612c06565b9050919050565b60006020820190508181036000830152612f2981612c29565b9050919050565b60006020820190508181036000830152612f4981612c4c565b9050919050565b60006020820190508181036000830152612f6981612c6f565b9050919050565b60006020820190508181036000830152612f8981612c92565b9050919050565b60006020820190508181036000830152612fa981612cb5565b9050919050565b60006020820190508181036000830152612fc981612cd8565b9050919050565b60006020820190508181036000830152612fe981612cfb565b9050919050565b6000602082019050818103600083015261300981612d1e565b9050919050565b6000602082019050818103600083015261302981612d41565b9050919050565b6000602082019050818103600083015261304981612d64565b9050919050565b60006020820190506130656000830184612d87565b92915050565b600060a0820190506130806000830188612d87565b61308d6020830187612b78565b818103604083015261309f8186612b0b565b90506130ae6060830185612afc565b6130bb6080830184612d87565b9695505050505050565b60006020820190506130da6000830184612d96565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061314082613288565b915061314b83613288565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156131805761317f6132e4565b5b828201905092915050565b600061319682613288565b91506131a183613288565b9250826131b1576131b0613313565b5b828204905092915050565b60006131c782613288565b91506131d283613288565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561320b5761320a6132e4565b5b828202905092915050565b600061322182613288565b915061322c83613288565b92508282101561323f5761323e6132e4565b5b828203905092915050565b600061325582613268565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006132aa82613288565b9050919050565b60005b838110156132cf5780820151818401526020810190506132b4565b838111156132de576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f4f766572206d61782077616c6c657420616d6f756e742e000000000000000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b7f4f766572206d6178207472616e73616374696f6e20616d6f756e742e00000000600082015250565b7f436f6f6c646f776e20656e666f726365642e0000000000000000000000000000600082015250565b6136de8161324a565b81146136e957600080fd5b50565b6136f58161325c565b811461370057600080fd5b50565b61370c81613288565b811461371757600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122045faf93d86b64c2a9f358b3693ba87de39b11e6dedb0f80daee0d1f4483ad14864736f6c63430008070033

Deployed Bytecode

0x60806040526004361061012e5760003560e01c806370a08231116100ab578063c9567bf91161006f578063c9567bf9146103d9578063dd62ed3e146103f0578063e98391ff1461042d578063ec28438a14610456578063f42938901461047f578063ffecf5161461049657610135565b806370a08231146102f2578063715018a61461032f5780638da5cb5b1461034657806395d89b4114610371578063a9059cbb1461039c57610135565b806327a14fc2116100f257806327a14fc2146102335780632fd689e31461025c578063313ce5671461028757806351bc3c85146102b25780635932ead1146102c957610135565b806306fdde031461013a578063095ea7b31461016557806318160ddd146101a257806323b872dd146101cd578063273123b71461020a57610135565b3661013557005b600080fd5b34801561014657600080fd5b5061014f6104bf565b60405161015c9190612e8e565b60405180910390f35b34801561017157600080fd5b5061018c600480360381019061018791906129bb565b6104fc565b6040516101999190612e73565b60405180910390f35b3480156101ae57600080fd5b506101b761051a565b6040516101c49190613050565b60405180910390f35b3480156101d957600080fd5b506101f460048036038101906101ef9190612968565b61052c565b6040516102019190612e73565b60405180910390f35b34801561021657600080fd5b50610231600480360381019061022c91906128ce565b610605565b005b34801561023f57600080fd5b5061025a60048036038101906102559190612a55565b6106f5565b005b34801561026857600080fd5b506102716107a3565b60405161027e9190613050565b60405180910390f35b34801561029357600080fd5b5061029c6107a9565b6040516102a991906130c5565b60405180910390f35b3480156102be57600080fd5b506102c76107b2565b005b3480156102d557600080fd5b506102f060048036038101906102eb91906129fb565b61082c565b005b3480156102fe57600080fd5b50610319600480360381019061031491906128ce565b6108de565b6040516103269190613050565b60405180910390f35b34801561033b57600080fd5b5061034461092f565b005b34801561035257600080fd5b5061035b610a82565b6040516103689190612da5565b60405180910390f35b34801561037d57600080fd5b50610386610aab565b6040516103939190612e8e565b60405180910390f35b3480156103a857600080fd5b506103c360048036038101906103be91906129bb565b610ae8565b6040516103d09190612e73565b60405180910390f35b3480156103e557600080fd5b506103ee610b06565b005b3480156103fc57600080fd5b5061041760048036038101906104129190612928565b61107b565b6040516104249190613050565b60405180910390f35b34801561043957600080fd5b50610454600480360381019061044f91906129fb565b611102565b005b34801561046257600080fd5b5061047d60048036038101906104789190612a55565b6111b4565b005b34801561048b57600080fd5b50610494611262565b005b3480156104a257600080fd5b506104bd60048036038101906104b891906128ce565b6112d4565b005b60606040518060400160405280600781526020017f41636520496e7500000000000000000000000000000000000000000000000000815250905090565b60006105106105096113c4565b84846113cc565b6001905092915050565b600069152d02c7e14af6800000905090565b6000610539848484611597565b6105fa846105456113c4565b6105f58560405180606001604052806028815260200161371b60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105ab6113c4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d429092919063ffffffff16565b6113cc565b600190509392505050565b61060d6113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461069a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069190612f50565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6106fd6113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461078a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078190612f50565b60405180910390fd5b633b9aca008161079a91906131bc565b600d8190555050565b600c5481565b60006009905090565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107f36113c4565b73ffffffffffffffffffffffffffffffffffffffff161461081357600080fd5b600061081e306108de565b905061082981611da6565b50565b6108346113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b890612f50565b60405180910390fd5b80601360176101000a81548160ff02191690831515021790555050565b6000610928600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461202e565b9050919050565b6109376113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bb90612f50565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f41494e5500000000000000000000000000000000000000000000000000000000815250905090565b6000610afc610af56113c4565b8484611597565b6001905092915050565b610b0e6113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9290612f50565b60405180910390fd5b601360149054906101000a900460ff1615610beb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be290612ff0565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610c7c30601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1669152d02c7e14af68000006113cc565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610cc257600080fd5b505afa158015610cd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cfa91906128fb565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610d5c57600080fd5b505afa158015610d70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9491906128fb565b6040518363ffffffff1660e01b8152600401610db1929190612dc0565b602060405180830381600087803b158015610dcb57600080fd5b505af1158015610ddf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0391906128fb565b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610e8c306108de565b600080610e97610a82565b426040518863ffffffff1660e01b8152600401610eb996959493929190612e12565b6060604051808303818588803b158015610ed257600080fd5b505af1158015610ee6573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610f0b9190612a82565b5050506001601360166101000a81548160ff0219169083151502179055506001601360176101000a81548160ff021916908315150217905550683635c9adc5dea00000600a81905550686c6b935b8bbd400000600d819055506001601360146101000a81548160ff02191690831515021790555043600b81905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611025929190612de9565b602060405180830381600087803b15801561103f57600080fd5b505af1158015611053573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110779190612a28565b5050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61110a6113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611197576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118e90612f50565b60405180910390fd5b80601360156101000a81548160ff02191690831515021790555050565b6111bc6113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611249576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124090612f50565b60405180910390fd5b633b9aca008161125991906131bc565b600a8190555050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112a36113c4565b73ffffffffffffffffffffffffffffffffffffffff16146112c357600080fd5b60004790506112d18161209c565b50565b6112dc6113c4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611369576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136090612f50565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561143c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143390612fd0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a390612ef0565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161158a9190613050565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611607576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fe90612fb0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611677576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166e90612eb0565b60405180910390fd5b600081116116ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b190612f70565b60405180910390fd5b6003600e819055506008600f819055506116d2610a82565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117405750611710610a82565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561177857503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611d2157600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156118215750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61182a57600080fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156118d55750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561192b5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156119435750601360179054906101000a900460ff165b15611ab757600a5481111561198d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198490613010565b60405180910390fd5b42600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611a0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0590613030565b60405180910390fd5b600d5481611a1b846108de565b611a259190613135565b1115611a66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5d90612f90565b60405180910390fd5b601e42611a739190613135565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611b625750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611bb85750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611bce576003600e819055506008600f819055505b436004600b54611bde9190613135565b10158015611c395750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611c4f576063600e819055506001600f819055505b6000611c5a306108de565b90506000600c548210159050808015611c805750601360159054906101000a900460ff16155b8015611cda5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611cf25750601360169054906101000a900460ff165b15611d1a57611d0082611da6565b60004790506000811115611d1857611d174761209c565b5b505b5050611d32565b6000600e819055506000600f819055505b611d3d838383612197565b505050565b6000838311158290611d8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d819190612e8e565b60405180910390fd5b5060008385611d999190613216565b9050809150509392505050565b6001601360156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611dde57611ddd613371565b5b604051908082528060200260200182016040528015611e0c5781602001602082028036833780820191505090505b5090503081600081518110611e2457611e23613342565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611ec657600080fd5b505afa158015611eda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611efe91906128fb565b81600181518110611f1257611f11613342565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611f7930601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846113cc565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611fdd95949392919061306b565b600060405180830381600087803b158015611ff757600080fd5b505af115801561200b573d6000803e3d6000fd5b50505050506000601360156101000a81548160ff02191690831515021790555050565b6000600854821115612075576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206c90612ed0565b60405180910390fd5b600061207f6121a7565b905061209481846121d290919063ffffffff16565b915050919050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6120ec6002846121d290919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612117573d6000803e3d6000fd5b50601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6121686002846121d290919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612193573d6000803e3d6000fd5b5050565b6121a283838361221c565b505050565b60008060006121b46123e7565b915091506121cb81836121d290919063ffffffff16565b9250505090565b600061221483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061244c565b905092915050565b60008060008060008061222e876124af565b95509550955095509550955061228c86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461251790919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061232185600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461256190919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061236d816125bf565b612377848361267c565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516123d49190613050565b60405180910390a3505050505050505050565b60008060006008549050600069152d02c7e14af6800000905061241f69152d02c7e14af68000006008546121d290919063ffffffff16565b82101561243f5760085469152d02c7e14af6800000935093505050612448565b81819350935050505b9091565b60008083118290612493576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248a9190612e8e565b60405180910390fd5b50600083856124a2919061318b565b9050809150509392505050565b60008060008060008060008060006124cc8a600e54600f546126b6565b92509250925060006124dc6121a7565b905060008060006124ef8e87878761274c565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061255983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d42565b905092915050565b60008082846125709190613135565b9050838110156125b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ac90612f10565b60405180910390fd5b8091505092915050565b60006125c96121a7565b905060006125e082846127d590919063ffffffff16565b905061263481600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461256190919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6126918260085461251790919063ffffffff16565b6008819055506126ac8160095461256190919063ffffffff16565b6009819055505050565b6000806000806126e260646126d4888a6127d590919063ffffffff16565b6121d290919063ffffffff16565b9050600061270c60646126fe888b6127d590919063ffffffff16565b6121d290919063ffffffff16565b9050600061273582612727858c61251790919063ffffffff16565b61251790919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061276585896127d590919063ffffffff16565b9050600061277c86896127d590919063ffffffff16565b9050600061279387896127d590919063ffffffff16565b905060006127bc826127ae858761251790919063ffffffff16565b61251790919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808314156127e8576000905061284a565b600082846127f691906131bc565b9050828482612805919061318b565b14612845576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283c90612f30565b60405180910390fd5b809150505b92915050565b60008135905061285f816136d5565b92915050565b600081519050612874816136d5565b92915050565b600081359050612889816136ec565b92915050565b60008151905061289e816136ec565b92915050565b6000813590506128b381613703565b92915050565b6000815190506128c881613703565b92915050565b6000602082840312156128e4576128e36133a0565b5b60006128f284828501612850565b91505092915050565b600060208284031215612911576129106133a0565b5b600061291f84828501612865565b91505092915050565b6000806040838503121561293f5761293e6133a0565b5b600061294d85828601612850565b925050602061295e85828601612850565b9150509250929050565b600080600060608486031215612981576129806133a0565b5b600061298f86828701612850565b93505060206129a086828701612850565b92505060406129b1868287016128a4565b9150509250925092565b600080604083850312156129d2576129d16133a0565b5b60006129e085828601612850565b92505060206129f1858286016128a4565b9150509250929050565b600060208284031215612a1157612a106133a0565b5b6000612a1f8482850161287a565b91505092915050565b600060208284031215612a3e57612a3d6133a0565b5b6000612a4c8482850161288f565b91505092915050565b600060208284031215612a6b57612a6a6133a0565b5b6000612a79848285016128a4565b91505092915050565b600080600060608486031215612a9b57612a9a6133a0565b5b6000612aa9868287016128b9565b9350506020612aba868287016128b9565b9250506040612acb868287016128b9565b9150509250925092565b6000612ae18383612aed565b60208301905092915050565b612af68161324a565b82525050565b612b058161324a565b82525050565b6000612b16826130f0565b612b208185613113565b9350612b2b836130e0565b8060005b83811015612b5c578151612b438882612ad5565b9750612b4e83613106565b925050600181019050612b2f565b5085935050505092915050565b612b728161325c565b82525050565b612b818161329f565b82525050565b6000612b92826130fb565b612b9c8185613124565b9350612bac8185602086016132b1565b612bb5816133a5565b840191505092915050565b6000612bcd602383613124565b9150612bd8826133b6565b604082019050919050565b6000612bf0602a83613124565b9150612bfb82613405565b604082019050919050565b6000612c13602283613124565b9150612c1e82613454565b604082019050919050565b6000612c36601b83613124565b9150612c41826134a3565b602082019050919050565b6000612c59602183613124565b9150612c64826134cc565b604082019050919050565b6000612c7c602083613124565b9150612c878261351b565b602082019050919050565b6000612c9f602983613124565b9150612caa82613544565b604082019050919050565b6000612cc2601783613124565b9150612ccd82613593565b602082019050919050565b6000612ce5602583613124565b9150612cf0826135bc565b604082019050919050565b6000612d08602483613124565b9150612d138261360b565b604082019050919050565b6000612d2b601783613124565b9150612d368261365a565b602082019050919050565b6000612d4e601c83613124565b9150612d5982613683565b602082019050919050565b6000612d71601283613124565b9150612d7c826136ac565b602082019050919050565b612d9081613288565b82525050565b612d9f81613292565b82525050565b6000602082019050612dba6000830184612afc565b92915050565b6000604082019050612dd56000830185612afc565b612de26020830184612afc565b9392505050565b6000604082019050612dfe6000830185612afc565b612e0b6020830184612d87565b9392505050565b600060c082019050612e276000830189612afc565b612e346020830188612d87565b612e416040830187612b78565b612e4e6060830186612b78565b612e5b6080830185612afc565b612e6860a0830184612d87565b979650505050505050565b6000602082019050612e886000830184612b69565b92915050565b60006020820190508181036000830152612ea88184612b87565b905092915050565b60006020820190508181036000830152612ec981612bc0565b9050919050565b60006020820190508181036000830152612ee981612be3565b9050919050565b60006020820190508181036000830152612f0981612c06565b9050919050565b60006020820190508181036000830152612f2981612c29565b9050919050565b60006020820190508181036000830152612f4981612c4c565b9050919050565b60006020820190508181036000830152612f6981612c6f565b9050919050565b60006020820190508181036000830152612f8981612c92565b9050919050565b60006020820190508181036000830152612fa981612cb5565b9050919050565b60006020820190508181036000830152612fc981612cd8565b9050919050565b60006020820190508181036000830152612fe981612cfb565b9050919050565b6000602082019050818103600083015261300981612d1e565b9050919050565b6000602082019050818103600083015261302981612d41565b9050919050565b6000602082019050818103600083015261304981612d64565b9050919050565b60006020820190506130656000830184612d87565b92915050565b600060a0820190506130806000830188612d87565b61308d6020830187612b78565b818103604083015261309f8186612b0b565b90506130ae6060830185612afc565b6130bb6080830184612d87565b9695505050505050565b60006020820190506130da6000830184612d96565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061314082613288565b915061314b83613288565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156131805761317f6132e4565b5b828201905092915050565b600061319682613288565b91506131a183613288565b9250826131b1576131b0613313565b5b828204905092915050565b60006131c782613288565b91506131d283613288565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561320b5761320a6132e4565b5b828202905092915050565b600061322182613288565b915061322c83613288565b92508282101561323f5761323e6132e4565b5b828203905092915050565b600061325582613268565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006132aa82613288565b9050919050565b60005b838110156132cf5780820151818401526020810190506132b4565b838111156132de576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f4f766572206d61782077616c6c657420616d6f756e742e000000000000000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b7f4f766572206d6178207472616e73616374696f6e20616d6f756e742e00000000600082015250565b7f436f6f6c646f776e20656e666f726365642e0000000000000000000000000000600082015250565b6136de8161324a565b81146136e957600080fd5b50565b6136f58161325c565b811461370057600080fd5b50565b61370c81613288565b811461371757600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122045faf93d86b64c2a9f358b3693ba87de39b11e6dedb0f80daee0d1f4483ad14864736f6c63430008070033

Deployed Bytecode Sourcemap

3945:12910:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6029:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6954:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6306:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7155:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12966:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11648:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4636:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6215:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14281:195;;;;;;;;;;;;;:::i;:::-;;7609:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6409:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2897:148;;;;;;;;;;;;;:::i;:::-;;2683:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6120:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6555:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11771:1092;;;;;;;;;;;;;:::i;:::-;;6762:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10779:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11537:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14484:194;;;;;;;;;;;;;:::i;:::-;;12871:87;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6029:83;6066:13;6099:5;;;;;;;;;;;;;;;;;6092:12;;6029:83;:::o;6954:193::-;7056:4;7078:39;7087:12;:10;:12::i;:::-;7101:7;7110:6;7078:8;:39::i;:::-;7135:4;7128:11;;6954:193;;;;:::o;6306:95::-;6359:7;4440:23;6379:14;;6306:95;:::o;7155:446::-;7287:4;7304:36;7314:6;7322:9;7333:6;7304:9;:36::i;:::-;7351:220;7374:6;7395:12;:10;:12::i;:::-;7422:138;7478:6;7422:138;;;;;;;;;;;;;;;;;:11;:19;7434:6;7422:19;;;;;;;;;;;;;;;:33;7442:12;:10;:12::i;:::-;7422:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;7351:8;:220::i;:::-;7589:4;7582:11;;7155:446;;;;;:::o;12966:88::-;2820:12;:10;:12::i;:::-;2810:22;;:6;;;;;;;;;;:22;;;2802:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13041:5:::1;13026:4;:12;13031:6;13026:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;12966:88:::0;:::o;11648:113::-;2820:12;:10;:12::i;:::-;2810:22;;:6;;;;;;;;;;:22;;;2802:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11748:5:::1;11739:6;:14;;;;:::i;:::-;11720:16;:33;;;;11648:113:::0;:::o;4636:57::-;;;;:::o;6215:83::-;6256:5;5044:1;6274:16;;6215:83;:::o;14281:195::-;14347:15;;;;;;;;;;;14331:31;;:12;:10;:12::i;:::-;:31;;;14323:40;;;;;;14374:23;14400:24;14418:4;14400:9;:24::i;:::-;14374:50;;14435:33;14452:15;14435:16;:33::i;:::-;14312:164;14281:195::o;7609:101::-;2820:12;:10;:12::i;:::-;2810:22;;:6;;;;;;;;;;:22;;;2802:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7697:5:::1;7679:15;;:23;;;;;;;;;;;;;;;;;;7609:101:::0;:::o;6409:138::-;6475:7;6502:37;6522:7;:16;6530:7;6522:16;;;;;;;;;;;;;;;;6502:19;:37::i;:::-;6495:44;;6409:138;;;:::o;2897:148::-;2820:12;:10;:12::i;:::-;2810:22;;:6;;;;;;;;;;:22;;;2802:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3004:1:::1;2967:40;;2988:6;::::0;::::1;;;;;;;;2967:40;;;;;;;;;;;;3035:1;3018:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2897:148::o:0;2683:79::-;2721:7;2748:6;;;;;;;;;;;2741:13;;2683:79;:::o;6120:87::-;6159:13;6192:7;;;;;;;;;;;;;;;;;6185:14;;6120:87;:::o;6555:199::-;6660:4;6682:42;6692:12;:10;:12::i;:::-;6706:9;6717:6;6682:9;:42::i;:::-;6742:4;6735:11;;6555:199;;;;:::o;11771:1092::-;2820:12;:10;:12::i;:::-;2810:22;;:6;;;;;;;;;;:22;;;2802:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11833:11:::1;;;;;;;;;;;11832:12;11824:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;11883:35;11954:42;11883:124;;12036:16;12018:15;;:34;;;;;;;;;;;;;;;;;;12063:58;12080:4;12095:15;;;;;;;;;;;4440:23;12063:8;:58::i;:::-;12166:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12148:70;;;12227:4;12234:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12148:110;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12132:13;;:126;;;;;;;;;;;;;;;;;;12269:15;;;;;;;;;;;:31;;;12308:21;12353:4;12373:24;12391:4;12373:9;:24::i;:::-;12412:1;12428::::0;12444:7:::1;:5;:7::i;:::-;12466:15;12269:223;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12517:4;12503:11;;:18;;;;;;;;;;;;;;;;;;12550:4;12532:15;;:22;;;;;;;;;;;;;;;;;;12597:21;12582:12;:36;;;;12648:21;12629:16;:40;;;;12694:4;12680:11;;:18;;;;;;;;;;;;;;;;;;12721:12;12709:9;:24;;;;12751:13;;;;;;;;;;;12744:29;;;12796:15;;;;;;;;;;;12827:17;12744:111;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11813:1050;11771:1092::o:0;6762:184::-;6879:7;6911:11;:18;6923:5;6911:18;;;;;;;;;;;;;;;:27;6930:7;6911:27;;;;;;;;;;;;;;;;6904:34;;6762:184;;;;:::o;10779:97::-;2820:12;:10;:12::i;:::-;2810:22;;:6;;;;;;;;;;:22;;;2802:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10861:7:::1;10852:6;;:16;;;;;;;;;;;;;;;;;;10779:97:::0;:::o;11537:105::-;2820:12;:10;:12::i;:::-;2810:22;;:6;;;;;;;;;;:22;;;2802:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11629:5:::1;11620:6;:14;;;;:::i;:::-;11605:12;:29;;;;11537:105:::0;:::o;14484:194::-;14550:15;;;;;;;;;;;14534:31;;:12;:10;:12::i;:::-;:31;;;14526:40;;;;;;14577:26;14606:21;14577:50;;14638:32;14651:18;14638:12;:32::i;:::-;14515:163;14484:194::o;12871:87::-;2820:12;:10;:12::i;:::-;2810:22;;:6;;;;;;;;;;:22;;;2802:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12946:4:::1;12931;:12;12936:6;12931:12;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;12871:87:::0;:::o;186:98::-;239:7;266:10;259:17;;186:98;:::o;8049:369::-;8193:1;8176:19;;:5;:19;;;;8168:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8274:1;8255:21;;:7;:21;;;;8247:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8356:6;8326:11;:18;8338:5;8326:18;;;;;;;;;;;;;;;:27;8345:7;8326:27;;;;;;;;;;;;;;;:36;;;;8394:7;8378:32;;8387:5;8378:32;;;8403:6;8378:32;;;;;;:::i;:::-;;;;;;;;8049:369;;;:::o;8426:2345::-;8566:1;8550:18;;:4;:18;;;;8542:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8643:1;8629:16;;:2;:16;;;;8621:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8713:1;8704:6;:10;8696:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8802:1;8790:9;:13;;;;8826:1;8814:9;:13;;;;8850:7;:5;:7::i;:::-;8842:15;;:4;:15;;;;:32;;;;;8867:7;:5;:7::i;:::-;8861:13;;:2;:13;;;;8842:32;:57;;;;;8894:4;8878:21;;:4;:21;;;;8842:57;8838:1881;;;8953:4;:10;8958:4;8953:10;;;;;;;;;;;;;;;;;;;;;;;;;8952:11;:24;;;;;8968:4;:8;8973:2;8968:8;;;;;;;;;;;;;;;;;;;;;;;;;8967:9;8952:24;8944:33;;;;;;9022:13;;;;;;;;;;;9014:21;;:4;:21;;;:72;;;;;9070:15;;;;;;;;;;;9056:30;;:2;:30;;;;9014:72;:116;;;;;9108:18;:22;9127:2;9108:22;;;;;;;;;;;;;;;;;;;;;;;;;9107:23;9014:116;:152;;;;;9151:15;;;;;;;;;;;9014:152;8992:650;;;9280:12;;9270:6;:22;;9262:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;9396:15;9381:8;:12;9390:2;9381:12;;;;;;;;;;;;;;;;:30;9373:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;9518:16;;9508:6;9492:13;9502:2;9492:9;:13::i;:::-;:22;;;;:::i;:::-;:42;;9484:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;9615:10;9596:15;:30;;;;:::i;:::-;9581:8;:12;9590:2;9581:12;;;;;;;;;;;;;;;:45;;;;8992:650;9686:13;;;;;;;;;;;9680:19;;:2;:19;;;:72;;;;;9736:15;;;;;;;;;;;9720:32;;:4;:32;;;;9680:72;:118;;;;;9774:18;:24;9793:4;9774:24;;;;;;;;;;;;;;;;;;;;;;;;;9773:25;9680:118;9658:236;;;9845:1;9833:9;:13;;;;9877:1;9865:9;:13;;;;9658:236;9931:12;9926:1;9914:9;;:13;;;;:::i;:::-;:29;;:54;;;;;9955:13;;;;;;;;;;;9947:21;;:4;:21;;;9914:54;9910:141;;;10001:2;9989:9;:14;;;;10034:1;10022:9;:13;;;;9910:141;10067:28;10098:24;10116:4;10098:9;:24::i;:::-;10067:55;;10137:12;10176:19;;10152:20;:43;;10137:58;;10214:7;:18;;;;;10226:6;;;;;;;;;;;10225:7;10214:18;:43;;;;;10244:13;;;;;;;;;;;10236:21;;:4;:21;;;;10214:43;:58;;;;;10261:11;;;;;;;;;;;10214:58;10210:348;;;10311:38;10328:20;10311:16;:38::i;:::-;10368:26;10397:21;10368:50;;10462:1;10441:18;:22;10437:106;;;10488:35;10501:21;10488:12;:35::i;:::-;10437:106;10274:284;10210:348;8901:1668;;8838:1881;;;10678:1;10666:9;:13;;;;10706:1;10694:9;:13;;;;8838:1881;10731:32;10746:4;10752:2;10756:6;10731:14;:32::i;:::-;8426:2345;;;:::o;1448:224::-;1568:7;1601:1;1596;:6;;1604:12;1588:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1628:9;1644:1;1640;:5;;;;:::i;:::-;1628:17;;1663:1;1656:8;;;1448:224;;;;;:::o;10884:483::-;5388:4;5379:6;;:13;;;;;;;;;;;;;;;;;;10962:21:::1;11000:1;10986:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10962:40;;11031:4;11013;11018:1;11013:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11057:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11047:4;11052:1;11047:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11090:62;11107:4;11122:15;;;;;;;;;;;11140:11;11090:8;:62::i;:::-;11163:15;;;;;;;;;;;:66;;;11244:11;11270:1;11286:4;11313;11333:15;11163:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10951:416;5424:5:::0;5415:6;;:14;;;;;;;;;;;;;;;;;;10884:483;:::o;7718:323::-;7813:7;7871;;7860;:18;;7838:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;7959:19;7981:10;:8;:10::i;:::-;7959:32;;8009:24;8021:11;8009:7;:11;;:24;;;;:::i;:::-;8002:31;;;7718:323;;;:::o;11375:154::-;11432:15;;;;;;;;;;;:24;;:39;11457:13;11468:1;11457:6;:10;;:13;;;;:::i;:::-;11432:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11482:15;;;;;;;;;;;:24;;:39;11507:13;11518:1;11507:6;:10;;:13;;;;:::i;:::-;11482:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11375:154;:::o;13064:180::-;13192:44;13210:6;13218:9;13229:6;13192:17;:44::i;:::-;13064:180;;;:::o;16423:164::-;16465:7;16486:15;16503;16522:19;:17;:19::i;:::-;16485:56;;;;16559:20;16571:7;16559;:11;;:20;;;;:::i;:::-;16552:27;;;;16423:164;:::o;1934:132::-;1992:7;2019:39;2023:1;2026;2019:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2012:46;;1934:132;;;;:::o;13252:610::-;13399:15;13429:23;13467:12;13494:23;13532:12;13559:13;13586:19;13597:7;13586:10;:19::i;:::-;13384:221;;;;;;;;;;;;13634:28;13654:7;13634;:15;13642:6;13634:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13616:7;:15;13624:6;13616:15;;;;;;;;;;;;;;;:46;;;;13694:39;13717:15;13694:7;:18;13702:9;13694:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13673:7;:18;13681:9;13673:18;;;;;;;;;;;;;;;:60;;;;13744:16;13754:5;13744:9;:16::i;:::-;13771:23;13783:4;13789;13771:11;:23::i;:::-;13827:9;13810:44;;13819:6;13810:44;;;13838:15;13810:44;;;;;;:::i;:::-;;;;;;;;13373:489;;;;;;13252:610;;;:::o;16595:257::-;16646:7;16655;16675:15;16693:7;;16675:25;;16711:15;4440:23;16711:25;;16761:20;4440:23;16761:7;;:11;;:20;;;;:::i;:::-;16751:7;:30;16747:61;;;16791:7;;4440:23;16783:25;;;;;;;;16747:61;16827:7;16836;16819:25;;;;;;16595:257;;;:::o;2074:223::-;2194:7;2226:1;2222;:5;2229:12;2214:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2253:9;2269:1;2265;:5;;;;:::i;:::-;2253:17;;2288:1;2281:8;;;2074:223;;;;;:::o;14686:704::-;14786:7;14808;14830;14852;14874;14896;14932:23;14957:12;14971:13;14988:92;15014:7;15036:9;;15060;;14988:11;:92::i;:::-;14931:149;;;;;;15091:19;15113:10;:8;:10::i;:::-;15091:32;;15135:15;15152:23;15177:12;15193:109;15219:7;15241:4;15260:5;15280:11;15193;:109::i;:::-;15134:168;;;;;;15321:7;15330:15;15347:4;15353:15;15370:4;15376:5;15313:69;;;;;;;;;;;;;;;;;;;14686:704;;;;;;;:::o;1304:136::-;1362:7;1389:43;1393:1;1396;1389:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1382:50;;1304:136;;;;:::o;1117:179::-;1175:7;1195:9;1211:1;1207;:5;;;;:::i;:::-;1195:17;;1236:1;1231;:6;;1223:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1287:1;1280:8;;;1117:179;;;;:::o;13870:211::-;13923:19;13945:10;:8;:10::i;:::-;13923:32;;13966:13;13982:22;13992:11;13982:5;:9;;:22;;;;:::i;:::-;13966:38;;14040:33;14067:5;14040:7;:22;14056:4;14040:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14015:7;:22;14031:4;14015:22;;;;;;;;;;;;;;;:58;;;;13912:169;;13870:211;:::o;14089:147::-;14167:17;14179:4;14167:7;;:11;;:17;;;;:::i;:::-;14157:7;:27;;;;14208:20;14223:4;14208:10;;:14;;:20;;;;:::i;:::-;14195:10;:33;;;;14089:147;;:::o;15398:467::-;15566:7;15588;15610;15645:12;15660:28;15684:3;15660:19;15672:6;15660:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15645:43;;15699:13;15715:29;15740:3;15715:20;15727:7;15715;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;15699:45;;15755:23;15781:28;15803:5;15781:17;15793:4;15781:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15755:54;;15828:15;15845:4;15851:5;15820:37;;;;;;;;;15398:467;;;;;;;:::o;15873:534::-;16067:7;16089;16111;16146:15;16164:24;16176:11;16164:7;:11;;:24;;;;:::i;:::-;16146:42;;16199:12;16214:21;16223:11;16214:4;:8;;:21;;;;:::i;:::-;16199:36;;16246:13;16262:22;16272:11;16262:5;:9;;:22;;;;:::i;:::-;16246:38;;16295:23;16321:28;16343:5;16321:17;16333:4;16321:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16295:54;;16368:7;16377:15;16394:4;16360:39;;;;;;;;;;15873:534;;;;;;;;:::o;1680:246::-;1738:7;1767:1;1762;:6;1758:47;;;1792:1;1785:8;;;;1758:47;1815:9;1831:1;1827;:5;;;;:::i;:::-;1815:17;;1860:1;1855;1851;:5;;;;:::i;:::-;:10;1843:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1917:1;1910:8;;;1680:246;;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;152:143;;;;:::o;301:133::-;344:5;382:6;369:20;360:29;;398:30;422:5;398:30;:::i;:::-;301:133;;;;:::o;440:137::-;494:5;525:6;519:13;510:22;;541:30;565:5;541:30;:::i;:::-;440:137;;;;:::o;583:139::-;629:5;667:6;654:20;645:29;;683:33;710:5;683:33;:::i;:::-;583:139;;;;:::o;728:143::-;785:5;816:6;810:13;801:22;;832:33;859:5;832:33;:::i;:::-;728:143;;;;:::o;877:329::-;936:6;985:2;973:9;964:7;960:23;956:32;953:119;;;991:79;;:::i;:::-;953:119;1111:1;1136:53;1181:7;1172:6;1161:9;1157:22;1136:53;:::i;:::-;1126:63;;1082:117;877:329;;;;:::o;1212:351::-;1282:6;1331:2;1319:9;1310:7;1306:23;1302:32;1299:119;;;1337:79;;:::i;:::-;1299:119;1457:1;1482:64;1538:7;1529:6;1518:9;1514:22;1482:64;:::i;:::-;1472:74;;1428:128;1212:351;;;;:::o;1569:474::-;1637:6;1645;1694:2;1682:9;1673:7;1669:23;1665:32;1662:119;;;1700:79;;:::i;:::-;1662:119;1820:1;1845:53;1890:7;1881:6;1870:9;1866:22;1845:53;:::i;:::-;1835:63;;1791:117;1947:2;1973:53;2018:7;2009:6;1998:9;1994:22;1973:53;:::i;:::-;1963:63;;1918:118;1569:474;;;;;:::o;2049:619::-;2126:6;2134;2142;2191:2;2179:9;2170:7;2166:23;2162:32;2159:119;;;2197:79;;:::i;:::-;2159:119;2317:1;2342:53;2387:7;2378:6;2367:9;2363:22;2342:53;:::i;:::-;2332:63;;2288:117;2444:2;2470:53;2515:7;2506:6;2495:9;2491:22;2470:53;:::i;:::-;2460:63;;2415:118;2572:2;2598:53;2643:7;2634:6;2623:9;2619:22;2598:53;:::i;:::-;2588:63;;2543:118;2049:619;;;;;:::o;2674:474::-;2742:6;2750;2799:2;2787:9;2778:7;2774:23;2770:32;2767:119;;;2805:79;;:::i;:::-;2767:119;2925:1;2950:53;2995:7;2986:6;2975:9;2971:22;2950:53;:::i;:::-;2940:63;;2896:117;3052:2;3078:53;3123:7;3114:6;3103:9;3099:22;3078:53;:::i;:::-;3068:63;;3023:118;2674:474;;;;;:::o;3154:323::-;3210:6;3259:2;3247:9;3238:7;3234:23;3230:32;3227:119;;;3265:79;;:::i;:::-;3227:119;3385:1;3410:50;3452:7;3443:6;3432:9;3428:22;3410:50;:::i;:::-;3400:60;;3356:114;3154:323;;;;:::o;3483:345::-;3550:6;3599:2;3587:9;3578:7;3574:23;3570:32;3567:119;;;3605:79;;:::i;:::-;3567:119;3725:1;3750:61;3803:7;3794:6;3783:9;3779:22;3750:61;:::i;:::-;3740:71;;3696:125;3483:345;;;;:::o;3834:329::-;3893:6;3942:2;3930:9;3921:7;3917:23;3913:32;3910:119;;;3948:79;;:::i;:::-;3910:119;4068:1;4093:53;4138:7;4129:6;4118:9;4114:22;4093:53;:::i;:::-;4083:63;;4039:117;3834:329;;;;:::o;4169:663::-;4257:6;4265;4273;4322:2;4310:9;4301:7;4297:23;4293:32;4290:119;;;4328:79;;:::i;:::-;4290:119;4448:1;4473:64;4529:7;4520:6;4509:9;4505:22;4473:64;:::i;:::-;4463:74;;4419:128;4586:2;4612:64;4668:7;4659:6;4648:9;4644:22;4612:64;:::i;:::-;4602:74;;4557:129;4725:2;4751:64;4807:7;4798:6;4787:9;4783:22;4751:64;:::i;:::-;4741:74;;4696:129;4169:663;;;;;:::o;4838:179::-;4907:10;4928:46;4970:3;4962:6;4928:46;:::i;:::-;5006:4;5001:3;4997:14;4983:28;;4838:179;;;;:::o;5023:108::-;5100:24;5118:5;5100:24;:::i;:::-;5095:3;5088:37;5023:108;;:::o;5137:118::-;5224:24;5242:5;5224:24;:::i;:::-;5219:3;5212:37;5137:118;;:::o;5291:732::-;5410:3;5439:54;5487:5;5439:54;:::i;:::-;5509:86;5588:6;5583:3;5509:86;:::i;:::-;5502:93;;5619:56;5669:5;5619:56;:::i;:::-;5698:7;5729:1;5714:284;5739:6;5736:1;5733:13;5714:284;;;5815:6;5809:13;5842:63;5901:3;5886:13;5842:63;:::i;:::-;5835:70;;5928:60;5981:6;5928:60;:::i;:::-;5918:70;;5774:224;5761:1;5758;5754:9;5749:14;;5714:284;;;5718:14;6014:3;6007:10;;5415:608;;;5291:732;;;;:::o;6029:109::-;6110:21;6125:5;6110:21;:::i;:::-;6105:3;6098:34;6029:109;;:::o;6144:147::-;6239:45;6278:5;6239:45;:::i;:::-;6234:3;6227:58;6144:147;;:::o;6297:364::-;6385:3;6413:39;6446:5;6413:39;:::i;:::-;6468:71;6532:6;6527:3;6468:71;:::i;:::-;6461:78;;6548:52;6593:6;6588:3;6581:4;6574:5;6570:16;6548:52;:::i;:::-;6625:29;6647:6;6625:29;:::i;:::-;6620:3;6616:39;6609:46;;6389:272;6297:364;;;;:::o;6667:366::-;6809:3;6830:67;6894:2;6889:3;6830:67;:::i;:::-;6823:74;;6906:93;6995:3;6906:93;:::i;:::-;7024:2;7019:3;7015:12;7008:19;;6667:366;;;:::o;7039:::-;7181:3;7202:67;7266:2;7261:3;7202:67;:::i;:::-;7195:74;;7278:93;7367:3;7278:93;:::i;:::-;7396:2;7391:3;7387:12;7380:19;;7039:366;;;:::o;7411:::-;7553:3;7574:67;7638:2;7633:3;7574:67;:::i;:::-;7567:74;;7650:93;7739:3;7650:93;:::i;:::-;7768:2;7763:3;7759:12;7752:19;;7411:366;;;:::o;7783:::-;7925:3;7946:67;8010:2;8005:3;7946:67;:::i;:::-;7939:74;;8022:93;8111:3;8022:93;:::i;:::-;8140:2;8135:3;8131:12;8124:19;;7783:366;;;:::o;8155:::-;8297:3;8318:67;8382:2;8377:3;8318:67;:::i;:::-;8311:74;;8394:93;8483:3;8394:93;:::i;:::-;8512:2;8507:3;8503:12;8496:19;;8155:366;;;:::o;8527:::-;8669:3;8690:67;8754:2;8749:3;8690:67;:::i;:::-;8683:74;;8766:93;8855:3;8766:93;:::i;:::-;8884:2;8879:3;8875:12;8868:19;;8527:366;;;:::o;8899:::-;9041:3;9062:67;9126:2;9121:3;9062:67;:::i;:::-;9055:74;;9138:93;9227:3;9138:93;:::i;:::-;9256:2;9251:3;9247:12;9240:19;;8899:366;;;:::o;9271:::-;9413:3;9434:67;9498:2;9493:3;9434:67;:::i;:::-;9427:74;;9510:93;9599:3;9510:93;:::i;:::-;9628:2;9623:3;9619:12;9612:19;;9271:366;;;:::o;9643:::-;9785:3;9806:67;9870:2;9865:3;9806:67;:::i;:::-;9799:74;;9882:93;9971:3;9882:93;:::i;:::-;10000:2;9995:3;9991:12;9984:19;;9643:366;;;:::o;10015:::-;10157:3;10178:67;10242:2;10237:3;10178:67;:::i;:::-;10171:74;;10254:93;10343:3;10254:93;:::i;:::-;10372:2;10367:3;10363:12;10356:19;;10015:366;;;:::o;10387:::-;10529:3;10550:67;10614:2;10609:3;10550:67;:::i;:::-;10543:74;;10626:93;10715:3;10626:93;:::i;:::-;10744:2;10739:3;10735:12;10728:19;;10387:366;;;:::o;10759:::-;10901:3;10922:67;10986:2;10981:3;10922:67;:::i;:::-;10915:74;;10998:93;11087:3;10998:93;:::i;:::-;11116:2;11111:3;11107:12;11100:19;;10759:366;;;:::o;11131:::-;11273:3;11294:67;11358:2;11353:3;11294:67;:::i;:::-;11287:74;;11370:93;11459:3;11370:93;:::i;:::-;11488:2;11483:3;11479:12;11472:19;;11131:366;;;:::o;11503:118::-;11590:24;11608:5;11590:24;:::i;:::-;11585:3;11578:37;11503:118;;:::o;11627:112::-;11710:22;11726:5;11710:22;:::i;:::-;11705:3;11698:35;11627:112;;:::o;11745:222::-;11838:4;11876:2;11865:9;11861:18;11853:26;;11889:71;11957:1;11946:9;11942:17;11933:6;11889:71;:::i;:::-;11745:222;;;;:::o;11973:332::-;12094:4;12132:2;12121:9;12117:18;12109:26;;12145:71;12213:1;12202:9;12198:17;12189:6;12145:71;:::i;:::-;12226:72;12294:2;12283:9;12279:18;12270:6;12226:72;:::i;:::-;11973:332;;;;;:::o;12311:::-;12432:4;12470:2;12459:9;12455:18;12447:26;;12483:71;12551:1;12540:9;12536:17;12527:6;12483:71;:::i;:::-;12564:72;12632:2;12621:9;12617:18;12608:6;12564:72;:::i;:::-;12311:332;;;;;:::o;12649:807::-;12898:4;12936:3;12925:9;12921:19;12913:27;;12950:71;13018:1;13007:9;13003:17;12994:6;12950:71;:::i;:::-;13031:72;13099:2;13088:9;13084:18;13075:6;13031:72;:::i;:::-;13113:80;13189:2;13178:9;13174:18;13165:6;13113:80;:::i;:::-;13203;13279:2;13268:9;13264:18;13255:6;13203:80;:::i;:::-;13293:73;13361:3;13350:9;13346:19;13337:6;13293:73;:::i;:::-;13376;13444:3;13433:9;13429:19;13420:6;13376:73;:::i;:::-;12649:807;;;;;;;;;:::o;13462:210::-;13549:4;13587:2;13576:9;13572:18;13564:26;;13600:65;13662:1;13651:9;13647:17;13638:6;13600:65;:::i;:::-;13462:210;;;;:::o;13678:313::-;13791:4;13829:2;13818:9;13814:18;13806:26;;13878:9;13872:4;13868:20;13864:1;13853:9;13849:17;13842:47;13906:78;13979:4;13970:6;13906:78;:::i;:::-;13898:86;;13678:313;;;;:::o;13997:419::-;14163:4;14201:2;14190:9;14186:18;14178:26;;14250:9;14244:4;14240:20;14236:1;14225:9;14221:17;14214:47;14278:131;14404:4;14278:131;:::i;:::-;14270:139;;13997:419;;;:::o;14422:::-;14588:4;14626:2;14615:9;14611:18;14603:26;;14675:9;14669:4;14665:20;14661:1;14650:9;14646:17;14639:47;14703:131;14829:4;14703:131;:::i;:::-;14695:139;;14422:419;;;:::o;14847:::-;15013:4;15051:2;15040:9;15036:18;15028:26;;15100:9;15094:4;15090:20;15086:1;15075:9;15071:17;15064:47;15128:131;15254:4;15128:131;:::i;:::-;15120:139;;14847:419;;;:::o;15272:::-;15438:4;15476:2;15465:9;15461:18;15453:26;;15525:9;15519:4;15515:20;15511:1;15500:9;15496:17;15489:47;15553:131;15679:4;15553:131;:::i;:::-;15545:139;;15272:419;;;:::o;15697:::-;15863:4;15901:2;15890:9;15886:18;15878:26;;15950:9;15944:4;15940:20;15936:1;15925:9;15921:17;15914:47;15978:131;16104:4;15978:131;:::i;:::-;15970:139;;15697:419;;;:::o;16122:::-;16288:4;16326:2;16315:9;16311:18;16303:26;;16375:9;16369:4;16365:20;16361:1;16350:9;16346:17;16339:47;16403:131;16529:4;16403:131;:::i;:::-;16395:139;;16122:419;;;:::o;16547:::-;16713:4;16751:2;16740:9;16736:18;16728:26;;16800:9;16794:4;16790:20;16786:1;16775:9;16771:17;16764:47;16828:131;16954:4;16828:131;:::i;:::-;16820:139;;16547:419;;;:::o;16972:::-;17138:4;17176:2;17165:9;17161:18;17153:26;;17225:9;17219:4;17215:20;17211:1;17200:9;17196:17;17189:47;17253:131;17379:4;17253:131;:::i;:::-;17245:139;;16972:419;;;:::o;17397:::-;17563:4;17601:2;17590:9;17586:18;17578:26;;17650:9;17644:4;17640:20;17636:1;17625:9;17621:17;17614:47;17678:131;17804:4;17678:131;:::i;:::-;17670:139;;17397:419;;;:::o;17822:::-;17988:4;18026:2;18015:9;18011:18;18003:26;;18075:9;18069:4;18065:20;18061:1;18050:9;18046:17;18039:47;18103:131;18229:4;18103:131;:::i;:::-;18095:139;;17822:419;;;:::o;18247:::-;18413:4;18451:2;18440:9;18436:18;18428:26;;18500:9;18494:4;18490:20;18486:1;18475:9;18471:17;18464:47;18528:131;18654:4;18528:131;:::i;:::-;18520:139;;18247:419;;;:::o;18672:::-;18838:4;18876:2;18865:9;18861:18;18853:26;;18925:9;18919:4;18915:20;18911:1;18900:9;18896:17;18889:47;18953:131;19079:4;18953:131;:::i;:::-;18945:139;;18672:419;;;:::o;19097:::-;19263:4;19301:2;19290:9;19286:18;19278:26;;19350:9;19344:4;19340:20;19336:1;19325:9;19321:17;19314:47;19378:131;19504:4;19378:131;:::i;:::-;19370:139;;19097:419;;;:::o;19522:222::-;19615:4;19653:2;19642:9;19638:18;19630:26;;19666:71;19734:1;19723:9;19719:17;19710:6;19666:71;:::i;:::-;19522:222;;;;:::o;19750:831::-;20013:4;20051:3;20040:9;20036:19;20028:27;;20065:71;20133:1;20122:9;20118:17;20109:6;20065:71;:::i;:::-;20146:80;20222:2;20211:9;20207:18;20198:6;20146:80;:::i;:::-;20273:9;20267:4;20263:20;20258:2;20247:9;20243:18;20236:48;20301:108;20404:4;20395:6;20301:108;:::i;:::-;20293:116;;20419:72;20487:2;20476:9;20472:18;20463:6;20419:72;:::i;:::-;20501:73;20569:3;20558:9;20554:19;20545:6;20501:73;:::i;:::-;19750:831;;;;;;;;:::o;20587:214::-;20676:4;20714:2;20703:9;20699:18;20691:26;;20727:67;20791:1;20780:9;20776:17;20767:6;20727:67;:::i;:::-;20587:214;;;;:::o;20888:132::-;20955:4;20978:3;20970:11;;21008:4;21003:3;20999:14;20991:22;;20888:132;;;:::o;21026:114::-;21093:6;21127:5;21121:12;21111:22;;21026:114;;;:::o;21146:99::-;21198:6;21232:5;21226:12;21216:22;;21146:99;;;:::o;21251:113::-;21321:4;21353;21348:3;21344:14;21336:22;;21251:113;;;:::o;21370:184::-;21469:11;21503:6;21498:3;21491:19;21543:4;21538:3;21534:14;21519:29;;21370:184;;;;:::o;21560:169::-;21644:11;21678:6;21673:3;21666:19;21718:4;21713:3;21709:14;21694:29;;21560:169;;;;:::o;21735:305::-;21775:3;21794:20;21812:1;21794:20;:::i;:::-;21789:25;;21828:20;21846:1;21828:20;:::i;:::-;21823:25;;21982:1;21914:66;21910:74;21907:1;21904:81;21901:107;;;21988:18;;:::i;:::-;21901:107;22032:1;22029;22025:9;22018:16;;21735:305;;;;:::o;22046:185::-;22086:1;22103:20;22121:1;22103:20;:::i;:::-;22098:25;;22137:20;22155:1;22137:20;:::i;:::-;22132:25;;22176:1;22166:35;;22181:18;;:::i;:::-;22166:35;22223:1;22220;22216:9;22211:14;;22046:185;;;;:::o;22237:348::-;22277:7;22300:20;22318:1;22300:20;:::i;:::-;22295:25;;22334:20;22352:1;22334:20;:::i;:::-;22329:25;;22522:1;22454:66;22450:74;22447:1;22444:81;22439:1;22432:9;22425:17;22421:105;22418:131;;;22529:18;;:::i;:::-;22418:131;22577:1;22574;22570:9;22559:20;;22237:348;;;;:::o;22591:191::-;22631:4;22651:20;22669:1;22651:20;:::i;:::-;22646:25;;22685:20;22703:1;22685:20;:::i;:::-;22680:25;;22724:1;22721;22718:8;22715:34;;;22729:18;;:::i;:::-;22715:34;22774:1;22771;22767:9;22759:17;;22591:191;;;;:::o;22788:96::-;22825:7;22854:24;22872:5;22854:24;:::i;:::-;22843:35;;22788:96;;;:::o;22890:90::-;22924:7;22967:5;22960:13;22953:21;22942:32;;22890:90;;;:::o;22986:126::-;23023:7;23063:42;23056:5;23052:54;23041:65;;22986:126;;;:::o;23118:77::-;23155:7;23184:5;23173:16;;23118:77;;;:::o;23201:86::-;23236:7;23276:4;23269:5;23265:16;23254:27;;23201:86;;;:::o;23293:121::-;23351:9;23384:24;23402:5;23384:24;:::i;:::-;23371:37;;23293:121;;;:::o;23420:307::-;23488:1;23498:113;23512:6;23509:1;23506:13;23498:113;;;23597:1;23592:3;23588:11;23582:18;23578:1;23573:3;23569:11;23562:39;23534:2;23531:1;23527:10;23522:15;;23498:113;;;23629:6;23626:1;23623:13;23620:101;;;23709:1;23700:6;23695:3;23691:16;23684:27;23620:101;23469:258;23420:307;;;:::o;23733:180::-;23781:77;23778:1;23771:88;23878:4;23875:1;23868:15;23902:4;23899:1;23892:15;23919:180;23967:77;23964:1;23957:88;24064:4;24061:1;24054:15;24088:4;24085:1;24078:15;24105:180;24153:77;24150:1;24143:88;24250:4;24247:1;24240:15;24274:4;24271:1;24264:15;24291:180;24339:77;24336:1;24329:88;24436:4;24433:1;24426:15;24460:4;24457:1;24450:15;24600:117;24709:1;24706;24699:12;24723:102;24764:6;24815:2;24811:7;24806:2;24799:5;24795:14;24791:28;24781:38;;24723:102;;;:::o;24831:222::-;24971:34;24967:1;24959:6;24955:14;24948:58;25040:5;25035:2;25027:6;25023:15;25016:30;24831:222;:::o;25059:229::-;25199:34;25195:1;25187:6;25183:14;25176:58;25268:12;25263:2;25255:6;25251:15;25244:37;25059:229;:::o;25294:221::-;25434:34;25430:1;25422:6;25418:14;25411:58;25503:4;25498:2;25490:6;25486:15;25479:29;25294:221;:::o;25521:177::-;25661:29;25657:1;25649:6;25645:14;25638:53;25521:177;:::o;25704:220::-;25844:34;25840:1;25832:6;25828:14;25821:58;25913:3;25908:2;25900:6;25896:15;25889:28;25704:220;:::o;25930:182::-;26070:34;26066:1;26058:6;26054:14;26047:58;25930:182;:::o;26118:228::-;26258:34;26254:1;26246:6;26242:14;26235:58;26327:11;26322:2;26314:6;26310:15;26303:36;26118:228;:::o;26352:173::-;26492:25;26488:1;26480:6;26476:14;26469:49;26352:173;:::o;26531:224::-;26671:34;26667:1;26659:6;26655:14;26648:58;26740:7;26735:2;26727:6;26723:15;26716:32;26531:224;:::o;26761:223::-;26901:34;26897:1;26889:6;26885:14;26878:58;26970:6;26965:2;26957:6;26953:15;26946:31;26761:223;:::o;26990:173::-;27130:25;27126:1;27118:6;27114:14;27107:49;26990:173;:::o;27169:178::-;27309:30;27305:1;27297:6;27293:14;27286:54;27169:178;:::o;27353:168::-;27493:20;27489:1;27481:6;27477:14;27470:44;27353:168;:::o;27527:122::-;27600:24;27618:5;27600:24;:::i;:::-;27593:5;27590:35;27580:63;;27639:1;27636;27629:12;27580:63;27527:122;:::o;27655:116::-;27725:21;27740:5;27725:21;:::i;:::-;27718:5;27715:32;27705:60;;27761:1;27758;27751:12;27705:60;27655:116;:::o;27777:122::-;27850:24;27868:5;27850:24;:::i;:::-;27843:5;27840:35;27830:63;;27889:1;27886;27879:12;27830:63;27777:122;:::o

Swarm Source

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