ETH Price: $2,516.09 (+0.99%)

Token

Fire Bird Protocol (FIREBIRD)
 

Overview

Max Total Supply

1,000,000,000,000,000 FIREBIRD

Holders

24

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
3,894,808,920,065.956419506 FIREBIRD

Value
$0.00
0x8da3E12f6CDFd04A419b4a1168eb006d7B7264d9
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:
FireBirdProtocol

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 2022-05-30
*/

/*

                            .-==========
                         .-' O    =====
                        /___       ===
                           \_      |
_____________________________)    (_____________________________
\___________               .'      `,              ____________/
  \__________`.     |||<   `.      .'   >|||     .'__________/
     \_________`._  |||  <   `-..-'   >  |||  _.'_________/
        \_________`-..|_  _ <      > _  _|..-'_________/
           \_________   |_|  //  \\  |_|   _________/
                      .-\   //    \\   /-.
      ,  .         _.'.- `._        _.' -.`._         .  ,
    <<<<>>>>     .' .'  /  '``----''`  \  `. `.     <<<<>>>>
      '/\`         /  .' .'.'/|..|\`.`. `.  \         '/\`
      (())        `  /  / .'| |||| |`. \  \  '        (())
       /\          ::_.' .' /| || |\ `. `._::          /\
      //\\           '``.' | | || | | `.''`           //\\
      //\\             .` .` | || | '. '.             //\\
      //\\                `  | `' |  '                //\\
      \\//                                            \\//
       \/                                              \/

t.me/FirebirdProtocol
www.FireBirdProtocol.com

*/

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

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

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

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

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

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

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

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

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

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

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

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

    string private constant _name = "Fire Bird Protocol";
    string private constant _symbol = "FIREBIRD";
    uint8 private constant _decimals = 9;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1000000000000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    
    //Buy Fee
    uint256 private _redisFeeOnBuy = 3;
    uint256 private _taxFeeOnBuy = 5;
    
    //Sell Fee
    uint256 private _redisFeeOnSell = 3;
    uint256 private _taxFeeOnSell = 5;
    
    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;
    
    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;
    
    mapping(address => bool) public bots;
    mapping (address => bool) public preTrader;
    mapping(address => uint256) private cooldown;
    
    address payable private _opAddress = payable(0x423928BE32Dd580E70e6D0365799221d7ce8768C);
    
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = true;
    
    uint256 public _maxTxAmount = 7500000000000 * 10**9; //0.75
    uint256 public _maxWalletSize = 15000000000000 * 10**9; //1.5
    uint256 public _swapTokensAtAmount = 100000000000 * 10**9; //0.1

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

    constructor() {
        
        _rOwned[_msgSender()] = _rTotal;
        // Uniswap V2 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_opAddress] = true;
        
        preTrader[owner()] = true;
        
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        if (from != owner() && to != owner()) {
            
            //Trade start check
            if (!tradingOpen) {
                require(preTrader[from], "TOKEN: This account cannot send tokens until trading is enabled");
            }
              
            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
            require(!bots[to] && !bots[from], "TOKEN: Your account is blacklisted!");
            
            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }
            
            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;

            if(contractTokenBalance >= _maxTxAmount)
            {
                contractTokenBalance = _maxTxAmount;
            }
            
            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }
        
        bool takeFee = true;

        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {
            
            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }
    
            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }
            
        }

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

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

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

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

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

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



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


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

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

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

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

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

    receive() external payable {}

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

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

        return (tTransferAmount, tFee, tTeam);
    }

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

        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();

        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
    
        return (rSupply, tSupply);
    }
    
    
    function removeLimits() public onlyOwner {
     _maxTxAmount = 1000000000000000 * 10**9 ;
     _maxWalletSize = 1000000000000000 * 10**9 ;
    }


    //Set minimum tokens required to swap.
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }
    
    //Set minimum tokens required to swap.
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }
    
   
 
    function allowPreTrading(address account, bool allowed) public onlyOwner {
        require(preTrader[account] != allowed, "TOKEN: Already enabled.");
        preTrader[account] = allowed;
    }
}

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":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_isbot","type":"address"}],"name":"addBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"allowed","type":"bool"}],"name":"allowPreTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_nbot","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":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"preTrader","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405269d3c21bcecceda10000006000196200001e9190620007d8565b6000196200002d91906200075f565b600655600360085560056009556003600a556005600b55600a54600c55600b54600d55600c54600e55600d54600f5573423928be32dd580e70e6d0365799221d7ce8768c601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff0219169083151502179055506901969368974c05b0000060165569032d26d12e980b60000060175568056bc75e2d631000006018553480156200011c57600080fd5b5060006200012f6200067960201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460026000620001e46200067960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620002c357600080fd5b505afa158015620002d8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002fe9190620006c1565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200036157600080fd5b505afa15801562000376573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200039c9190620006c1565b6040518363ffffffff1660e01b8152600401620003bb92919062000715565b602060405180830381600087803b158015620003d657600080fd5b505af1158015620003eb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004119190620006c1565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620004676200068160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160116000620005a06200068160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620006016200067960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef69d3c21bcecceda10000006040516200066a919062000742565b60405180910390a3506200088d565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050620006bb8162000873565b92915050565b600060208284031215620006da57620006d96200086e565b5b6000620006ea84828501620006aa565b91505092915050565b620006fe816200079a565b82525050565b6200070f81620007ce565b82525050565b60006040820190506200072c6000830185620006f3565b6200073b6020830184620006f3565b9392505050565b600060208201905062000759600083018462000704565b92915050565b60006200076c82620007ce565b91506200077983620007ce565b9250828210156200078f576200078e62000810565b5b828203905092915050565b6000620007a782620007ae565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000620007e582620007ce565b9150620007f283620007ce565b9250826200080557620008046200083f565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600080fd5b6200087e816200079a565b81146200088a57600080fd5b50565b6135fb806200089d6000396000f3fe6080604052600436106101a05760003560e01c8063715018a6116100ec57806398a5c3151161008a578063bfd7928411610064578063bfd792841461059d578063c3c8cd80146105da578063dd62ed3e146105f1578063ffecf5161461062e576101a7565b806398a5c315146104fa578063a9059cbb14610523578063bdd795ef14610560576101a7565b80638da5cb5b116100c65780638da5cb5b146104505780638f70ccf71461047b5780638f9a55c0146104a457806395d89b41146104cf576101a7565b8063715018a6146103f7578063751039fc1461040e5780637d1db4a514610425576101a7565b80632f9c45691161015957806349bd5a5e1161013357806349bd5a5e1461034f5780636d8aa8f81461037a5780636fc3eaec146103a357806370a08231146103ba576101a7565b80632f9c4569146102d05780632fd689e3146102f9578063313ce56714610324576101a7565b806306fdde03146101ac578063095ea7b3146101d75780631694505e1461021457806318160ddd1461023f57806323b872dd1461026a578063273123b7146102a7576101a7565b366101a757005b600080fd5b3480156101b857600080fd5b506101c1610657565b6040516101ce9190612c20565b60405180910390f35b3480156101e357600080fd5b506101fe60048036038101906101f99190612833565b610694565b60405161020b9190612bea565b60405180910390f35b34801561022057600080fd5b506102296106b2565b6040516102369190612c05565b60405180910390f35b34801561024b57600080fd5b506102546106d8565b6040516102619190612e02565b60405180910390f35b34801561027657600080fd5b50610291600480360381019061028c91906127a0565b6106ea565b60405161029e9190612bea565b60405180910390f35b3480156102b357600080fd5b506102ce60048036038101906102c99190612706565b6107c3565b005b3480156102dc57600080fd5b506102f760048036038101906102f291906127f3565b6108b3565b005b34801561030557600080fd5b5061030e610a36565b60405161031b9190612e02565b60405180910390f35b34801561033057600080fd5b50610339610a3c565b6040516103469190612e77565b60405180910390f35b34801561035b57600080fd5b50610364610a45565b6040516103719190612bcf565b60405180910390f35b34801561038657600080fd5b506103a1600480360381019061039c9190612873565b610a6b565b005b3480156103af57600080fd5b506103b8610b1d565b005b3480156103c657600080fd5b506103e160048036038101906103dc9190612706565b610b8f565b6040516103ee9190612e02565b60405180910390f35b34801561040357600080fd5b5061040c610be0565b005b34801561041a57600080fd5b50610423610d33565b005b34801561043157600080fd5b5061043a610dec565b6040516104479190612e02565b60405180910390f35b34801561045c57600080fd5b50610465610df2565b6040516104729190612bcf565b60405180910390f35b34801561048757600080fd5b506104a2600480360381019061049d9190612873565b610e1b565b005b3480156104b057600080fd5b506104b9610ecd565b6040516104c69190612e02565b60405180910390f35b3480156104db57600080fd5b506104e4610ed3565b6040516104f19190612c20565b60405180910390f35b34801561050657600080fd5b50610521600480360381019061051c91906128a0565b610f10565b005b34801561052f57600080fd5b5061054a60048036038101906105459190612833565b610faf565b6040516105579190612bea565b60405180910390f35b34801561056c57600080fd5b5061058760048036038101906105829190612706565b610fcd565b6040516105949190612bea565b60405180910390f35b3480156105a957600080fd5b506105c460048036038101906105bf9190612706565b610fed565b6040516105d19190612bea565b60405180910390f35b3480156105e657600080fd5b506105ef61100d565b005b3480156105fd57600080fd5b5061061860048036038101906106139190612760565b611087565b6040516106259190612e02565b60405180910390f35b34801561063a57600080fd5b5061065560048036038101906106509190612706565b61110e565b005b60606040518060400160405280601281526020017f4669726520426972642050726f746f636f6c0000000000000000000000000000815250905090565b60006106a86106a16111fe565b8484611206565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600069d3c21bcecceda1000000905090565b60006106f78484846113d1565b6107b8846107036111fe565b6107b38560405180606001604052806028815260200161359e60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107696111fe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bc19092919063ffffffff16565b611206565b600190509392505050565b6107cb6111fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084f90612d62565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6108bb6111fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610948576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093f90612d62565b60405180910390fd5b801515601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514156109db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d290612d22565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a736111fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af790612d62565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b5e6111fe565b73ffffffffffffffffffffffffffffffffffffffff1614610b7e57600080fd5b6000479050610b8c81611c25565b50565b6000610bd9600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c91565b9050919050565b610be86111fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6c90612d62565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610d3b6111fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dbf90612d62565b60405180910390fd5b69d3c21bcecceda100000060168190555069d3c21bcecceda1000000601781905550565b60165481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610e236111fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea790612d62565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600881526020017f4649524542495244000000000000000000000000000000000000000000000000815250905090565b610f186111fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9c90612d62565b60405180910390fd5b8060188190555050565b6000610fc3610fbc6111fe565b84846113d1565b6001905092915050565b60116020528060005260406000206000915054906101000a900460ff1681565b60106020528060005260406000206000915054906101000a900460ff1681565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661104e6111fe565b73ffffffffffffffffffffffffffffffffffffffff161461106e57600080fd5b600061107930610b8f565b905061108481611cff565b50565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6111166111fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119a90612d62565b60405180910390fd5b6001601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611276576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126d90612de2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156112e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112dd90612cc2565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113c49190612e02565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611441576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143890612da2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a890612c42565b60405180910390fd5b600081116114f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114eb90612d82565b60405180910390fd5b6114fc610df2565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561156a575061153a610df2565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156118c057601560149054906101000a900460ff1661161057601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661160f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160690612c62565b60405180910390fd5b5b601654811115611655576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164c90612ca2565b60405180910390fd5b601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156116f95750601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611738576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172f90612ce2565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146117e5576017548161179a84610b8f565b6117a49190612ee7565b106117e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117db90612dc2565b60405180910390fd5b5b60006117f030610b8f565b905060006018548210159050601654821061180b5760165491505b808015611823575060158054906101000a900460ff16155b801561187d5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156118955750601560169054906101000a900460ff165b156118bd576118a382611cff565b600047905060008111156118bb576118ba47611c25565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806119675750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611a1a5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611a195750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611a285760009050611baf565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611ad35750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611aeb57600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611b965750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611bae57600a54600c81905550600b54600d819055505b5b611bbb84848484611f85565b50505050565b6000838311158290611c09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c009190612c20565b60405180910390fd5b5060008385611c189190612fc8565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611c8d573d6000803e3d6000fd5b5050565b6000600654821115611cd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccf90612c82565b60405180910390fd5b6000611ce2611fb2565b9050611cf78184611fdd90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611d3657611d35613159565b5b604051908082528060200260200182016040528015611d645781602001602082028036833780820191505090505b5090503081600081518110611d7c57611d7b61312a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611e1e57600080fd5b505afa158015611e32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e569190612733565b81600181518110611e6a57611e6961312a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611ed130601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611206565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611f35959493929190612e1d565b600060405180830381600087803b158015611f4f57600080fd5b505af1158015611f63573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b80611f9357611f92612027565b5b611f9e84848461206a565b80611fac57611fab612235565b5b50505050565b6000806000611fbf612249565b91509150611fd68183611fdd90919063ffffffff16565b9250505090565b600061201f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506122ae565b905092915050565b6000600c5414801561203b57506000600d54145b1561204557612068565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b60008060008060008061207c87612311565b9550955095509550955095506120da86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461237990919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061216f85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123c390919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506121bb81612421565b6121c584836124de565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516122229190612e02565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b60008060006006549050600069d3c21bcecceda1000000905061228169d3c21bcecceda1000000600654611fdd90919063ffffffff16565b8210156122a15760065469d3c21bcecceda10000009350935050506122aa565b81819350935050505b9091565b600080831182906122f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ec9190612c20565b60405180910390fd5b50600083856123049190612f3d565b9050809150509392505050565b600080600080600080600080600061232e8a600c54600d54612518565b925092509250600061233e611fb2565b905060008060006123518e8787876125ae565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006123bb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611bc1565b905092915050565b60008082846123d29190612ee7565b905083811015612417576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240e90612d02565b60405180910390fd5b8091505092915050565b600061242b611fb2565b90506000612442828461263790919063ffffffff16565b905061249681600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123c390919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6124f38260065461237990919063ffffffff16565b60068190555061250e816007546123c390919063ffffffff16565b6007819055505050565b6000806000806125446064612536888a61263790919063ffffffff16565b611fdd90919063ffffffff16565b9050600061256e6064612560888b61263790919063ffffffff16565b611fdd90919063ffffffff16565b9050600061259782612589858c61237990919063ffffffff16565b61237990919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806125c7858961263790919063ffffffff16565b905060006125de868961263790919063ffffffff16565b905060006125f5878961263790919063ffffffff16565b9050600061261e82612610858761237990919063ffffffff16565b61237990919063ffffffff16565b9050838184965096509650505050509450945094915050565b60008083141561264a57600090506126ac565b600082846126589190612f6e565b90508284826126679190612f3d565b146126a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269e90612d42565b60405180910390fd5b809150505b92915050565b6000813590506126c181613558565b92915050565b6000815190506126d681613558565b92915050565b6000813590506126eb8161356f565b92915050565b60008135905061270081613586565b92915050565b60006020828403121561271c5761271b613188565b5b600061272a848285016126b2565b91505092915050565b60006020828403121561274957612748613188565b5b6000612757848285016126c7565b91505092915050565b6000806040838503121561277757612776613188565b5b6000612785858286016126b2565b9250506020612796858286016126b2565b9150509250929050565b6000806000606084860312156127b9576127b8613188565b5b60006127c7868287016126b2565b93505060206127d8868287016126b2565b92505060406127e9868287016126f1565b9150509250925092565b6000806040838503121561280a57612809613188565b5b6000612818858286016126b2565b9250506020612829858286016126dc565b9150509250929050565b6000806040838503121561284a57612849613188565b5b6000612858858286016126b2565b9250506020612869858286016126f1565b9150509250929050565b60006020828403121561288957612888613188565b5b6000612897848285016126dc565b91505092915050565b6000602082840312156128b6576128b5613188565b5b60006128c4848285016126f1565b91505092915050565b60006128d983836128e5565b60208301905092915050565b6128ee81612ffc565b82525050565b6128fd81612ffc565b82525050565b600061290e82612ea2565b6129188185612ec5565b935061292383612e92565b8060005b8381101561295457815161293b88826128cd565b975061294683612eb8565b925050600181019050612927565b5085935050505092915050565b61296a8161300e565b82525050565b61297981613051565b82525050565b61298881613063565b82525050565b600061299982612ead565b6129a38185612ed6565b93506129b3818560208601613099565b6129bc8161318d565b840191505092915050565b60006129d4602383612ed6565b91506129df8261319e565b604082019050919050565b60006129f7603f83612ed6565b9150612a02826131ed565b604082019050919050565b6000612a1a602a83612ed6565b9150612a258261323c565b604082019050919050565b6000612a3d601c83612ed6565b9150612a488261328b565b602082019050919050565b6000612a60602283612ed6565b9150612a6b826132b4565b604082019050919050565b6000612a83602383612ed6565b9150612a8e82613303565b604082019050919050565b6000612aa6601b83612ed6565b9150612ab182613352565b602082019050919050565b6000612ac9601783612ed6565b9150612ad48261337b565b602082019050919050565b6000612aec602183612ed6565b9150612af7826133a4565b604082019050919050565b6000612b0f602083612ed6565b9150612b1a826133f3565b602082019050919050565b6000612b32602983612ed6565b9150612b3d8261341c565b604082019050919050565b6000612b55602583612ed6565b9150612b608261346b565b604082019050919050565b6000612b78602383612ed6565b9150612b83826134ba565b604082019050919050565b6000612b9b602483612ed6565b9150612ba682613509565b604082019050919050565b612bba8161303a565b82525050565b612bc981613044565b82525050565b6000602082019050612be460008301846128f4565b92915050565b6000602082019050612bff6000830184612961565b92915050565b6000602082019050612c1a6000830184612970565b92915050565b60006020820190508181036000830152612c3a818461298e565b905092915050565b60006020820190508181036000830152612c5b816129c7565b9050919050565b60006020820190508181036000830152612c7b816129ea565b9050919050565b60006020820190508181036000830152612c9b81612a0d565b9050919050565b60006020820190508181036000830152612cbb81612a30565b9050919050565b60006020820190508181036000830152612cdb81612a53565b9050919050565b60006020820190508181036000830152612cfb81612a76565b9050919050565b60006020820190508181036000830152612d1b81612a99565b9050919050565b60006020820190508181036000830152612d3b81612abc565b9050919050565b60006020820190508181036000830152612d5b81612adf565b9050919050565b60006020820190508181036000830152612d7b81612b02565b9050919050565b60006020820190508181036000830152612d9b81612b25565b9050919050565b60006020820190508181036000830152612dbb81612b48565b9050919050565b60006020820190508181036000830152612ddb81612b6b565b9050919050565b60006020820190508181036000830152612dfb81612b8e565b9050919050565b6000602082019050612e176000830184612bb1565b92915050565b600060a082019050612e326000830188612bb1565b612e3f602083018761297f565b8181036040830152612e518186612903565b9050612e6060608301856128f4565b612e6d6080830184612bb1565b9695505050505050565b6000602082019050612e8c6000830184612bc0565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000612ef28261303a565b9150612efd8361303a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612f3257612f316130cc565b5b828201905092915050565b6000612f488261303a565b9150612f538361303a565b925082612f6357612f626130fb565b5b828204905092915050565b6000612f798261303a565b9150612f848361303a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612fbd57612fbc6130cc565b5b828202905092915050565b6000612fd38261303a565b9150612fde8361303a565b925082821015612ff157612ff06130cc565b5b828203905092915050565b60006130078261301a565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061305c82613075565b9050919050565b600061306e8261303a565b9050919050565b600061308082613087565b9050919050565b60006130928261301a565b9050919050565b60005b838110156130b757808201518184015260208101905061309c565b838111156130c6576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f544f4b454e3a20416c726561647920656e61626c65642e000000000000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b61356181612ffc565b811461356c57600080fd5b50565b6135788161300e565b811461358357600080fd5b50565b61358f8161303a565b811461359a57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212207af2a6cc13a03ab3a8cb822d262d10263adc5e1287d5a0f570871def6258306b64736f6c63430008070033

Deployed Bytecode

0x6080604052600436106101a05760003560e01c8063715018a6116100ec57806398a5c3151161008a578063bfd7928411610064578063bfd792841461059d578063c3c8cd80146105da578063dd62ed3e146105f1578063ffecf5161461062e576101a7565b806398a5c315146104fa578063a9059cbb14610523578063bdd795ef14610560576101a7565b80638da5cb5b116100c65780638da5cb5b146104505780638f70ccf71461047b5780638f9a55c0146104a457806395d89b41146104cf576101a7565b8063715018a6146103f7578063751039fc1461040e5780637d1db4a514610425576101a7565b80632f9c45691161015957806349bd5a5e1161013357806349bd5a5e1461034f5780636d8aa8f81461037a5780636fc3eaec146103a357806370a08231146103ba576101a7565b80632f9c4569146102d05780632fd689e3146102f9578063313ce56714610324576101a7565b806306fdde03146101ac578063095ea7b3146101d75780631694505e1461021457806318160ddd1461023f57806323b872dd1461026a578063273123b7146102a7576101a7565b366101a757005b600080fd5b3480156101b857600080fd5b506101c1610657565b6040516101ce9190612c20565b60405180910390f35b3480156101e357600080fd5b506101fe60048036038101906101f99190612833565b610694565b60405161020b9190612bea565b60405180910390f35b34801561022057600080fd5b506102296106b2565b6040516102369190612c05565b60405180910390f35b34801561024b57600080fd5b506102546106d8565b6040516102619190612e02565b60405180910390f35b34801561027657600080fd5b50610291600480360381019061028c91906127a0565b6106ea565b60405161029e9190612bea565b60405180910390f35b3480156102b357600080fd5b506102ce60048036038101906102c99190612706565b6107c3565b005b3480156102dc57600080fd5b506102f760048036038101906102f291906127f3565b6108b3565b005b34801561030557600080fd5b5061030e610a36565b60405161031b9190612e02565b60405180910390f35b34801561033057600080fd5b50610339610a3c565b6040516103469190612e77565b60405180910390f35b34801561035b57600080fd5b50610364610a45565b6040516103719190612bcf565b60405180910390f35b34801561038657600080fd5b506103a1600480360381019061039c9190612873565b610a6b565b005b3480156103af57600080fd5b506103b8610b1d565b005b3480156103c657600080fd5b506103e160048036038101906103dc9190612706565b610b8f565b6040516103ee9190612e02565b60405180910390f35b34801561040357600080fd5b5061040c610be0565b005b34801561041a57600080fd5b50610423610d33565b005b34801561043157600080fd5b5061043a610dec565b6040516104479190612e02565b60405180910390f35b34801561045c57600080fd5b50610465610df2565b6040516104729190612bcf565b60405180910390f35b34801561048757600080fd5b506104a2600480360381019061049d9190612873565b610e1b565b005b3480156104b057600080fd5b506104b9610ecd565b6040516104c69190612e02565b60405180910390f35b3480156104db57600080fd5b506104e4610ed3565b6040516104f19190612c20565b60405180910390f35b34801561050657600080fd5b50610521600480360381019061051c91906128a0565b610f10565b005b34801561052f57600080fd5b5061054a60048036038101906105459190612833565b610faf565b6040516105579190612bea565b60405180910390f35b34801561056c57600080fd5b5061058760048036038101906105829190612706565b610fcd565b6040516105949190612bea565b60405180910390f35b3480156105a957600080fd5b506105c460048036038101906105bf9190612706565b610fed565b6040516105d19190612bea565b60405180910390f35b3480156105e657600080fd5b506105ef61100d565b005b3480156105fd57600080fd5b5061061860048036038101906106139190612760565b611087565b6040516106259190612e02565b60405180910390f35b34801561063a57600080fd5b5061065560048036038101906106509190612706565b61110e565b005b60606040518060400160405280601281526020017f4669726520426972642050726f746f636f6c0000000000000000000000000000815250905090565b60006106a86106a16111fe565b8484611206565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600069d3c21bcecceda1000000905090565b60006106f78484846113d1565b6107b8846107036111fe565b6107b38560405180606001604052806028815260200161359e60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107696111fe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bc19092919063ffffffff16565b611206565b600190509392505050565b6107cb6111fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084f90612d62565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6108bb6111fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610948576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093f90612d62565b60405180910390fd5b801515601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514156109db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d290612d22565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a736111fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af790612d62565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b5e6111fe565b73ffffffffffffffffffffffffffffffffffffffff1614610b7e57600080fd5b6000479050610b8c81611c25565b50565b6000610bd9600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c91565b9050919050565b610be86111fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6c90612d62565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610d3b6111fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dbf90612d62565b60405180910390fd5b69d3c21bcecceda100000060168190555069d3c21bcecceda1000000601781905550565b60165481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610e236111fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea790612d62565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600881526020017f4649524542495244000000000000000000000000000000000000000000000000815250905090565b610f186111fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9c90612d62565b60405180910390fd5b8060188190555050565b6000610fc3610fbc6111fe565b84846113d1565b6001905092915050565b60116020528060005260406000206000915054906101000a900460ff1681565b60106020528060005260406000206000915054906101000a900460ff1681565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661104e6111fe565b73ffffffffffffffffffffffffffffffffffffffff161461106e57600080fd5b600061107930610b8f565b905061108481611cff565b50565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6111166111fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119a90612d62565b60405180910390fd5b6001601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611276576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126d90612de2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156112e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112dd90612cc2565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113c49190612e02565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611441576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143890612da2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a890612c42565b60405180910390fd5b600081116114f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114eb90612d82565b60405180910390fd5b6114fc610df2565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561156a575061153a610df2565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156118c057601560149054906101000a900460ff1661161057601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661160f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160690612c62565b60405180910390fd5b5b601654811115611655576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164c90612ca2565b60405180910390fd5b601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156116f95750601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611738576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172f90612ce2565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146117e5576017548161179a84610b8f565b6117a49190612ee7565b106117e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117db90612dc2565b60405180910390fd5b5b60006117f030610b8f565b905060006018548210159050601654821061180b5760165491505b808015611823575060158054906101000a900460ff16155b801561187d5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156118955750601560169054906101000a900460ff165b156118bd576118a382611cff565b600047905060008111156118bb576118ba47611c25565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806119675750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611a1a5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611a195750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611a285760009050611baf565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611ad35750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611aeb57600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611b965750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611bae57600a54600c81905550600b54600d819055505b5b611bbb84848484611f85565b50505050565b6000838311158290611c09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c009190612c20565b60405180910390fd5b5060008385611c189190612fc8565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611c8d573d6000803e3d6000fd5b5050565b6000600654821115611cd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccf90612c82565b60405180910390fd5b6000611ce2611fb2565b9050611cf78184611fdd90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611d3657611d35613159565b5b604051908082528060200260200182016040528015611d645781602001602082028036833780820191505090505b5090503081600081518110611d7c57611d7b61312a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611e1e57600080fd5b505afa158015611e32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e569190612733565b81600181518110611e6a57611e6961312a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611ed130601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611206565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611f35959493929190612e1d565b600060405180830381600087803b158015611f4f57600080fd5b505af1158015611f63573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b80611f9357611f92612027565b5b611f9e84848461206a565b80611fac57611fab612235565b5b50505050565b6000806000611fbf612249565b91509150611fd68183611fdd90919063ffffffff16565b9250505090565b600061201f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506122ae565b905092915050565b6000600c5414801561203b57506000600d54145b1561204557612068565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b60008060008060008061207c87612311565b9550955095509550955095506120da86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461237990919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061216f85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123c390919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506121bb81612421565b6121c584836124de565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516122229190612e02565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b60008060006006549050600069d3c21bcecceda1000000905061228169d3c21bcecceda1000000600654611fdd90919063ffffffff16565b8210156122a15760065469d3c21bcecceda10000009350935050506122aa565b81819350935050505b9091565b600080831182906122f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ec9190612c20565b60405180910390fd5b50600083856123049190612f3d565b9050809150509392505050565b600080600080600080600080600061232e8a600c54600d54612518565b925092509250600061233e611fb2565b905060008060006123518e8787876125ae565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006123bb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611bc1565b905092915050565b60008082846123d29190612ee7565b905083811015612417576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240e90612d02565b60405180910390fd5b8091505092915050565b600061242b611fb2565b90506000612442828461263790919063ffffffff16565b905061249681600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123c390919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6124f38260065461237990919063ffffffff16565b60068190555061250e816007546123c390919063ffffffff16565b6007819055505050565b6000806000806125446064612536888a61263790919063ffffffff16565b611fdd90919063ffffffff16565b9050600061256e6064612560888b61263790919063ffffffff16565b611fdd90919063ffffffff16565b9050600061259782612589858c61237990919063ffffffff16565b61237990919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806125c7858961263790919063ffffffff16565b905060006125de868961263790919063ffffffff16565b905060006125f5878961263790919063ffffffff16565b9050600061261e82612610858761237990919063ffffffff16565b61237990919063ffffffff16565b9050838184965096509650505050509450945094915050565b60008083141561264a57600090506126ac565b600082846126589190612f6e565b90508284826126679190612f3d565b146126a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269e90612d42565b60405180910390fd5b809150505b92915050565b6000813590506126c181613558565b92915050565b6000815190506126d681613558565b92915050565b6000813590506126eb8161356f565b92915050565b60008135905061270081613586565b92915050565b60006020828403121561271c5761271b613188565b5b600061272a848285016126b2565b91505092915050565b60006020828403121561274957612748613188565b5b6000612757848285016126c7565b91505092915050565b6000806040838503121561277757612776613188565b5b6000612785858286016126b2565b9250506020612796858286016126b2565b9150509250929050565b6000806000606084860312156127b9576127b8613188565b5b60006127c7868287016126b2565b93505060206127d8868287016126b2565b92505060406127e9868287016126f1565b9150509250925092565b6000806040838503121561280a57612809613188565b5b6000612818858286016126b2565b9250506020612829858286016126dc565b9150509250929050565b6000806040838503121561284a57612849613188565b5b6000612858858286016126b2565b9250506020612869858286016126f1565b9150509250929050565b60006020828403121561288957612888613188565b5b6000612897848285016126dc565b91505092915050565b6000602082840312156128b6576128b5613188565b5b60006128c4848285016126f1565b91505092915050565b60006128d983836128e5565b60208301905092915050565b6128ee81612ffc565b82525050565b6128fd81612ffc565b82525050565b600061290e82612ea2565b6129188185612ec5565b935061292383612e92565b8060005b8381101561295457815161293b88826128cd565b975061294683612eb8565b925050600181019050612927565b5085935050505092915050565b61296a8161300e565b82525050565b61297981613051565b82525050565b61298881613063565b82525050565b600061299982612ead565b6129a38185612ed6565b93506129b3818560208601613099565b6129bc8161318d565b840191505092915050565b60006129d4602383612ed6565b91506129df8261319e565b604082019050919050565b60006129f7603f83612ed6565b9150612a02826131ed565b604082019050919050565b6000612a1a602a83612ed6565b9150612a258261323c565b604082019050919050565b6000612a3d601c83612ed6565b9150612a488261328b565b602082019050919050565b6000612a60602283612ed6565b9150612a6b826132b4565b604082019050919050565b6000612a83602383612ed6565b9150612a8e82613303565b604082019050919050565b6000612aa6601b83612ed6565b9150612ab182613352565b602082019050919050565b6000612ac9601783612ed6565b9150612ad48261337b565b602082019050919050565b6000612aec602183612ed6565b9150612af7826133a4565b604082019050919050565b6000612b0f602083612ed6565b9150612b1a826133f3565b602082019050919050565b6000612b32602983612ed6565b9150612b3d8261341c565b604082019050919050565b6000612b55602583612ed6565b9150612b608261346b565b604082019050919050565b6000612b78602383612ed6565b9150612b83826134ba565b604082019050919050565b6000612b9b602483612ed6565b9150612ba682613509565b604082019050919050565b612bba8161303a565b82525050565b612bc981613044565b82525050565b6000602082019050612be460008301846128f4565b92915050565b6000602082019050612bff6000830184612961565b92915050565b6000602082019050612c1a6000830184612970565b92915050565b60006020820190508181036000830152612c3a818461298e565b905092915050565b60006020820190508181036000830152612c5b816129c7565b9050919050565b60006020820190508181036000830152612c7b816129ea565b9050919050565b60006020820190508181036000830152612c9b81612a0d565b9050919050565b60006020820190508181036000830152612cbb81612a30565b9050919050565b60006020820190508181036000830152612cdb81612a53565b9050919050565b60006020820190508181036000830152612cfb81612a76565b9050919050565b60006020820190508181036000830152612d1b81612a99565b9050919050565b60006020820190508181036000830152612d3b81612abc565b9050919050565b60006020820190508181036000830152612d5b81612adf565b9050919050565b60006020820190508181036000830152612d7b81612b02565b9050919050565b60006020820190508181036000830152612d9b81612b25565b9050919050565b60006020820190508181036000830152612dbb81612b48565b9050919050565b60006020820190508181036000830152612ddb81612b6b565b9050919050565b60006020820190508181036000830152612dfb81612b8e565b9050919050565b6000602082019050612e176000830184612bb1565b92915050565b600060a082019050612e326000830188612bb1565b612e3f602083018761297f565b8181036040830152612e518186612903565b9050612e6060608301856128f4565b612e6d6080830184612bb1565b9695505050505050565b6000602082019050612e8c6000830184612bc0565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000612ef28261303a565b9150612efd8361303a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612f3257612f316130cc565b5b828201905092915050565b6000612f488261303a565b9150612f538361303a565b925082612f6357612f626130fb565b5b828204905092915050565b6000612f798261303a565b9150612f848361303a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612fbd57612fbc6130cc565b5b828202905092915050565b6000612fd38261303a565b9150612fde8361303a565b925082821015612ff157612ff06130cc565b5b828203905092915050565b60006130078261301a565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061305c82613075565b9050919050565b600061306e8261303a565b9050919050565b600061308082613087565b9050919050565b60006130928261301a565b9050919050565b60005b838110156130b757808201518184015260208101905061309c565b838111156130c6576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f544f4b454e3a20416c726561647920656e61626c65642e000000000000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b61356181612ffc565b811461356c57600080fd5b50565b6135788161300e565b811461358357600080fd5b50565b61358f8161303a565b811461359a57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212207af2a6cc13a03ab3a8cb822d262d10263adc5e1287d5a0f570871def6258306b64736f6c63430008070033

Deployed Bytecode Sourcemap

5014:13105:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7651:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8576:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6396:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7928:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8777:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13879:86;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17920:196;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6726:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7837:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6444:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17799:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13581:189;;;;;;;;;;;;;:::i;:::-;;8031:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2755:148;;;;;;;;;;;;;:::i;:::-;;17403:147;;;;;;;;;;;;;:::i;:::-;;6594:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2541:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13274:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6659:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7742:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17604:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8177:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6189:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6146:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13383:190;;;;;;;;;;;;;:::i;:::-;;8384:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13782:87;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7651:83;7688:13;7721:5;;;;;;;;;;;;;;;;;7714:12;;7651:83;:::o;8576:193::-;8678:4;8700:39;8709:12;:10;:12::i;:::-;8723:7;8732:6;8700:8;:39::i;:::-;8757:4;8750:11;;8576:193;;;;:::o;6396:41::-;;;;;;;;;;;;;:::o;7928:95::-;7981:7;5587:24;8001:14;;7928:95;:::o;8777:446::-;8909:4;8926:36;8936:6;8944:9;8955:6;8926:9;:36::i;:::-;8973:220;8996:6;9017:12;:10;:12::i;:::-;9044:138;9100:6;9044:138;;;;;;;;;;;;;;;;;:11;:19;9056:6;9044:19;;;;;;;;;;;;;;;:33;9064:12;:10;:12::i;:::-;9044:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8973:8;:220::i;:::-;9211:4;9204:11;;8777:446;;;;;:::o;13879:86::-;2678:12;:10;:12::i;:::-;2668:22;;:6;;;;;;;;;;:22;;;2660:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13952:5:::1;13938:4;:11;13943:5;13938:11;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;13879:86:::0;:::o;17920:196::-;2678:12;:10;:12::i;:::-;2668:22;;:6;;;;;;;;;;:22;;;2660:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18034:7:::1;18012:29;;:9;:18;18022:7;18012:18;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;;18004:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;18101:7;18080:9;:18;18090:7;18080:18;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;17920:196:::0;;:::o;6726:57::-;;;;:::o;7837:83::-;7878:5;5261:1;7896:16;;7837:83;:::o;6444:28::-;;;;;;;;;;;;;:::o;17799:101::-;2678:12;:10;:12::i;:::-;2668:22;;:6;;;;;;;;;;:22;;;2660:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17880:12:::1;17866:11;;:26;;;;;;;;;;;;;;;;;;17799:101:::0;:::o;13581:189::-;13647:10;;;;;;;;;;;13631:26;;:12;:10;:12::i;:::-;:26;;;13623:35;;;;;;13669:26;13698:21;13669:50;;13730:32;13743:18;13730:12;:32::i;:::-;13612:158;13581:189::o;8031:138::-;8097:7;8124:37;8144:7;:16;8152:7;8144:16;;;;;;;;;;;;;;;;8124:19;:37::i;:::-;8117:44;;8031:138;;;:::o;2755:148::-;2678:12;:10;:12::i;:::-;2668:22;;:6;;;;;;;;;;:22;;;2660:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2862:1:::1;2825:40;;2846:6;::::0;::::1;;;;;;;;2825:40;;;;;;;;;;;;2893:1;2876:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2755:148::o:0;17403:147::-;2678:12;:10;:12::i;:::-;2668:22;;:6;;;;;;;;;;:22;;;2660:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17467:24:::1;17452:12;:39;;;;17517:24;17500:14;:41;;;;17403:147::o:0;6594:51::-;;;;:::o;2541:79::-;2579:7;2606:6;;;;;;;;;;;2599:13;;2541:79;:::o;13274:101::-;2678:12;:10;:12::i;:::-;2668:22;;:6;;;;;;;;;;:22;;;2660:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13355:12:::1;13341:11;;:26;;;;;;;;;;;;;;;;;;13274:101:::0;:::o;6659:54::-;;;;:::o;7742:87::-;7781:13;7814:7;;;;;;;;;;;;;;;;;7807:14;;7742:87;:::o;17604:139::-;2678:12;:10;:12::i;:::-;2668:22;;:6;;;;;;;;;;:22;;;2660:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17717:18:::1;17695:19;:40;;;;17604:139:::0;:::o;8177:199::-;8282:4;8304:42;8314:12;:10;:12::i;:::-;8328:9;8339:6;8304:9;:42::i;:::-;8364:4;8357:11;;8177:199;;;;:::o;6189:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;6146:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;13383:190::-;13449:10;;;;;;;;;;;13433:26;;:12;:10;:12::i;:::-;:26;;;13425:35;;;;;;13471:23;13497:24;13515:4;13497:9;:24::i;:::-;13471:50;;13532:33;13549:15;13532:16;:33::i;:::-;13414:159;13383:190::o;8384:184::-;8501:7;8533:11;:18;8545:5;8533:18;;;;;;;;;;;;;;;:27;8552:7;8533:27;;;;;;;;;;;;;;;;8526:34;;8384:184;;;;:::o;13782:87::-;2678:12;:10;:12::i;:::-;2668:22;;:6;;;;;;;;;;:22;;;2660:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13857:4:::1;13842;:12;13847:6;13842:12;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;13782:87:::0;:::o;1300:98::-;1353:7;1380:10;1373:17;;1300:98;:::o;9926:369::-;10070:1;10053:19;;:5;:19;;;;10045:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10151:1;10132:21;;:7;:21;;;;10124:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10233:6;10203:11;:18;10215:5;10203:18;;;;;;;;;;;;;;;:27;10222:7;10203:27;;;;;;;;;;;;;;;:36;;;;10271:7;10255:32;;10264:5;10255:32;;;10280:6;10255:32;;;;;;:::i;:::-;;;;;;;;9926:369;;;:::o;10303:2372::-;10441:1;10425:18;;:4;:18;;;;10417:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10518:1;10504:16;;:2;:16;;;;10496:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10588:1;10579:6;:10;10571:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10660:7;:5;:7::i;:::-;10652:15;;:4;:15;;;;:32;;;;;10677:7;:5;:7::i;:::-;10671:13;;:2;:13;;;;10652:32;10648:1265;;;10753:11;;;;;;;;;;;10748:144;;10793:9;:15;10803:4;10793:15;;;;;;;;;;;;;;;;;;;;;;;;;10785:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;10748:144;10940:12;;10930:6;:22;;10922:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;11009:4;:8;11014:2;11009:8;;;;;;;;;;;;;;;;;;;;;;;;;11008:9;:24;;;;;11022:4;:10;11027:4;11022:10;;;;;;;;;;;;;;;;;;;;;;;;;11021:11;11008:24;11000:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;11110:13;;;;;;;;;;;11104:19;;:2;:19;;;11101:146;;11177:14;;11168:6;11152:13;11162:2;11152:9;:13::i;:::-;:22;;;;:::i;:::-;:39;11144:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;11101:146;11275:28;11306:24;11324:4;11306:9;:24::i;:::-;11275:55;;11345:12;11384:19;;11360:20;:43;;11345:58;;11447:12;;11423:20;:36;11420:124;;11516:12;;11493:35;;11420:124;11576:7;:18;;;;;11588:6;;;;;;;;;;11587:7;11576:18;:43;;;;;11606:13;;;;;;;;;;;11598:21;;:4;:21;;;;11576:43;:58;;;;;11623:11;;;;;;;;;;;11576:58;11572:330;;;11655:38;11672:20;11655:16;:38::i;:::-;11712:26;11741:21;11712:50;;11806:1;11785:18;:22;11781:106;;;11832:35;11845:21;11832:12;:35::i;:::-;11781:106;11636:266;11572:330;10686:1227;;10648:1265;11933:12;11948:4;11933:19;;11997:18;:24;12016:4;11997:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;12025:18;:22;12044:2;12025:22;;;;;;;;;;;;;;;;;;;;;;;;;11997:50;11996:102;;;;12061:13;;;;;;;;;;;12053:21;;:4;:21;;;;:44;;;;;12084:13;;;;;;;;;;;12078:19;;:2;:19;;;;12053:44;11996:102;11992:622;;;12125:5;12115:15;;11992:622;;;12220:13;;;;;;;;;;;12212:21;;:4;:21;;;:55;;;;;12251:15;;;;;;;;;;;12237:30;;:2;:30;;;;12212:55;12209:162;;;12300:14;;12288:9;:26;;;;12343:12;;12333:7;:22;;;;12209:162;12434:13;;;;;;;;;;;12428:19;;:2;:19;;;:55;;;;;12467:15;;;;;;;;;;;12451:32;;:4;:32;;;;12428:55;12424:165;;;12516:15;;12504:9;:27;;;;12560:13;;12550:7;:23;;;;12424:165;11992:622;12626:41;12641:4;12647:2;12651:6;12659:7;12626:14;:41::i;:::-;10406:2269;10303:2372;;;:::o;3265:224::-;3385:7;3418:1;3413;:6;;3421:12;3405:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3445:9;3461:1;3457;:5;;;;:::i;:::-;3445:17;;3480:1;3473:8;;;3265:224;;;;;:::o;13174:92::-;13231:10;;;;;;;;;;;:19;;:27;13251:6;13231:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13174:92;:::o;9231:323::-;9326:7;9384;;9373;:18;;9351:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;9472:19;9494:10;:8;:10::i;:::-;9472:32;;9522:24;9534:11;9522:7;:11;;:24;;;;:::i;:::-;9515:31;;;9231:323;;;:::o;12683:483::-;6892:4;6883:6;;:13;;;;;;;;;;;;;;;;;;12761:21:::1;12799:1;12785:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12761:40;;12830:4;12812;12817:1;12812:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12856:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12846:4;12851:1;12846:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;12889:62;12906:4;12921:15;;;;;;;;;;;12939:11;12889:8;:62::i;:::-;12962:15;;;;;;;;;;;:66;;;13043:11;13069:1;13085:4;13112;13132:15;12962:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12750:416;6928:5:::0;6919:6;;:14;;;;;;;;;;;;;;;;;;12683:483;:::o;13973:282::-;14129:7;14124:28;;14138:14;:12;:14::i;:::-;14124:28;14163:44;14181:6;14189:9;14200:6;14163:17;:44::i;:::-;14223:7;14218:29;;14232:15;:13;:15::i;:::-;14218:29;13973:282;;;;:::o;16948:166::-;16990:7;17011:15;17028;17047:19;:17;:19::i;:::-;17010:56;;;;17086:20;17098:7;17086;:11;;:20;;;;:::i;:::-;17079:27;;;;16948:166;:::o;3751:132::-;3809:7;3836:39;3840:1;3843;3836:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3829:46;;3751:132;;;;:::o;9562:231::-;9622:1;9609:9;;:14;:30;;;;;9638:1;9627:7;;:12;9609:30;9605:43;;;9641:7;;9605:43;9684:9;;9664:17;:29;;;;9722:7;;9704:15;:25;;;;9762:1;9750:9;:13;;;;9784:1;9774:7;:11;;;;9562:231;:::o;14263:610::-;14410:15;14440:23;14478:12;14505:23;14543:12;14570:13;14597:19;14608:7;14597:10;:19::i;:::-;14395:221;;;;;;;;;;;;14645:28;14665:7;14645;:15;14653:6;14645:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;14627:7;:15;14635:6;14627:15;;;;;;;;;;;;;;;:46;;;;14705:39;14728:15;14705:7;:18;14713:9;14705:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;14684:7;:18;14692:9;14684:18;;;;;;;;;;;;;;;:60;;;;14755:16;14765:5;14755:9;:16::i;:::-;14782:23;14794:4;14800;14782:11;:23::i;:::-;14838:9;14821:44;;14830:6;14821:44;;;14849:15;14821:44;;;;;;:::i;:::-;;;;;;;;14384:489;;;;;;14263:610;;;:::o;9801:117::-;9857:17;;9845:9;:29;;;;9895:15;;9885:7;:25;;;;9801:117::o;17122:263::-;17173:7;17182;17202:15;17220:7;;17202:25;;17238:15;5587:24;17238:25;;17288:20;5587:24;17288:7;;:11;;:20;;;;:::i;:::-;17278:7;:30;17274:61;;;17318:7;;5587:24;17310:25;;;;;;;;17274:61;17360:7;17369;17352:25;;;;;;17122:263;;;:::o;3891:223::-;4011:7;4043:1;4039;:5;4046:12;4031:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;4070:9;4086:1;4082;:5;;;;:::i;:::-;4070:17;;4105:1;4098:8;;;3891:223;;;;;:::o;15292:625::-;15392:7;15414;15436;15458;15480;15502;15538:23;15563:12;15577:13;15607:40;15619:7;15628:9;;15639:7;;15607:11;:40::i;:::-;15537:110;;;;;;15658:19;15680:10;:8;:10::i;:::-;15658:32;;15702:15;15719:23;15744:12;15773:46;15785:7;15794:4;15800:5;15807:11;15773;:46::i;:::-;15701:118;;;;;;15848:7;15857:15;15874:4;15880:15;15897:4;15903:5;15840:69;;;;;;;;;;;;;;;;;;;15292:625;;;;;;;:::o;3121:136::-;3179:7;3206:43;3210:1;3213;3206:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;3199:50;;3121:136;;;;:::o;2934:179::-;2992:7;3012:9;3028:1;3024;:5;;;;:::i;:::-;3012:17;;3053:1;3048;:6;;3040:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;3104:1;3097:8;;;2934:179;;;;:::o;14881:211::-;14934:19;14956:10;:8;:10::i;:::-;14934:32;;14977:13;14993:22;15003:11;14993:5;:9;;:22;;;;:::i;:::-;14977:38;;15051:33;15078:5;15051:7;:22;15067:4;15051:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;15026:7;:22;15042:4;15026:22;;;;;;;;;;;;;;;:58;;;;14923:169;;14881:211;:::o;15100:147::-;15178:17;15190:4;15178:7;;:11;;:17;;;;:::i;:::-;15168:7;:27;;;;15219:20;15234:4;15219:10;;:14;;:20;;;;:::i;:::-;15206:10;:33;;;;15100:147;;:::o;15925:471::-;16094:7;16116;16138;16173:12;16188:30;16214:3;16188:21;16200:8;16188:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;16173:45;;16229:13;16245:28;16269:3;16245:19;16257:6;16245:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;16229:44;;16284:23;16310:28;16332:5;16310:17;16322:4;16310:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16284:54;;16359:15;16376:4;16382:5;16351:37;;;;;;;;;15925:471;;;;;;;:::o;16404:536::-;16598:7;16620;16642;16677:15;16695:24;16707:11;16695:7;:11;;:24;;;;:::i;:::-;16677:42;;16730:12;16745:21;16754:11;16745:4;:8;;:21;;;;:::i;:::-;16730:36;;16777:13;16793:22;16803:11;16793:5;:9;;:22;;;;:::i;:::-;16777:38;;16826:23;16852:28;16874:5;16852:17;16864:4;16852:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16826:54;;16901:7;16910:15;16927:4;16893:39;;;;;;;;;;16404:536;;;;;;;;:::o;3497:246::-;3555:7;3584:1;3579;:6;3575:47;;;3609:1;3602:8;;;;3575:47;3632:9;3648:1;3644;:5;;;;:::i;:::-;3632:17;;3677:1;3672;3668;:5;;;;:::i;:::-;:10;3660:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3734:1;3727:8;;;3497: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:139::-;486:5;524:6;511:20;502:29;;540:33;567:5;540:33;:::i;:::-;440:139;;;;:::o;585:329::-;644:6;693:2;681:9;672:7;668:23;664:32;661:119;;;699:79;;:::i;:::-;661:119;819:1;844:53;889:7;880:6;869:9;865:22;844:53;:::i;:::-;834:63;;790:117;585:329;;;;:::o;920:351::-;990:6;1039:2;1027:9;1018:7;1014:23;1010:32;1007:119;;;1045:79;;:::i;:::-;1007:119;1165:1;1190:64;1246:7;1237:6;1226:9;1222:22;1190:64;:::i;:::-;1180:74;;1136:128;920:351;;;;:::o;1277:474::-;1345:6;1353;1402:2;1390:9;1381:7;1377:23;1373:32;1370:119;;;1408:79;;:::i;:::-;1370:119;1528:1;1553:53;1598:7;1589:6;1578:9;1574:22;1553:53;:::i;:::-;1543:63;;1499:117;1655:2;1681:53;1726:7;1717:6;1706:9;1702:22;1681:53;:::i;:::-;1671:63;;1626:118;1277:474;;;;;:::o;1757:619::-;1834:6;1842;1850;1899:2;1887:9;1878:7;1874:23;1870:32;1867:119;;;1905:79;;:::i;:::-;1867:119;2025:1;2050:53;2095:7;2086:6;2075:9;2071:22;2050:53;:::i;:::-;2040:63;;1996:117;2152:2;2178:53;2223:7;2214:6;2203:9;2199:22;2178:53;:::i;:::-;2168:63;;2123:118;2280:2;2306:53;2351:7;2342:6;2331:9;2327:22;2306:53;:::i;:::-;2296:63;;2251:118;1757:619;;;;;:::o;2382:468::-;2447:6;2455;2504:2;2492:9;2483:7;2479:23;2475:32;2472:119;;;2510:79;;:::i;:::-;2472:119;2630:1;2655:53;2700:7;2691:6;2680:9;2676:22;2655:53;:::i;:::-;2645:63;;2601:117;2757:2;2783:50;2825:7;2816:6;2805:9;2801:22;2783:50;:::i;:::-;2773:60;;2728:115;2382:468;;;;;:::o;2856:474::-;2924:6;2932;2981:2;2969:9;2960:7;2956:23;2952:32;2949:119;;;2987:79;;:::i;:::-;2949:119;3107:1;3132:53;3177:7;3168:6;3157:9;3153:22;3132:53;:::i;:::-;3122:63;;3078:117;3234:2;3260:53;3305:7;3296:6;3285:9;3281:22;3260:53;:::i;:::-;3250:63;;3205:118;2856:474;;;;;:::o;3336:323::-;3392:6;3441:2;3429:9;3420:7;3416:23;3412:32;3409:119;;;3447:79;;:::i;:::-;3409:119;3567:1;3592:50;3634:7;3625:6;3614:9;3610:22;3592:50;:::i;:::-;3582:60;;3538:114;3336:323;;;;:::o;3665:329::-;3724:6;3773:2;3761:9;3752:7;3748:23;3744:32;3741:119;;;3779:79;;:::i;:::-;3741:119;3899:1;3924:53;3969:7;3960:6;3949:9;3945:22;3924:53;:::i;:::-;3914:63;;3870:117;3665:329;;;;:::o;4000:179::-;4069:10;4090:46;4132:3;4124:6;4090:46;:::i;:::-;4168:4;4163:3;4159:14;4145:28;;4000:179;;;;:::o;4185:108::-;4262:24;4280:5;4262:24;:::i;:::-;4257:3;4250:37;4185:108;;:::o;4299:118::-;4386:24;4404:5;4386:24;:::i;:::-;4381:3;4374:37;4299:118;;:::o;4453:732::-;4572:3;4601:54;4649:5;4601:54;:::i;:::-;4671:86;4750:6;4745:3;4671:86;:::i;:::-;4664:93;;4781:56;4831:5;4781:56;:::i;:::-;4860:7;4891:1;4876:284;4901:6;4898:1;4895:13;4876:284;;;4977:6;4971:13;5004:63;5063:3;5048:13;5004:63;:::i;:::-;4997:70;;5090:60;5143:6;5090:60;:::i;:::-;5080:70;;4936:224;4923:1;4920;4916:9;4911:14;;4876:284;;;4880:14;5176:3;5169:10;;4577:608;;;4453:732;;;;:::o;5191:109::-;5272:21;5287:5;5272:21;:::i;:::-;5267:3;5260:34;5191:109;;:::o;5306:183::-;5419:63;5476:5;5419:63;:::i;:::-;5414:3;5407:76;5306:183;;:::o;5495:147::-;5590:45;5629:5;5590:45;:::i;:::-;5585:3;5578:58;5495:147;;:::o;5648:364::-;5736:3;5764:39;5797:5;5764:39;:::i;:::-;5819:71;5883:6;5878:3;5819:71;:::i;:::-;5812:78;;5899:52;5944:6;5939:3;5932:4;5925:5;5921:16;5899:52;:::i;:::-;5976:29;5998:6;5976:29;:::i;:::-;5971:3;5967:39;5960:46;;5740:272;5648:364;;;;:::o;6018:366::-;6160:3;6181:67;6245:2;6240:3;6181:67;:::i;:::-;6174:74;;6257:93;6346:3;6257:93;:::i;:::-;6375:2;6370:3;6366:12;6359:19;;6018:366;;;:::o;6390:::-;6532:3;6553:67;6617:2;6612:3;6553:67;:::i;:::-;6546:74;;6629:93;6718:3;6629:93;:::i;:::-;6747:2;6742:3;6738:12;6731:19;;6390:366;;;:::o;6762:::-;6904:3;6925:67;6989:2;6984:3;6925:67;:::i;:::-;6918:74;;7001:93;7090:3;7001:93;:::i;:::-;7119:2;7114:3;7110:12;7103:19;;6762:366;;;:::o;7134:::-;7276:3;7297:67;7361:2;7356:3;7297:67;:::i;:::-;7290:74;;7373:93;7462:3;7373:93;:::i;:::-;7491:2;7486:3;7482:12;7475:19;;7134:366;;;:::o;7506:::-;7648:3;7669:67;7733:2;7728:3;7669:67;:::i;:::-;7662:74;;7745:93;7834:3;7745:93;:::i;:::-;7863:2;7858:3;7854:12;7847:19;;7506:366;;;:::o;7878:::-;8020:3;8041:67;8105:2;8100:3;8041:67;:::i;:::-;8034:74;;8117:93;8206:3;8117:93;:::i;:::-;8235:2;8230:3;8226:12;8219:19;;7878:366;;;:::o;8250:::-;8392:3;8413:67;8477:2;8472:3;8413:67;:::i;:::-;8406:74;;8489:93;8578:3;8489:93;:::i;:::-;8607:2;8602:3;8598:12;8591:19;;8250:366;;;:::o;8622:::-;8764:3;8785:67;8849:2;8844:3;8785:67;:::i;:::-;8778:74;;8861:93;8950:3;8861:93;:::i;:::-;8979:2;8974:3;8970:12;8963:19;;8622:366;;;:::o;8994:::-;9136:3;9157:67;9221:2;9216:3;9157:67;:::i;:::-;9150:74;;9233:93;9322:3;9233:93;:::i;:::-;9351:2;9346:3;9342:12;9335:19;;8994:366;;;:::o;9366:::-;9508:3;9529:67;9593:2;9588:3;9529:67;:::i;:::-;9522:74;;9605:93;9694:3;9605:93;:::i;:::-;9723:2;9718:3;9714:12;9707:19;;9366:366;;;:::o;9738:::-;9880:3;9901:67;9965:2;9960:3;9901:67;:::i;:::-;9894:74;;9977:93;10066:3;9977:93;:::i;:::-;10095:2;10090:3;10086:12;10079:19;;9738:366;;;:::o;10110:::-;10252:3;10273:67;10337:2;10332:3;10273:67;:::i;:::-;10266:74;;10349:93;10438:3;10349:93;:::i;:::-;10467:2;10462:3;10458:12;10451:19;;10110:366;;;:::o;10482:::-;10624:3;10645:67;10709:2;10704:3;10645:67;:::i;:::-;10638:74;;10721:93;10810:3;10721:93;:::i;:::-;10839:2;10834:3;10830:12;10823:19;;10482:366;;;:::o;10854:::-;10996:3;11017:67;11081:2;11076:3;11017:67;:::i;:::-;11010:74;;11093:93;11182:3;11093:93;:::i;:::-;11211:2;11206:3;11202:12;11195:19;;10854:366;;;:::o;11226:118::-;11313:24;11331:5;11313:24;:::i;:::-;11308:3;11301:37;11226:118;;:::o;11350:112::-;11433:22;11449:5;11433:22;:::i;:::-;11428:3;11421:35;11350:112;;:::o;11468:222::-;11561:4;11599:2;11588:9;11584:18;11576:26;;11612:71;11680:1;11669:9;11665:17;11656:6;11612:71;:::i;:::-;11468:222;;;;:::o;11696:210::-;11783:4;11821:2;11810:9;11806:18;11798:26;;11834:65;11896:1;11885:9;11881:17;11872:6;11834:65;:::i;:::-;11696:210;;;;:::o;11912:274::-;12031:4;12069:2;12058:9;12054:18;12046:26;;12082:97;12176:1;12165:9;12161:17;12152:6;12082:97;:::i;:::-;11912:274;;;;:::o;12192:313::-;12305:4;12343:2;12332:9;12328:18;12320:26;;12392:9;12386:4;12382:20;12378:1;12367:9;12363:17;12356:47;12420:78;12493:4;12484:6;12420:78;:::i;:::-;12412:86;;12192:313;;;;:::o;12511:419::-;12677:4;12715:2;12704:9;12700:18;12692:26;;12764:9;12758:4;12754:20;12750:1;12739:9;12735:17;12728:47;12792:131;12918:4;12792:131;:::i;:::-;12784:139;;12511:419;;;:::o;12936:::-;13102:4;13140:2;13129:9;13125:18;13117:26;;13189:9;13183:4;13179:20;13175:1;13164:9;13160:17;13153:47;13217:131;13343:4;13217:131;:::i;:::-;13209:139;;12936:419;;;:::o;13361:::-;13527:4;13565:2;13554:9;13550:18;13542:26;;13614:9;13608:4;13604:20;13600:1;13589:9;13585:17;13578:47;13642:131;13768:4;13642:131;:::i;:::-;13634:139;;13361:419;;;:::o;13786:::-;13952:4;13990:2;13979:9;13975:18;13967:26;;14039:9;14033:4;14029:20;14025:1;14014:9;14010:17;14003:47;14067:131;14193:4;14067:131;:::i;:::-;14059:139;;13786:419;;;:::o;14211:::-;14377:4;14415:2;14404:9;14400:18;14392:26;;14464:9;14458:4;14454:20;14450:1;14439:9;14435:17;14428:47;14492:131;14618:4;14492:131;:::i;:::-;14484:139;;14211:419;;;:::o;14636:::-;14802:4;14840:2;14829:9;14825:18;14817:26;;14889:9;14883:4;14879:20;14875:1;14864:9;14860:17;14853:47;14917:131;15043:4;14917:131;:::i;:::-;14909:139;;14636:419;;;:::o;15061:::-;15227:4;15265:2;15254:9;15250:18;15242:26;;15314:9;15308:4;15304:20;15300:1;15289:9;15285:17;15278:47;15342:131;15468:4;15342:131;:::i;:::-;15334:139;;15061:419;;;:::o;15486:::-;15652:4;15690:2;15679:9;15675:18;15667:26;;15739:9;15733:4;15729:20;15725:1;15714:9;15710:17;15703:47;15767:131;15893:4;15767:131;:::i;:::-;15759:139;;15486:419;;;:::o;15911:::-;16077:4;16115:2;16104:9;16100:18;16092:26;;16164:9;16158:4;16154:20;16150:1;16139:9;16135:17;16128:47;16192:131;16318:4;16192:131;:::i;:::-;16184:139;;15911:419;;;:::o;16336:::-;16502:4;16540:2;16529:9;16525:18;16517:26;;16589:9;16583:4;16579:20;16575:1;16564:9;16560:17;16553:47;16617:131;16743:4;16617:131;:::i;:::-;16609:139;;16336:419;;;:::o;16761:::-;16927:4;16965:2;16954:9;16950:18;16942:26;;17014:9;17008:4;17004:20;17000:1;16989:9;16985:17;16978:47;17042:131;17168:4;17042:131;:::i;:::-;17034:139;;16761:419;;;:::o;17186:::-;17352:4;17390:2;17379:9;17375:18;17367:26;;17439:9;17433:4;17429:20;17425:1;17414:9;17410:17;17403:47;17467:131;17593:4;17467:131;:::i;:::-;17459:139;;17186:419;;;:::o;17611:::-;17777:4;17815:2;17804:9;17800:18;17792:26;;17864:9;17858:4;17854:20;17850:1;17839:9;17835:17;17828:47;17892:131;18018:4;17892:131;:::i;:::-;17884:139;;17611:419;;;:::o;18036:::-;18202:4;18240:2;18229:9;18225:18;18217:26;;18289:9;18283:4;18279:20;18275:1;18264:9;18260:17;18253:47;18317:131;18443:4;18317:131;:::i;:::-;18309:139;;18036:419;;;:::o;18461:222::-;18554:4;18592:2;18581:9;18577:18;18569:26;;18605:71;18673:1;18662:9;18658:17;18649:6;18605:71;:::i;:::-;18461:222;;;;:::o;18689:831::-;18952:4;18990:3;18979:9;18975:19;18967:27;;19004:71;19072:1;19061:9;19057:17;19048:6;19004:71;:::i;:::-;19085:80;19161:2;19150:9;19146:18;19137:6;19085:80;:::i;:::-;19212:9;19206:4;19202:20;19197:2;19186:9;19182:18;19175:48;19240:108;19343:4;19334:6;19240:108;:::i;:::-;19232:116;;19358:72;19426:2;19415:9;19411:18;19402:6;19358:72;:::i;:::-;19440:73;19508:3;19497:9;19493:19;19484:6;19440:73;:::i;:::-;18689:831;;;;;;;;:::o;19526:214::-;19615:4;19653:2;19642:9;19638:18;19630:26;;19666:67;19730:1;19719:9;19715:17;19706:6;19666:67;:::i;:::-;19526:214;;;;:::o;19827:132::-;19894:4;19917:3;19909:11;;19947:4;19942:3;19938:14;19930:22;;19827:132;;;:::o;19965:114::-;20032:6;20066:5;20060:12;20050:22;;19965:114;;;:::o;20085:99::-;20137:6;20171:5;20165:12;20155:22;;20085:99;;;:::o;20190:113::-;20260:4;20292;20287:3;20283:14;20275:22;;20190:113;;;:::o;20309:184::-;20408:11;20442:6;20437:3;20430:19;20482:4;20477:3;20473:14;20458:29;;20309:184;;;;:::o;20499:169::-;20583:11;20617:6;20612:3;20605:19;20657:4;20652:3;20648:14;20633:29;;20499:169;;;;:::o;20674:305::-;20714:3;20733:20;20751:1;20733:20;:::i;:::-;20728:25;;20767:20;20785:1;20767:20;:::i;:::-;20762:25;;20921:1;20853:66;20849:74;20846:1;20843:81;20840:107;;;20927:18;;:::i;:::-;20840:107;20971:1;20968;20964:9;20957:16;;20674:305;;;;:::o;20985:185::-;21025:1;21042:20;21060:1;21042:20;:::i;:::-;21037:25;;21076:20;21094:1;21076:20;:::i;:::-;21071:25;;21115:1;21105:35;;21120:18;;:::i;:::-;21105:35;21162:1;21159;21155:9;21150:14;;20985:185;;;;:::o;21176:348::-;21216:7;21239:20;21257:1;21239:20;:::i;:::-;21234:25;;21273:20;21291:1;21273:20;:::i;:::-;21268:25;;21461:1;21393:66;21389:74;21386:1;21383:81;21378:1;21371:9;21364:17;21360:105;21357:131;;;21468:18;;:::i;:::-;21357:131;21516:1;21513;21509:9;21498:20;;21176:348;;;;:::o;21530:191::-;21570:4;21590:20;21608:1;21590:20;:::i;:::-;21585:25;;21624:20;21642:1;21624:20;:::i;:::-;21619:25;;21663:1;21660;21657:8;21654:34;;;21668:18;;:::i;:::-;21654:34;21713:1;21710;21706:9;21698:17;;21530:191;;;;:::o;21727:96::-;21764:7;21793:24;21811:5;21793:24;:::i;:::-;21782:35;;21727:96;;;:::o;21829:90::-;21863:7;21906:5;21899:13;21892:21;21881:32;;21829:90;;;:::o;21925:126::-;21962:7;22002:42;21995:5;21991:54;21980:65;;21925:126;;;:::o;22057:77::-;22094:7;22123:5;22112:16;;22057:77;;;:::o;22140:86::-;22175:7;22215:4;22208:5;22204:16;22193:27;;22140:86;;;:::o;22232:152::-;22308:9;22341:37;22372:5;22341:37;:::i;:::-;22328:50;;22232:152;;;:::o;22390:121::-;22448:9;22481:24;22499:5;22481:24;:::i;:::-;22468:37;;22390:121;;;:::o;22517:126::-;22567:9;22600:37;22631:5;22600:37;:::i;:::-;22587:50;;22517:126;;;:::o;22649:113::-;22699:9;22732:24;22750:5;22732:24;:::i;:::-;22719:37;;22649:113;;;:::o;22768:307::-;22836:1;22846:113;22860:6;22857:1;22854:13;22846:113;;;22945:1;22940:3;22936:11;22930:18;22926:1;22921:3;22917:11;22910:39;22882:2;22879:1;22875:10;22870:15;;22846:113;;;22977:6;22974:1;22971:13;22968:101;;;23057:1;23048:6;23043:3;23039:16;23032:27;22968:101;22817:258;22768:307;;;:::o;23081:180::-;23129:77;23126:1;23119:88;23226:4;23223:1;23216:15;23250:4;23247:1;23240:15;23267:180;23315:77;23312:1;23305:88;23412:4;23409:1;23402:15;23436:4;23433:1;23426:15;23453:180;23501:77;23498:1;23491:88;23598:4;23595:1;23588:15;23622:4;23619:1;23612:15;23639:180;23687:77;23684:1;23677:88;23784:4;23781:1;23774:15;23808:4;23805:1;23798:15;23948:117;24057:1;24054;24047:12;24071:102;24112:6;24163:2;24159:7;24154:2;24147:5;24143:14;24139:28;24129:38;;24071:102;;;:::o;24179:222::-;24319:34;24315:1;24307:6;24303:14;24296:58;24388:5;24383:2;24375:6;24371:15;24364:30;24179:222;:::o;24407:250::-;24547:34;24543:1;24535:6;24531:14;24524:58;24616:33;24611:2;24603:6;24599:15;24592:58;24407:250;:::o;24663:229::-;24803:34;24799:1;24791:6;24787:14;24780:58;24872:12;24867:2;24859:6;24855:15;24848:37;24663:229;:::o;24898:178::-;25038:30;25034:1;25026:6;25022:14;25015:54;24898:178;:::o;25082:221::-;25222:34;25218:1;25210:6;25206:14;25199:58;25291:4;25286:2;25278:6;25274:15;25267:29;25082:221;:::o;25309:222::-;25449:34;25445:1;25437:6;25433:14;25426:58;25518:5;25513:2;25505:6;25501:15;25494:30;25309:222;:::o;25537:177::-;25677:29;25673:1;25665:6;25661:14;25654:53;25537:177;:::o;25720:173::-;25860:25;25856:1;25848:6;25844:14;25837:49;25720:173;:::o;25899:220::-;26039:34;26035:1;26027:6;26023:14;26016:58;26108:3;26103:2;26095:6;26091:15;26084:28;25899:220;:::o;26125:182::-;26265:34;26261:1;26253:6;26249:14;26242:58;26125:182;:::o;26313:228::-;26453:34;26449:1;26441:6;26437:14;26430:58;26522:11;26517:2;26509:6;26505:15;26498:36;26313:228;:::o;26547:224::-;26687:34;26683:1;26675:6;26671:14;26664:58;26756:7;26751:2;26743:6;26739:15;26732:32;26547:224;:::o;26777:222::-;26917:34;26913:1;26905:6;26901:14;26894:58;26986:5;26981:2;26973:6;26969:15;26962:30;26777:222;:::o;27005:223::-;27145:34;27141:1;27133:6;27129:14;27122:58;27214:6;27209:2;27201:6;27197:15;27190:31;27005:223;:::o;27234:122::-;27307:24;27325:5;27307:24;:::i;:::-;27300:5;27297:35;27287:63;;27346:1;27343;27336:12;27287:63;27234:122;:::o;27362:116::-;27432:21;27447:5;27432:21;:::i;:::-;27425:5;27422:32;27412:60;;27468:1;27465;27458:12;27412:60;27362:116;:::o;27484:122::-;27557:24;27575:5;27557:24;:::i;:::-;27550:5;27547:35;27537:63;;27596:1;27593;27586:12;27537:63;27484:122;:::o

Swarm Source

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