ETH Price: $2,486.12 (-0.97%)

Token

Wall Street Apes (WSA)
 

Overview

Max Total Supply

100,000,000 WSA

Holders

515

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.000000001 WSA

Value
$0.00
0x24abc394c7353fbf12a897f0c387f933fb87bc5f
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:
WallStreetApes

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-17
*/

// Telegram: https://t.me/Wallstreetapesportal

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

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


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

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

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

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() {
        _setOwner(_msgSender());
    }

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

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

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

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

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

    function WETH() external pure returns (address);
    function factory() 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
        );


    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
}

library Address{
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

contract WallStreetApes is IERC20, Ownable {
    using SafeMath for uint256;

    using Address for address payable;

    string private constant _name = "Wall Street Apes";
    string private constant _symbol = "WSA";
    uint8 private constant _decimals = 9;

    uint256 private _totalSupply = 100_000_000 * 10**_decimals;
    uint256 private  _maxWallet = 800_000 * 10**_decimals;
    uint256 private _maxBuyAmount = 20_000_000 * 10**_decimals;
    uint256 private  _maxSellAmount = 20_000_000 * 10**_decimals;
    uint256 private  _swapTH = 100_000 * 10**_decimals;

    address public Dev = 0x6A6BD468bf36fe8320ABAC31AB398E0396599476;
    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) private _isWhiteList;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    address private _owner;

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

    bool public _AutoSwap = true;
    bool public _Launch = false;
    bool public _transfersEnabled = false;
    bool private _TokenSwap = true;
    bool private _autoLP = true;
    bool private _isSelling = false;
    
    uint256 private _swapPercent = 100;

    uint256 private _devTaxRate = 0; // buy tax rate
    uint256 private AmountBuyRate = _devTaxRate;


    uint256 private _devTaxSellRate = 0; // sell tax rate
    uint256 private AmountSellRate = _devTaxSellRate;

    constructor() {
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

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

        _owner = msg.sender;

        uint256 tsupply = _totalSupply;

        _balances[msg.sender] = tsupply;


        _isExcludedFromFee[_owner] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[Dev] = true;
        
        emit Transfer(address(0), msg.sender, _balances[msg.sender]);
    }

    function getOwner() public view returns (address) {
        return owner();
    }
    
    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 view override returns (uint256) {
        return _totalSupply;
    }


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

    function isExcludedFromFee(address account) public view returns (bool) {
        return _isExcludedFromFee[account];
    }

    function isWhitelist(address account) public view returns (bool) {
        return _isWhiteList[account];
    }

    function ViewBuyRate() public view returns (
        uint256 devBuyRate,
        uint256 totalBuyRate,
        uint256 maxWallet,
        uint256 maxBuyAmount
    ) {
        devBuyRate = _devTaxRate;
        totalBuyRate = AmountBuyRate;
        maxWallet = _maxWallet;
        maxBuyAmount = _maxBuyAmount;
    }

    function ViewSellRate() public view returns (
        uint256 devSellRate,
        uint256 totalSellRate,
        uint256 maxSellAmount
    ) {
        devSellRate = _devTaxSellRate;
        totalSellRate = AmountSellRate;
        maxSellAmount = _maxSellAmount;
    }


    function transfer(address recipient, uint256 amount) public override returns (bool) {

        if(recipient != uniswapV2Pair && recipient != owner() && !_isExcludedFromFee[recipient]){

            require(_balances[recipient] + amount <= _maxWallet, "WSA Token: recipient wallet balance exceeds the maximum limit");

        }

        _transfer(msg.sender, 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(msg.sender, spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _approve(sender, msg.sender, _allowances[sender][msg.sender] - amount);
        _transfer(sender, recipient, amount);
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "WSA Token: approve from the zero address");
        require(spender != address(0), "WSA Token: approve to the zero address");

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

    function _transfer(address sender, address recipient, uint256 amount) private {

        require(sender != address(0), "WSA Token: transfer from zero address");
        require(recipient != address(0), "WSA Token: transfer to zero address");
        require(amount > 0, "WSA Token: transfer amount must be greater than zero");
        if(!_Launch){require(_isExcludedFromFee[sender] || _isExcludedFromFee[recipient] || _isWhiteList[sender] || _isWhiteList[recipient], "we not launch yet");}
        if(!_Launch && recipient != uniswapV2Pair && sender != uniswapV2Pair) {require(_transfersEnabled, "Transfers are currently disabled");}

        bool _AutoTaxes = true;


        if (recipient == uniswapV2Pair && sender == owner()) {

            _balances[sender] -= amount;
            _balances[recipient] += amount;
            emit Transfer(sender, recipient, amount);
            return;
        }

        //sell   
        if(recipient == uniswapV2Pair && !_isExcludedFromFee[sender] && sender != owner()){

                require(amount <= _maxSellAmount, "Sell amount exceeds the max limit");

                _isSelling = true;
               
                if(_AutoSwap && balanceOf(address(this)) >= _swapTH){

                    CanSwap();
                }  
        }

        //buy
        if(sender == uniswapV2Pair && !_isExcludedFromFee[recipient] && recipient != owner()){
                    
            require(amount <= _maxBuyAmount, "Buy amount exceeds the max limit");
            
        }

        if (_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]) { _AutoTaxes = false; }
        if (recipient != uniswapV2Pair && sender != uniswapV2Pair) { _AutoTaxes = false; }

        if (_AutoTaxes) {

                if(!_isSelling){

                    uint256 totalTaxAmount = amount * AmountBuyRate / 100;
                    uint256 transferAmount = amount - totalTaxAmount;
                    
                   
                    _balances[address(this)] = _balances[address(this)].add(totalTaxAmount);
                    _balances[sender] = _balances[sender].sub(amount);
                    _balances[recipient] = _balances[recipient].add(transferAmount);

                    emit Transfer(sender, recipient, transferAmount);
                    emit Transfer(sender, address(this), totalTaxAmount);

                }else{

                    uint256 totalTaxAmount = amount * AmountSellRate / 100;
                    uint256 transferAmount = amount - totalTaxAmount;
                    

                    _balances[address(this)] = _balances[address(this)].add(totalTaxAmount);
                    _balances[sender] = _balances[sender].sub(amount);
                    _balances[recipient] = _balances[recipient].add(transferAmount);

                    emit Transfer(sender, recipient, transferAmount);
                    emit Transfer(sender, address(this), totalTaxAmount);

                    _isSelling = false;
                }
            
        }else{

                _balances[sender] = _balances[sender].sub(amount);
                _balances[recipient] = _balances[recipient].add(amount);

                emit Transfer(sender, recipient, amount);

        }
    }


    function swapTokensForEth(uint256 tokenAmount) private {

        // Contract address setup and the token to be swapped
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        // Approve the transfer of tokens to the contract address
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // The swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }


    function CanSwap() private {

        uint256 contractTokenBalance = balanceOf(address(this));

        if(contractTokenBalance > 0) {

            if(_TokenSwap){

                if(contractTokenBalance > 0){
                    
                    uint256 caBalance = balanceOf(address(this)) * _swapPercent / 100;

                    uint256 toSwap = caBalance;

                    swapTokensForEth(toSwap);

                    uint256 receivedBalance = address(this).balance;

                    if (receivedBalance > 0) {payable(Dev).transfer(receivedBalance);}

                }else{

                    revert("No tokens available to swap");
                }

            }

        }else{

           revert("No Balance available to swap");     
           
        }
            
    }

   receive() external payable {}

    function setDevAddress(address newAddress) public onlyOwner {
        require(newAddress != address(0), "Invalid address");
        Dev = newAddress;
        _isExcludedFromFee[newAddress] = true;
    }


   function enableLaunch() external {
        _Launch = true;
        _transfersEnabled = true;
    }

    function setWhitelist(address account, bool status) external onlyOwner {
        _isWhiteList[account] = status;
    }

    function SwapEnable(bool status) external onlyOwner {
        _AutoSwap = status;
    }

    function SetSwapPercentage(uint256 SwapPercent) external onlyOwner {
        _swapPercent = SwapPercent;
    }

    function setAutoSwap(uint256 newAutoSwap) external onlyOwner {
        require(newAutoSwap <= (totalSupply() * 1) / 100, "Invalid value: exceeds 1% of total supply");
        _swapTH = newAutoSwap * 10**_decimals;
    }

    function updateLimits(uint256 maxWallet, uint256 maxBuyAmount, uint256 maxSellAmount) external onlyOwner {
        _maxWallet = maxWallet * 10**_decimals;
        _maxBuyAmount = maxBuyAmount * 10**_decimals;
        _maxSellAmount = maxSellAmount * 10**_decimals;
    }

    function setBuyTaxRates(uint256 devTaxRate) external onlyOwner {
        _devTaxRate = devTaxRate;
        AmountBuyRate = _devTaxRate;
    }


    function setSellTaxRates(uint256 devTaxRate) external onlyOwner {
        _devTaxSellRate = devTaxRate;
        AmountSellRate = _devTaxSellRate;
    }

}

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":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":"Dev","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"SwapPercent","type":"uint256"}],"name":"SetSwapPercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"SwapEnable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ViewBuyRate","outputs":[{"internalType":"uint256","name":"devBuyRate","type":"uint256"},{"internalType":"uint256","name":"totalBuyRate","type":"uint256"},{"internalType":"uint256","name":"maxWallet","type":"uint256"},{"internalType":"uint256","name":"maxBuyAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ViewSellRate","outputs":[{"internalType":"uint256","name":"devSellRate","type":"uint256"},{"internalType":"uint256","name":"totalSellRate","type":"uint256"},{"internalType":"uint256","name":"maxSellAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_AutoSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_Launch","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_transfersEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableLaunch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isWhitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAutoSwap","type":"uint256"}],"name":"setAutoSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"devTaxRate","type":"uint256"}],"name":"setBuyTaxRates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setDevAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"devTaxRate","type":"uint256"}],"name":"setSellTaxRates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallet","type":"uint256"},{"internalType":"uint256","name":"maxBuyAmount","type":"uint256"},{"internalType":"uint256","name":"maxSellAmount","type":"uint256"}],"name":"updateLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526009600a62000014919062000882565b6305f5e100620000259190620009bf565b6001556009600a62000038919062000882565b620c3500620000489190620009bf565b6002556009600a6200005b919062000882565b6301312d006200006c9190620009bf565b6003556009600a6200007f919062000882565b6301312d00620000909190620009bf565b6004556009600a620000a3919062000882565b620186a0620000b39190620009bf565b600555736a6bd468bf36fe8320abac31ab398e0396599476600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600e60006101000a81548160ff0219169083151502179055506000600e60016101000a81548160ff0219169083151502179055506000600e60026101000a81548160ff0219169083151502179055506001600e60036101000a81548160ff0219169083151502179055506001600e60046101000a81548160ff0219169083151502179055506000600e60056101000a81548160ff0219169083151502179055506064600f5560006010556010546011556000601255601254601355348015620001d557600080fd5b50620001f6620001ea620006ac60201b60201c565b620006b460201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200029757600080fd5b505afa158015620002ac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d291906200078f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200033557600080fd5b505afa1580156200034a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200037091906200078f565b6040518363ffffffff1660e01b81526004016200038f929190620007dd565b602060405180830381600087803b158015620003aa57600080fd5b505af1158015620003bf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e591906200078f565b600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600154905080600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160076000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040516200069c91906200080a565b60405180910390a3505062000ac1565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050620007898162000aa7565b92915050565b600060208284031215620007a257600080fd5b6000620007b28482850162000778565b91505092915050565b620007c68162000a20565b82525050565b620007d78162000a54565b82525050565b6000604082019050620007f46000830185620007bb565b620008036020830184620007bb565b9392505050565b6000602082019050620008216000830184620007cc565b92915050565b6000808291508390505b6001851115620008795780860481111562000851576200085062000a6b565b5b6001851615620008615780820291505b8081029050620008718562000a9a565b945062000831565b94509492505050565b60006200088f8262000a54565b91506200089c8362000a5e565b9250620008cb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620008d3565b905092915050565b600082620008e55760019050620009b8565b81620008f55760009050620009b8565b81600181146200090e576002811462000919576200094f565b6001915050620009b8565b60ff8411156200092e576200092d62000a6b565b5b8360020a91508482111562000948576200094762000a6b565b5b50620009b8565b5060208310610133831016604e8410600b8410161715620009895782820a90508381111562000983576200098262000a6b565b5b620009b8565b62000998848484600162000827565b92509050818404811115620009b257620009b162000a6b565b5b81810290505b9392505050565b6000620009cc8262000a54565b9150620009d98362000a54565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000a155762000a1462000a6b565b5b828202905092915050565b600062000a2d8262000a34565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b62000ab28162000a20565b811462000abe57600080fd5b50565b613f228062000ad16000396000f3fe6080604052600436106101e75760003560e01c80638da5cb5b11610102578063d8a0663c11610095578063f7de4dfd11610064578063f7de4dfd14610703578063fcd2e0491461072e578063feae65e714610757578063ff5211bb14610785576101ee565b8063d8a0663c1461064b578063dd62ed3e14610674578063f2fde38b146106b1578063f515a55c146106da576101ee565b8063a9059cbb116100d1578063a9059cbb1461057b578063c683630d146105b8578063c6da3051146105f5578063d0d41fe114610622576101ee565b80638da5cb5b146104d157806392554287146104fc57806395d89b4114610527578063a14aee6114610552576101ee565b806336a0f8a51161017a57806370a082311161014957806370a0823114610427578063715018a61461046457806385438bc01461047b578063893d20e8146104a6576101ee565b806336a0f8a51461036d57806349bd5a5e146103965780635342acb4146103c157806353d6fd59146103fe576101ee565b80631694505e116101b65780631694505e146102af57806318160ddd146102da57806323b872dd14610305578063313ce56714610342576101ee565b806301e51ae8146101f357806306fdde031461021e578063095ea7b3146102495780630a80c0cc14610286576101ee565b366101ee57005b600080fd5b3480156101ff57600080fd5b5061020861079c565b60405161021591906136f3565b60405180910390f35b34801561022a57600080fd5b506102336107c2565b6040516102409190613744565b60405180910390f35b34801561025557600080fd5b50610270600480360381019061026b9190612f68565b6107ff565b60405161027d919061370e565b60405180910390f35b34801561029257600080fd5b506102ad60048036038101906102a89190612fcd565b610816565b005b3480156102bb57600080fd5b506102c46108a5565b6040516102d19190613729565b60405180910390f35b3480156102e657600080fd5b506102ef6108cb565b6040516102fc9190613986565b60405180910390f35b34801561031157600080fd5b5061032c60048036038101906103279190612edd565b6108d5565b604051610339919061370e565b60405180910390f35b34801561034e57600080fd5b5061035761097f565b6040516103649190613a77565b60405180910390f35b34801561037957600080fd5b50610394600480360381019061038f9190612ff6565b610988565b005b3480156103a257600080fd5b506103ab610a66565b6040516103b891906136f3565b60405180910390f35b3480156103cd57600080fd5b506103e860048036038101906103e39190612e4f565b610a8c565b6040516103f5919061370e565b60405180910390f35b34801561040a57600080fd5b5061042560048036038101906104209190612f2c565b610ae2565b005b34801561043357600080fd5b5061044e60048036038101906104499190612e4f565b610bb9565b60405161045b9190613986565b60405180910390f35b34801561047057600080fd5b50610479610c02565b005b34801561048757600080fd5b50610490610c8a565b60405161049d919061370e565b60405180910390f35b3480156104b257600080fd5b506104bb610c9d565b6040516104c891906136f3565b60405180910390f35b3480156104dd57600080fd5b506104e6610cac565b6040516104f391906136f3565b60405180910390f35b34801561050857600080fd5b50610511610cd5565b60405161051e919061370e565b60405180910390f35b34801561053357600080fd5b5061053c610ce8565b6040516105499190613744565b60405180910390f35b34801561055e57600080fd5b5061057960048036038101906105749190612fa4565b610d25565b005b34801561058757600080fd5b506105a2600480360381019061059d9190612f68565b610dbe565b6040516105af919061370e565b60405180910390f35b3480156105c457600080fd5b506105df60048036038101906105da9190612e4f565b610f51565b6040516105ec919061370e565b60405180910390f35b34801561060157600080fd5b5061060a610fa7565b604051610619939291906139fb565b60405180910390f35b34801561062e57600080fd5b5061064960048036038101906106449190612e4f565b610fc0565b005b34801561065757600080fd5b50610672600480360381019061066d9190612fcd565b611148565b005b34801561068057600080fd5b5061069b60048036038101906106969190612ea1565b611248565b6040516106a89190613986565b60405180910390f35b3480156106bd57600080fd5b506106d860048036038101906106d39190612e4f565b6112cf565b005b3480156106e657600080fd5b5061070160048036038101906106fc9190612fcd565b6113c7565b005b34801561070f57600080fd5b5061071861144d565b604051610725919061370e565b60405180910390f35b34801561073a57600080fd5b5061075560048036038101906107509190612fcd565b611460565b005b34801561076357600080fd5b5061076c6114ef565b60405161077c9493929190613a32565b60405180910390f35b34801561079157600080fd5b5061079a61150f565b005b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280601081526020017f57616c6c20537472656574204170657300000000000000000000000000000000815250905090565b600061080c338484611547565b6001905092915050565b61081e611712565b73ffffffffffffffffffffffffffffffffffffffff1661083c610cac565b73ffffffffffffffffffffffffffffffffffffffff1614610892576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610889906138e6565b60405180910390fd5b8060128190555060125460138190555050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600154905090565b6000610969843384600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109649190613d39565b611547565b61097484848461171a565b600190509392505050565b60006009905090565b610990611712565b73ffffffffffffffffffffffffffffffffffffffff166109ae610cac565b73ffffffffffffffffffffffffffffffffffffffff1614610a04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fb906138e6565b60405180910390fd5b6009600a610a129190613bc1565b83610a1d9190613cdf565b6002819055506009600a610a319190613bc1565b82610a3c9190613cdf565b6003819055506009600a610a509190613bc1565b81610a5b9190613cdf565b600481905550505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610aea611712565b73ffffffffffffffffffffffffffffffffffffffff16610b08610cac565b73ffffffffffffffffffffffffffffffffffffffff1614610b5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b55906138e6565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610c0a611712565b73ffffffffffffffffffffffffffffffffffffffff16610c28610cac565b73ffffffffffffffffffffffffffffffffffffffff1614610c7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c75906138e6565b60405180910390fd5b610c886000612800565b565b600e60029054906101000a900460ff1681565b6000610ca7610cac565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e60009054906101000a900460ff1681565b60606040518060400160405280600381526020017f5753410000000000000000000000000000000000000000000000000000000000815250905090565b610d2d611712565b73ffffffffffffffffffffffffffffffffffffffff16610d4b610cac565b73ffffffffffffffffffffffffffffffffffffffff1614610da1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d98906138e6565b60405180910390fd5b80600e60006101000a81548160ff02191690831515021790555050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610e515750610e21610cac565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015610ea75750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15610f3c5760025482600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610efa9190613ae7565b1115610f3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f32906138a6565b60405180910390fd5b5b610f4733848461171a565b6001905092915050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000806000601254925060135491506004549050909192565b610fc8611712565b73ffffffffffffffffffffffffffffffffffffffff16610fe6610cac565b73ffffffffffffffffffffffffffffffffffffffff161461103c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611033906138e6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156110ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a3906137c6565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611150611712565b73ffffffffffffffffffffffffffffffffffffffff1661116e610cac565b73ffffffffffffffffffffffffffffffffffffffff16146111c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bb906138e6565b60405180910390fd5b606460016111d06108cb565b6111da9190613cdf565b6111e49190613b3d565b811115611226576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121d906138c6565b60405180910390fd5b6009600a6112349190613bc1565b8161123f9190613cdf565b60058190555050565b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6112d7611712565b73ffffffffffffffffffffffffffffffffffffffff166112f5610cac565b73ffffffffffffffffffffffffffffffffffffffff161461134b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611342906138e6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156113bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b2906137e6565b60405180910390fd5b6113c481612800565b50565b6113cf611712565b73ffffffffffffffffffffffffffffffffffffffff166113ed610cac565b73ffffffffffffffffffffffffffffffffffffffff1614611443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143a906138e6565b60405180910390fd5b80600f8190555050565b600e60019054906101000a900460ff1681565b611468611712565b73ffffffffffffffffffffffffffffffffffffffff16611486610cac565b73ffffffffffffffffffffffffffffffffffffffff16146114dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d3906138e6565b60405180910390fd5b8060108190555060105460118190555050565b600080600080601054935060115492506002549150600354905090919293565b6001600e60016101000a81548160ff0219169083151502179055506001600e60026101000a81548160ff021916908315150217905550565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156115b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ae90613786565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611627576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161e90613906565b60405180910390fd5b80600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117059190613986565b60405180910390a3505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561178a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178190613806565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156117fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f190613886565b60405180910390fd5b6000811161183d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183490613846565b60405180910390fd5b600e60019054906101000a900460ff166119da57600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806118f25750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806119465750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061199a5750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6119d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d090613946565b60405180910390fd5b5b600e60019054906101000a900460ff16158015611a455750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611a9f5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611af457600e60029054906101000a900460ff16611af3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aea90613926565b60405180910390fd5b5b600060019050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611b895750611b5a610cac565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b15611ca55781600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611bdd9190613d39565b9250508190555081600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c339190613ae7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611c979190613986565b60405180910390a3506127fb565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611d4c5750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d8b5750611d5b610cac565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611e2557600454821115611dd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dcc90613766565b60405180910390fd5b6001600e60056101000a81548160ff021916908315150217905550600e60009054906101000a900460ff168015611e165750600554611e1330610bb9565b10155b15611e2457611e236128c4565b5b5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611ecc5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611f0b5750611edb610cac565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f5657600354821115611f55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4c906137a6565b60405180910390fd5b5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611ff75750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561200157600090505b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156120ad5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156120b757600090505b801561266957600e60059054906101000a900460ff1661238f5760006064601154846120e39190613cdf565b6120ed9190613b3d565b9050600081846120fd9190613d39565b905061215182600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a2b90919063ffffffff16565b600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506121e684600c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a8990919063ffffffff16565b600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061227b81600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a2b90919063ffffffff16565b600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161231b9190613986565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516123809190613986565b60405180910390a35050612664565b60006064601354846123a19190613cdf565b6123ab9190613b3d565b9050600081846123bb9190613d39565b905061240f82600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a2b90919063ffffffff16565b600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506124a484600c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a8990919063ffffffff16565b600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061253981600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a2b90919063ffffffff16565b600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125d99190613986565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161263e9190613986565b60405180910390a36000600e60056101000a81548160ff02191690831515021790555050505b6127f9565b6126bb82600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a8990919063ffffffff16565b600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061275082600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a2b90919063ffffffff16565b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516127f09190613986565b60405180910390a35b505b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006128cf30610bb9565b905060008111156129ed57600e60039054906101000a900460ff16156129e85760008111156129ac5760006064600f5461290830610bb9565b6129129190613cdf565b61291c9190613b3d565b9050600081905061292c81612ad3565b600047905060008111156129a457600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156129a2573d6000803e3d6000fd5b505b5050506129e7565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129de90613966565b60405180910390fd5b5b612a28565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1f90613866565b60405180910390fd5b50565b6000808284612a3a9190613ae7565b905083811015612a7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a7690613826565b60405180910390fd5b8091505092915050565b6000612acb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612d97565b905092915050565b6000600267ffffffffffffffff811115612b16577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015612b445781602001602082028036833780820191505090505b5090503081600081518110612b82577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612c2457600080fd5b505afa158015612c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c5c9190612e78565b81600181518110612c96577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612cfd30600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611547565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612d619594939291906139a1565b600060405180830381600087803b158015612d7b57600080fd5b505af1158015612d8f573d6000803e3d6000fd5b505050505050565b6000838311158290612ddf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dd69190613744565b60405180910390fd5b5060008385612dee9190613d39565b9050809150509392505050565b600081359050612e0a81613ea7565b92915050565b600081519050612e1f81613ea7565b92915050565b600081359050612e3481613ebe565b92915050565b600081359050612e4981613ed5565b92915050565b600060208284031215612e6157600080fd5b6000612e6f84828501612dfb565b91505092915050565b600060208284031215612e8a57600080fd5b6000612e9884828501612e10565b91505092915050565b60008060408385031215612eb457600080fd5b6000612ec285828601612dfb565b9250506020612ed385828601612dfb565b9150509250929050565b600080600060608486031215612ef257600080fd5b6000612f0086828701612dfb565b9350506020612f1186828701612dfb565b9250506040612f2286828701612e3a565b9150509250925092565b60008060408385031215612f3f57600080fd5b6000612f4d85828601612dfb565b9250506020612f5e85828601612e25565b9150509250929050565b60008060408385031215612f7b57600080fd5b6000612f8985828601612dfb565b9250506020612f9a85828601612e3a565b9150509250929050565b600060208284031215612fb657600080fd5b6000612fc484828501612e25565b91505092915050565b600060208284031215612fdf57600080fd5b6000612fed84828501612e3a565b91505092915050565b60008060006060848603121561300b57600080fd5b600061301986828701612e3a565b935050602061302a86828701612e3a565b925050604061303b86828701612e3a565b9150509250925092565b6000613051838361305d565b60208301905092915050565b61306681613d6d565b82525050565b61307581613d6d565b82525050565b600061308682613aa2565b6130908185613ac5565b935061309b83613a92565b8060005b838110156130cc5781516130b38882613045565b97506130be83613ab8565b92505060018101905061309f565b5085935050505092915050565b6130e281613d7f565b82525050565b6130f181613dc2565b82525050565b61310081613de6565b82525050565b600061311182613aad565b61311b8185613ad6565b935061312b818560208601613df8565b61313481613e89565b840191505092915050565b600061314c602183613ad6565b91507f53656c6c20616d6f756e74206578636565647320746865206d6178206c696d6960008301527f74000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006131b2602883613ad6565b91507f57534120546f6b656e3a20617070726f76652066726f6d20746865207a65726f60008301527f20616464726573730000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613218602083613ad6565b91507f42757920616d6f756e74206578636565647320746865206d6178206c696d69746000830152602082019050919050565b6000613258600f83613ad6565b91507f496e76616c6964206164647265737300000000000000000000000000000000006000830152602082019050919050565b6000613298602683613ad6565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006132fe602583613ad6565b91507f57534120546f6b656e3a207472616e736665722066726f6d207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613364601b83613ad6565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b60006133a4603483613ad6565b91507f57534120546f6b656e3a207472616e7366657220616d6f756e74206d7573742060008301527f62652067726561746572207468616e207a65726f0000000000000000000000006020830152604082019050919050565b600061340a601c83613ad6565b91507f4e6f2042616c616e636520617661696c61626c6520746f2073776170000000006000830152602082019050919050565b600061344a602383613ad6565b91507f57534120546f6b656e3a207472616e7366657220746f207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006134b0603d83613ad6565b91507f57534120546f6b656e3a20726563697069656e742077616c6c65742062616c6160008301527f6e6365206578636565647320746865206d6178696d756d206c696d69740000006020830152604082019050919050565b6000613516602983613ad6565b91507f496e76616c69642076616c75653a2065786365656473203125206f6620746f7460008301527f616c20737570706c7900000000000000000000000000000000000000000000006020830152604082019050919050565b600061357c602083613ad6565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b60006135bc602683613ad6565b91507f57534120546f6b656e3a20617070726f766520746f20746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613622602083613ad6565b91507f5472616e7366657273206172652063757272656e746c792064697361626c65646000830152602082019050919050565b6000613662601183613ad6565b91507f7765206e6f74206c61756e6368207965740000000000000000000000000000006000830152602082019050919050565b60006136a2601b83613ad6565b91507f4e6f20746f6b656e7320617661696c61626c6520746f207377617000000000006000830152602082019050919050565b6136de81613dab565b82525050565b6136ed81613db5565b82525050565b6000602082019050613708600083018461306c565b92915050565b600060208201905061372360008301846130d9565b92915050565b600060208201905061373e60008301846130e8565b92915050565b6000602082019050818103600083015261375e8184613106565b905092915050565b6000602082019050818103600083015261377f8161313f565b9050919050565b6000602082019050818103600083015261379f816131a5565b9050919050565b600060208201905081810360008301526137bf8161320b565b9050919050565b600060208201905081810360008301526137df8161324b565b9050919050565b600060208201905081810360008301526137ff8161328b565b9050919050565b6000602082019050818103600083015261381f816132f1565b9050919050565b6000602082019050818103600083015261383f81613357565b9050919050565b6000602082019050818103600083015261385f81613397565b9050919050565b6000602082019050818103600083015261387f816133fd565b9050919050565b6000602082019050818103600083015261389f8161343d565b9050919050565b600060208201905081810360008301526138bf816134a3565b9050919050565b600060208201905081810360008301526138df81613509565b9050919050565b600060208201905081810360008301526138ff8161356f565b9050919050565b6000602082019050818103600083015261391f816135af565b9050919050565b6000602082019050818103600083015261393f81613615565b9050919050565b6000602082019050818103600083015261395f81613655565b9050919050565b6000602082019050818103600083015261397f81613695565b9050919050565b600060208201905061399b60008301846136d5565b92915050565b600060a0820190506139b660008301886136d5565b6139c360208301876130f7565b81810360408301526139d5818661307b565b90506139e4606083018561306c565b6139f160808301846136d5565b9695505050505050565b6000606082019050613a1060008301866136d5565b613a1d60208301856136d5565b613a2a60408301846136d5565b949350505050565b6000608082019050613a4760008301876136d5565b613a5460208301866136d5565b613a6160408301856136d5565b613a6e60608301846136d5565b95945050505050565b6000602082019050613a8c60008301846136e4565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613af282613dab565b9150613afd83613dab565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613b3257613b31613e2b565b5b828201905092915050565b6000613b4882613dab565b9150613b5383613dab565b925082613b6357613b62613e5a565b5b828204905092915050565b6000808291508390505b6001851115613bb857808604811115613b9457613b93613e2b565b5b6001851615613ba35780820291505b8081029050613bb185613e9a565b9450613b78565b94509492505050565b6000613bcc82613dab565b9150613bd783613db5565b9250613c047fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613c0c565b905092915050565b600082613c1c5760019050613cd8565b81613c2a5760009050613cd8565b8160018114613c405760028114613c4a57613c79565b6001915050613cd8565b60ff841115613c5c57613c5b613e2b565b5b8360020a915084821115613c7357613c72613e2b565b5b50613cd8565b5060208310610133831016604e8410600b8410161715613cae5782820a905083811115613ca957613ca8613e2b565b5b613cd8565b613cbb8484846001613b6e565b92509050818404811115613cd257613cd1613e2b565b5b81810290505b9392505050565b6000613cea82613dab565b9150613cf583613dab565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613d2e57613d2d613e2b565b5b828202905092915050565b6000613d4482613dab565b9150613d4f83613dab565b925082821015613d6257613d61613e2b565b5b828203905092915050565b6000613d7882613d8b565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000613dcd82613dd4565b9050919050565b6000613ddf82613d8b565b9050919050565b6000613df182613dab565b9050919050565b60005b83811015613e16578082015181840152602081019050613dfb565b83811115613e25576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b613eb081613d6d565b8114613ebb57600080fd5b50565b613ec781613d7f565b8114613ed257600080fd5b50565b613ede81613dab565b8114613ee957600080fd5b5056fea2646970667358221220d782de5ae0fa1c4104afacf4c8018a449f94ec335226ea3391b53016d07d281b64736f6c63430008000033

Deployed Bytecode

0x6080604052600436106101e75760003560e01c80638da5cb5b11610102578063d8a0663c11610095578063f7de4dfd11610064578063f7de4dfd14610703578063fcd2e0491461072e578063feae65e714610757578063ff5211bb14610785576101ee565b8063d8a0663c1461064b578063dd62ed3e14610674578063f2fde38b146106b1578063f515a55c146106da576101ee565b8063a9059cbb116100d1578063a9059cbb1461057b578063c683630d146105b8578063c6da3051146105f5578063d0d41fe114610622576101ee565b80638da5cb5b146104d157806392554287146104fc57806395d89b4114610527578063a14aee6114610552576101ee565b806336a0f8a51161017a57806370a082311161014957806370a0823114610427578063715018a61461046457806385438bc01461047b578063893d20e8146104a6576101ee565b806336a0f8a51461036d57806349bd5a5e146103965780635342acb4146103c157806353d6fd59146103fe576101ee565b80631694505e116101b65780631694505e146102af57806318160ddd146102da57806323b872dd14610305578063313ce56714610342576101ee565b806301e51ae8146101f357806306fdde031461021e578063095ea7b3146102495780630a80c0cc14610286576101ee565b366101ee57005b600080fd5b3480156101ff57600080fd5b5061020861079c565b60405161021591906136f3565b60405180910390f35b34801561022a57600080fd5b506102336107c2565b6040516102409190613744565b60405180910390f35b34801561025557600080fd5b50610270600480360381019061026b9190612f68565b6107ff565b60405161027d919061370e565b60405180910390f35b34801561029257600080fd5b506102ad60048036038101906102a89190612fcd565b610816565b005b3480156102bb57600080fd5b506102c46108a5565b6040516102d19190613729565b60405180910390f35b3480156102e657600080fd5b506102ef6108cb565b6040516102fc9190613986565b60405180910390f35b34801561031157600080fd5b5061032c60048036038101906103279190612edd565b6108d5565b604051610339919061370e565b60405180910390f35b34801561034e57600080fd5b5061035761097f565b6040516103649190613a77565b60405180910390f35b34801561037957600080fd5b50610394600480360381019061038f9190612ff6565b610988565b005b3480156103a257600080fd5b506103ab610a66565b6040516103b891906136f3565b60405180910390f35b3480156103cd57600080fd5b506103e860048036038101906103e39190612e4f565b610a8c565b6040516103f5919061370e565b60405180910390f35b34801561040a57600080fd5b5061042560048036038101906104209190612f2c565b610ae2565b005b34801561043357600080fd5b5061044e60048036038101906104499190612e4f565b610bb9565b60405161045b9190613986565b60405180910390f35b34801561047057600080fd5b50610479610c02565b005b34801561048757600080fd5b50610490610c8a565b60405161049d919061370e565b60405180910390f35b3480156104b257600080fd5b506104bb610c9d565b6040516104c891906136f3565b60405180910390f35b3480156104dd57600080fd5b506104e6610cac565b6040516104f391906136f3565b60405180910390f35b34801561050857600080fd5b50610511610cd5565b60405161051e919061370e565b60405180910390f35b34801561053357600080fd5b5061053c610ce8565b6040516105499190613744565b60405180910390f35b34801561055e57600080fd5b5061057960048036038101906105749190612fa4565b610d25565b005b34801561058757600080fd5b506105a2600480360381019061059d9190612f68565b610dbe565b6040516105af919061370e565b60405180910390f35b3480156105c457600080fd5b506105df60048036038101906105da9190612e4f565b610f51565b6040516105ec919061370e565b60405180910390f35b34801561060157600080fd5b5061060a610fa7565b604051610619939291906139fb565b60405180910390f35b34801561062e57600080fd5b5061064960048036038101906106449190612e4f565b610fc0565b005b34801561065757600080fd5b50610672600480360381019061066d9190612fcd565b611148565b005b34801561068057600080fd5b5061069b60048036038101906106969190612ea1565b611248565b6040516106a89190613986565b60405180910390f35b3480156106bd57600080fd5b506106d860048036038101906106d39190612e4f565b6112cf565b005b3480156106e657600080fd5b5061070160048036038101906106fc9190612fcd565b6113c7565b005b34801561070f57600080fd5b5061071861144d565b604051610725919061370e565b60405180910390f35b34801561073a57600080fd5b5061075560048036038101906107509190612fcd565b611460565b005b34801561076357600080fd5b5061076c6114ef565b60405161077c9493929190613a32565b60405180910390f35b34801561079157600080fd5b5061079a61150f565b005b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280601081526020017f57616c6c20537472656574204170657300000000000000000000000000000000815250905090565b600061080c338484611547565b6001905092915050565b61081e611712565b73ffffffffffffffffffffffffffffffffffffffff1661083c610cac565b73ffffffffffffffffffffffffffffffffffffffff1614610892576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610889906138e6565b60405180910390fd5b8060128190555060125460138190555050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600154905090565b6000610969843384600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109649190613d39565b611547565b61097484848461171a565b600190509392505050565b60006009905090565b610990611712565b73ffffffffffffffffffffffffffffffffffffffff166109ae610cac565b73ffffffffffffffffffffffffffffffffffffffff1614610a04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fb906138e6565b60405180910390fd5b6009600a610a129190613bc1565b83610a1d9190613cdf565b6002819055506009600a610a319190613bc1565b82610a3c9190613cdf565b6003819055506009600a610a509190613bc1565b81610a5b9190613cdf565b600481905550505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610aea611712565b73ffffffffffffffffffffffffffffffffffffffff16610b08610cac565b73ffffffffffffffffffffffffffffffffffffffff1614610b5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b55906138e6565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610c0a611712565b73ffffffffffffffffffffffffffffffffffffffff16610c28610cac565b73ffffffffffffffffffffffffffffffffffffffff1614610c7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c75906138e6565b60405180910390fd5b610c886000612800565b565b600e60029054906101000a900460ff1681565b6000610ca7610cac565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e60009054906101000a900460ff1681565b60606040518060400160405280600381526020017f5753410000000000000000000000000000000000000000000000000000000000815250905090565b610d2d611712565b73ffffffffffffffffffffffffffffffffffffffff16610d4b610cac565b73ffffffffffffffffffffffffffffffffffffffff1614610da1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d98906138e6565b60405180910390fd5b80600e60006101000a81548160ff02191690831515021790555050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610e515750610e21610cac565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015610ea75750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15610f3c5760025482600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610efa9190613ae7565b1115610f3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f32906138a6565b60405180910390fd5b5b610f4733848461171a565b6001905092915050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000806000601254925060135491506004549050909192565b610fc8611712565b73ffffffffffffffffffffffffffffffffffffffff16610fe6610cac565b73ffffffffffffffffffffffffffffffffffffffff161461103c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611033906138e6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156110ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a3906137c6565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611150611712565b73ffffffffffffffffffffffffffffffffffffffff1661116e610cac565b73ffffffffffffffffffffffffffffffffffffffff16146111c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bb906138e6565b60405180910390fd5b606460016111d06108cb565b6111da9190613cdf565b6111e49190613b3d565b811115611226576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121d906138c6565b60405180910390fd5b6009600a6112349190613bc1565b8161123f9190613cdf565b60058190555050565b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6112d7611712565b73ffffffffffffffffffffffffffffffffffffffff166112f5610cac565b73ffffffffffffffffffffffffffffffffffffffff161461134b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611342906138e6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156113bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b2906137e6565b60405180910390fd5b6113c481612800565b50565b6113cf611712565b73ffffffffffffffffffffffffffffffffffffffff166113ed610cac565b73ffffffffffffffffffffffffffffffffffffffff1614611443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143a906138e6565b60405180910390fd5b80600f8190555050565b600e60019054906101000a900460ff1681565b611468611712565b73ffffffffffffffffffffffffffffffffffffffff16611486610cac565b73ffffffffffffffffffffffffffffffffffffffff16146114dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d3906138e6565b60405180910390fd5b8060108190555060105460118190555050565b600080600080601054935060115492506002549150600354905090919293565b6001600e60016101000a81548160ff0219169083151502179055506001600e60026101000a81548160ff021916908315150217905550565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156115b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ae90613786565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611627576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161e90613906565b60405180910390fd5b80600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117059190613986565b60405180910390a3505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561178a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178190613806565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156117fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f190613886565b60405180910390fd5b6000811161183d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183490613846565b60405180910390fd5b600e60019054906101000a900460ff166119da57600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806118f25750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806119465750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061199a5750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6119d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d090613946565b60405180910390fd5b5b600e60019054906101000a900460ff16158015611a455750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611a9f5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611af457600e60029054906101000a900460ff16611af3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aea90613926565b60405180910390fd5b5b600060019050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611b895750611b5a610cac565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b15611ca55781600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611bdd9190613d39565b9250508190555081600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c339190613ae7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611c979190613986565b60405180910390a3506127fb565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611d4c5750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d8b5750611d5b610cac565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611e2557600454821115611dd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dcc90613766565b60405180910390fd5b6001600e60056101000a81548160ff021916908315150217905550600e60009054906101000a900460ff168015611e165750600554611e1330610bb9565b10155b15611e2457611e236128c4565b5b5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611ecc5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611f0b5750611edb610cac565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f5657600354821115611f55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4c906137a6565b60405180910390fd5b5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611ff75750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561200157600090505b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156120ad5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156120b757600090505b801561266957600e60059054906101000a900460ff1661238f5760006064601154846120e39190613cdf565b6120ed9190613b3d565b9050600081846120fd9190613d39565b905061215182600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a2b90919063ffffffff16565b600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506121e684600c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a8990919063ffffffff16565b600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061227b81600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a2b90919063ffffffff16565b600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161231b9190613986565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516123809190613986565b60405180910390a35050612664565b60006064601354846123a19190613cdf565b6123ab9190613b3d565b9050600081846123bb9190613d39565b905061240f82600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a2b90919063ffffffff16565b600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506124a484600c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a8990919063ffffffff16565b600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061253981600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a2b90919063ffffffff16565b600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125d99190613986565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161263e9190613986565b60405180910390a36000600e60056101000a81548160ff02191690831515021790555050505b6127f9565b6126bb82600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a8990919063ffffffff16565b600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061275082600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a2b90919063ffffffff16565b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516127f09190613986565b60405180910390a35b505b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006128cf30610bb9565b905060008111156129ed57600e60039054906101000a900460ff16156129e85760008111156129ac5760006064600f5461290830610bb9565b6129129190613cdf565b61291c9190613b3d565b9050600081905061292c81612ad3565b600047905060008111156129a457600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156129a2573d6000803e3d6000fd5b505b5050506129e7565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129de90613966565b60405180910390fd5b5b612a28565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1f90613866565b60405180910390fd5b50565b6000808284612a3a9190613ae7565b905083811015612a7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a7690613826565b60405180910390fd5b8091505092915050565b6000612acb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612d97565b905092915050565b6000600267ffffffffffffffff811115612b16577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015612b445781602001602082028036833780820191505090505b5090503081600081518110612b82577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612c2457600080fd5b505afa158015612c38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c5c9190612e78565b81600181518110612c96577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612cfd30600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611547565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612d619594939291906139a1565b600060405180830381600087803b158015612d7b57600080fd5b505af1158015612d8f573d6000803e3d6000fd5b505050505050565b6000838311158290612ddf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dd69190613744565b60405180910390fd5b5060008385612dee9190613d39565b9050809150509392505050565b600081359050612e0a81613ea7565b92915050565b600081519050612e1f81613ea7565b92915050565b600081359050612e3481613ebe565b92915050565b600081359050612e4981613ed5565b92915050565b600060208284031215612e6157600080fd5b6000612e6f84828501612dfb565b91505092915050565b600060208284031215612e8a57600080fd5b6000612e9884828501612e10565b91505092915050565b60008060408385031215612eb457600080fd5b6000612ec285828601612dfb565b9250506020612ed385828601612dfb565b9150509250929050565b600080600060608486031215612ef257600080fd5b6000612f0086828701612dfb565b9350506020612f1186828701612dfb565b9250506040612f2286828701612e3a565b9150509250925092565b60008060408385031215612f3f57600080fd5b6000612f4d85828601612dfb565b9250506020612f5e85828601612e25565b9150509250929050565b60008060408385031215612f7b57600080fd5b6000612f8985828601612dfb565b9250506020612f9a85828601612e3a565b9150509250929050565b600060208284031215612fb657600080fd5b6000612fc484828501612e25565b91505092915050565b600060208284031215612fdf57600080fd5b6000612fed84828501612e3a565b91505092915050565b60008060006060848603121561300b57600080fd5b600061301986828701612e3a565b935050602061302a86828701612e3a565b925050604061303b86828701612e3a565b9150509250925092565b6000613051838361305d565b60208301905092915050565b61306681613d6d565b82525050565b61307581613d6d565b82525050565b600061308682613aa2565b6130908185613ac5565b935061309b83613a92565b8060005b838110156130cc5781516130b38882613045565b97506130be83613ab8565b92505060018101905061309f565b5085935050505092915050565b6130e281613d7f565b82525050565b6130f181613dc2565b82525050565b61310081613de6565b82525050565b600061311182613aad565b61311b8185613ad6565b935061312b818560208601613df8565b61313481613e89565b840191505092915050565b600061314c602183613ad6565b91507f53656c6c20616d6f756e74206578636565647320746865206d6178206c696d6960008301527f74000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006131b2602883613ad6565b91507f57534120546f6b656e3a20617070726f76652066726f6d20746865207a65726f60008301527f20616464726573730000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613218602083613ad6565b91507f42757920616d6f756e74206578636565647320746865206d6178206c696d69746000830152602082019050919050565b6000613258600f83613ad6565b91507f496e76616c6964206164647265737300000000000000000000000000000000006000830152602082019050919050565b6000613298602683613ad6565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006132fe602583613ad6565b91507f57534120546f6b656e3a207472616e736665722066726f6d207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613364601b83613ad6565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b60006133a4603483613ad6565b91507f57534120546f6b656e3a207472616e7366657220616d6f756e74206d7573742060008301527f62652067726561746572207468616e207a65726f0000000000000000000000006020830152604082019050919050565b600061340a601c83613ad6565b91507f4e6f2042616c616e636520617661696c61626c6520746f2073776170000000006000830152602082019050919050565b600061344a602383613ad6565b91507f57534120546f6b656e3a207472616e7366657220746f207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006134b0603d83613ad6565b91507f57534120546f6b656e3a20726563697069656e742077616c6c65742062616c6160008301527f6e6365206578636565647320746865206d6178696d756d206c696d69740000006020830152604082019050919050565b6000613516602983613ad6565b91507f496e76616c69642076616c75653a2065786365656473203125206f6620746f7460008301527f616c20737570706c7900000000000000000000000000000000000000000000006020830152604082019050919050565b600061357c602083613ad6565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b60006135bc602683613ad6565b91507f57534120546f6b656e3a20617070726f766520746f20746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613622602083613ad6565b91507f5472616e7366657273206172652063757272656e746c792064697361626c65646000830152602082019050919050565b6000613662601183613ad6565b91507f7765206e6f74206c61756e6368207965740000000000000000000000000000006000830152602082019050919050565b60006136a2601b83613ad6565b91507f4e6f20746f6b656e7320617661696c61626c6520746f207377617000000000006000830152602082019050919050565b6136de81613dab565b82525050565b6136ed81613db5565b82525050565b6000602082019050613708600083018461306c565b92915050565b600060208201905061372360008301846130d9565b92915050565b600060208201905061373e60008301846130e8565b92915050565b6000602082019050818103600083015261375e8184613106565b905092915050565b6000602082019050818103600083015261377f8161313f565b9050919050565b6000602082019050818103600083015261379f816131a5565b9050919050565b600060208201905081810360008301526137bf8161320b565b9050919050565b600060208201905081810360008301526137df8161324b565b9050919050565b600060208201905081810360008301526137ff8161328b565b9050919050565b6000602082019050818103600083015261381f816132f1565b9050919050565b6000602082019050818103600083015261383f81613357565b9050919050565b6000602082019050818103600083015261385f81613397565b9050919050565b6000602082019050818103600083015261387f816133fd565b9050919050565b6000602082019050818103600083015261389f8161343d565b9050919050565b600060208201905081810360008301526138bf816134a3565b9050919050565b600060208201905081810360008301526138df81613509565b9050919050565b600060208201905081810360008301526138ff8161356f565b9050919050565b6000602082019050818103600083015261391f816135af565b9050919050565b6000602082019050818103600083015261393f81613615565b9050919050565b6000602082019050818103600083015261395f81613655565b9050919050565b6000602082019050818103600083015261397f81613695565b9050919050565b600060208201905061399b60008301846136d5565b92915050565b600060a0820190506139b660008301886136d5565b6139c360208301876130f7565b81810360408301526139d5818661307b565b90506139e4606083018561306c565b6139f160808301846136d5565b9695505050505050565b6000606082019050613a1060008301866136d5565b613a1d60208301856136d5565b613a2a60408301846136d5565b949350505050565b6000608082019050613a4760008301876136d5565b613a5460208301866136d5565b613a6160408301856136d5565b613a6e60608301846136d5565b95945050505050565b6000602082019050613a8c60008301846136e4565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613af282613dab565b9150613afd83613dab565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613b3257613b31613e2b565b5b828201905092915050565b6000613b4882613dab565b9150613b5383613dab565b925082613b6357613b62613e5a565b5b828204905092915050565b6000808291508390505b6001851115613bb857808604811115613b9457613b93613e2b565b5b6001851615613ba35780820291505b8081029050613bb185613e9a565b9450613b78565b94509492505050565b6000613bcc82613dab565b9150613bd783613db5565b9250613c047fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613c0c565b905092915050565b600082613c1c5760019050613cd8565b81613c2a5760009050613cd8565b8160018114613c405760028114613c4a57613c79565b6001915050613cd8565b60ff841115613c5c57613c5b613e2b565b5b8360020a915084821115613c7357613c72613e2b565b5b50613cd8565b5060208310610133831016604e8410600b8410161715613cae5782820a905083811115613ca957613ca8613e2b565b5b613cd8565b613cbb8484846001613b6e565b92509050818404811115613cd257613cd1613e2b565b5b81810290505b9392505050565b6000613cea82613dab565b9150613cf583613dab565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613d2e57613d2d613e2b565b5b828202905092915050565b6000613d4482613dab565b9150613d4f83613dab565b925082821015613d6257613d61613e2b565b5b828203905092915050565b6000613d7882613d8b565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000613dcd82613dd4565b9050919050565b6000613ddf82613d8b565b9050919050565b6000613df182613dab565b9050919050565b60005b83811015613e16578082015181840152602081019050613dfb565b83811115613e25576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b613eb081613d6d565b8114613ebb57600080fd5b50565b613ec781613d7f565b8114613ed257600080fd5b50565b613ede81613dab565b8114613ee957600080fd5b5056fea2646970667358221220d782de5ae0fa1c4104afacf4c8018a449f94ec335226ea3391b53016d07d281b64736f6c63430008000033

Deployed Bytecode Sourcemap

4534:11406:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5125:63;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6803:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8775:159;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15781:154;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5307:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7084:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8942:262;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6993:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15345:274;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5355:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7321:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14770:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7194:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2722:94;;;;;;;;;;;;;:::i;:::-;;5621:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6708:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2499:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5552:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6898:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14898:89;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8191:425;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7453:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7905:276;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;14446:206;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15115:222;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8624:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2824:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14995:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5587:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15627:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7573:324;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;14661:101;;;;;;;;;;;;;:::i;:::-;;5125:63;;;;;;;;;;;;;:::o;6803:83::-;6840:13;6873:5;;;;;;;;;;;;;;;;;6866:12;;6803:83;:::o;8775:159::-;8850:4;8867:37;8876:10;8888:7;8897:6;8867:8;:37::i;:::-;8922:4;8915:11;;8775:159;;;;:::o;15781:154::-;2645:12;:10;:12::i;:::-;2634:23;;:7;:5;:7::i;:::-;:23;;;2626:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15874:10:::1;15856:15;:28;;;;15912:15;;15895:14;:32;;;;15781:154:::0;:::o;5307:41::-;;;;;;;;;;;;;:::o;7084:100::-;7137:7;7164:12;;7157:19;;7084:100;:::o;8942:262::-;9040:4;9057:70;9066:6;9074:10;9120:6;9086:11;:19;9098:6;9086:19;;;;;;;;;;;;;;;:31;9106:10;9086:31;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;9057:8;:70::i;:::-;9138:36;9148:6;9156:9;9167:6;9138:9;:36::i;:::-;9192:4;9185:11;;8942:262;;;;;:::o;6993:83::-;7034:5;4799:1;7052:16;;6993:83;:::o;15345:274::-;2645:12;:10;:12::i;:::-;2634:23;;:7;:5;:7::i;:::-;:23;;;2626:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4799:1:::1;15486:2;:13;;;;:::i;:::-;15474:9;:25;;;;:::i;:::-;15461:10;:38;;;;4799:1;15541:2;:13;;;;:::i;:::-;15526:12;:28;;;;:::i;:::-;15510:13;:44;;;;4799:1;15598:2;:13;;;;:::i;:::-;15582;:29;;;;:::i;:::-;15565:14;:46;;;;15345:274:::0;;;:::o;5355:28::-;;;;;;;;;;;;;:::o;7321:124::-;7386:4;7410:18;:27;7429:7;7410:27;;;;;;;;;;;;;;;;;;;;;;;;;7403:34;;7321:124;;;:::o;14770:120::-;2645:12;:10;:12::i;:::-;2634:23;;:7;:5;:7::i;:::-;:23;;;2626:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14876:6:::1;14852:12;:21;14865:7;14852:21;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;14770:120:::0;;:::o;7194:119::-;7260:7;7287:9;:18;7297:7;7287:18;;;;;;;;;;;;;;;;7280:25;;7194:119;;;:::o;2722:94::-;2645:12;:10;:12::i;:::-;2634:23;;:7;:5;:7::i;:::-;:23;;;2626:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2787:21:::1;2805:1;2787:9;:21::i;:::-;2722:94::o:0;5621:37::-;;;;;;;;;;;;;:::o;6708:83::-;6749:7;6776;:5;:7::i;:::-;6769:14;;6708:83;:::o;2499:87::-;2545:7;2572:6;;;;;;;;;;;2565:13;;2499:87;:::o;5552:28::-;;;;;;;;;;;;;:::o;6898:87::-;6937:13;6970:7;;;;;;;;;;;;;;;;;6963:14;;6898:87;:::o;14898:89::-;2645:12;:10;:12::i;:::-;2634:23;;:7;:5;:7::i;:::-;:23;;;2626:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14973:6:::1;14961:9;;:18;;;;;;;;;;;;;;;;;;14898:89:::0;:::o;8191:425::-;8269:4;8304:13;;;;;;;;;;;8291:26;;:9;:26;;;;:50;;;;;8334:7;:5;:7::i;:::-;8321:20;;:9;:20;;;;8291:50;:84;;;;;8346:18;:29;8365:9;8346:29;;;;;;;;;;;;;;;;;;;;;;;;;8345:30;8291:84;8288:236;;;8434:10;;8424:6;8401:9;:20;8411:9;8401:20;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;:43;;8393:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;8288:236;8536:40;8546:10;8558:9;8569:6;8536:9;:40::i;:::-;8604:4;8597:11;;8191:425;;;;:::o;7453:112::-;7512:4;7536:12;:21;7549:7;7536:21;;;;;;;;;;;;;;;;;;;;;;;;;7529:28;;7453:112;;;:::o;7905:276::-;7960:19;7990:21;8022;8076:15;;8062:29;;8118:14;;8102:30;;8159:14;;8143:30;;7905:276;;;:::o;14446:206::-;2645:12;:10;:12::i;:::-;2634:23;;:7;:5;:7::i;:::-;:23;;;2626:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14547:1:::1;14525:24;;:10;:24;;;;14517:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;14586:10;14580:3;;:16;;;;;;;;;;;;;;;;;;14640:4;14607:18;:30;14626:10;14607:30;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;14446:206:::0;:::o;15115:222::-;2645:12;:10;:12::i;:::-;2634:23;;:7;:5;:7::i;:::-;:23;;;2626:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15232:3:::1;15227:1;15211:13;:11;:13::i;:::-;:17;;;;:::i;:::-;15210:25;;;;:::i;:::-;15195:11;:40;;15187:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;4799:1;15316:2;:13;;;;:::i;:::-;15302:11;:27;;;;:::i;:::-;15292:7;:37;;;;15115:222:::0;:::o;8624:143::-;8705:7;8732:11;:18;8744:5;8732:18;;;;;;;;;;;;;;;:27;8751:7;8732:27;;;;;;;;;;;;;;;;8725:34;;8624:143;;;;:::o;2824:192::-;2645:12;:10;:12::i;:::-;2634:23;;:7;:5;:7::i;:::-;:23;;;2626:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2933:1:::1;2913:22;;:8;:22;;;;2905:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2989:19;2999:8;2989:9;:19::i;:::-;2824:192:::0;:::o;14995:112::-;2645:12;:10;:12::i;:::-;2634:23;;:7;:5;:7::i;:::-;:23;;;2626:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15088:11:::1;15073:12;:26;;;;14995:112:::0;:::o;5587:27::-;;;;;;;;;;;;;:::o;15627:144::-;2645:12;:10;:12::i;:::-;2634:23;;:7;:5;:7::i;:::-;:23;;;2626:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15715:10:::1;15701:11;:24;;;;15752:11;;15736:13;:27;;;;15627:144:::0;:::o;7573:324::-;7627:18;7656:20;7687:17;7715:20;7767:11;;7754:24;;7804:13;;7789:28;;7840:10;;7828:22;;7876:13;;7861:28;;7573:324;;;;:::o;14661:101::-;14715:4;14705:7;;:14;;;;;;;;;;;;;;;;;;14750:4;14730:17;;:24;;;;;;;;;;;;;;;;;;14661:101::o;9212:345::-;9322:1;9305:19;;:5;:19;;;;9297:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;9407:1;9388:21;;:7;:21;;;;9380:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;9495:6;9465:11;:18;9477:5;9465:18;;;;;;;;;;;;;;;:27;9484:7;9465:27;;;;;;;;;;;;;;;:36;;;;9533:7;9517:32;;9526:5;9517:32;;;9542:6;9517:32;;;;;;:::i;:::-;;;;;;;;9212:345;;;:::o;822:98::-;875:7;902:10;895:17;;822:98;:::o;9565:3325::-;9682:1;9664:20;;:6;:20;;;;9656:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;9766:1;9745:23;;:9;:23;;;;9737:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;9836:1;9827:6;:10;9819:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;9909:7;;;;;;;;;;;9905:155;;9926:18;:26;9945:6;9926:26;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;9956:18;:29;9975:9;9956:29;;;;;;;;;;;;;;;;;;;;;;;;;9926:59;:83;;;;9989:12;:20;10002:6;9989:20;;;;;;;;;;;;;;;;;;;;;;;;;9926:83;:110;;;;10013:12;:23;10026:9;10013:23;;;;;;;;;;;;;;;;;;;;;;;;;9926:110;9918:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;9905:155;10074:7;;;;;;;;;;;10073:8;:38;;;;;10098:13;;;;;;;;;;;10085:26;;:9;:26;;;;10073:38;:65;;;;;10125:13;;;;;;;;;;;10115:23;;:6;:23;;;;10073:65;10070:135;;;10149:17;;;;;;;;;;;10141:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;10070:135;10217:15;10235:4;10217:22;;10271:13;;;;;;;;;;;10258:26;;:9;:26;;;:47;;;;;10298:7;:5;:7::i;:::-;10288:17;;:6;:17;;;10258:47;10254:230;;;10345:6;10324:9;:17;10334:6;10324:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;10390:6;10366:9;:20;10376:9;10366:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;10433:9;10416:35;;10425:6;10416:35;;;10444:6;10416:35;;;;;;:::i;:::-;;;;;;;;10466:7;;;10254:230;10531:13;;;;;;;;;;;10518:26;;:9;:26;;;:57;;;;;10549:18;:26;10568:6;10549:26;;;;;;;;;;;;;;;;;;;;;;;;;10548:27;10518:57;:78;;;;;10589:7;:5;:7::i;:::-;10579:17;;:6;:17;;;;10518:78;10515:366;;;10636:14;;10626:6;:24;;10618:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;10722:4;10709:10;;:17;;;;;;;;;;;;;;;;;;10765:9;;;;;;;;;;;:48;;;;;10806:7;;10778:24;10796:4;10778:9;:24::i;:::-;:35;;10765:48;10762:106;;;10839:9;:7;:9::i;:::-;10762:106;10515:366;10921:13;;;;;;;;;;;10911:23;;:6;:23;;;:57;;;;;10939:18;:29;10958:9;10939:29;;;;;;;;;;;;;;;;;;;;;;;;;10938:30;10911:57;:81;;;;;10985:7;:5;:7::i;:::-;10972:20;;:9;:20;;;;10911:81;10908:216;;;11048:13;;11038:6;:23;;11030:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10908:216;11140:18;:26;11159:6;11140:26;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;11170:18;:29;11189:9;11170:29;;;;;;;;;;;;;;;;;;;;;;;;;11140:59;11136:88;;;11216:5;11203:18;;11136:88;11251:13;;;;;;;;;;;11238:26;;:9;:26;;;;:53;;;;;11278:13;;;;;;;;;;;11268:23;;:6;:23;;;;11238:53;11234:82;;;11308:5;11295:18;;11234:82;11332:10;11328:1555;;;11369:10;;;;;;;;;;;11365:1270;;11405:22;11455:3;11439:13;;11430:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;11405:53;;11481:22;11515:14;11506:6;:23;;;;:::i;:::-;11481:48;;11622:44;11651:14;11622:9;:24;11640:4;11622:24;;;;;;;;;;;;;;;;:28;;:44;;;;:::i;:::-;11595:9;:24;11613:4;11595:24;;;;;;;;;;;;;;;:71;;;;11709:29;11731:6;11709:9;:17;11719:6;11709:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;11689:9;:17;11699:6;11689:17;;;;;;;;;;;;;;;:49;;;;11784:40;11809:14;11784:9;:20;11794:9;11784:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;11761:9;:20;11771:9;11761:20;;;;;;;;;;;;;;;:63;;;;11871:9;11854:43;;11863:6;11854:43;;;11882:14;11854:43;;;;;;:::i;:::-;;;;;;;;11950:4;11925:47;;11934:6;11925:47;;;11957:14;11925:47;;;;;;:::i;:::-;;;;;;;;11365:1270;;;;;12023:22;12074:3;12057:14;;12048:6;:23;;;;:::i;:::-;:29;;;;:::i;:::-;12023:54;;12100:22;12134:14;12125:6;:23;;;;:::i;:::-;12100:48;;12222:44;12251:14;12222:9;:24;12240:4;12222:24;;;;;;;;;;;;;;;;:28;;:44;;;;:::i;:::-;12195:9;:24;12213:4;12195:24;;;;;;;;;;;;;;;:71;;;;12309:29;12331:6;12309:9;:17;12319:6;12309:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;12289:9;:17;12299:6;12289:17;;;;;;;;;;;;;;;:49;;;;12384:40;12409:14;12384:9;:20;12394:9;12384:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;12361:9;:20;12371:9;12361:20;;;;;;;;;;;;;;;:63;;;;12471:9;12454:43;;12463:6;12454:43;;;12482:14;12454:43;;;;;;:::i;:::-;;;;;;;;12550:4;12525:47;;12534:6;12525:47;;;12557:14;12525:47;;;;;;:::i;:::-;;;;;;;;12610:5;12597:10;;:18;;;;;;;;;;;;;;;;;;11365:1270;;;11328:1555;;;12705:29;12727:6;12705:9;:17;12715:6;12705:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;12685:9;:17;12695:6;12685:17;;;;;;;;;;;;;;;:49;;;;12776:32;12801:6;12776:9;:20;12786:9;12776:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;12753:9;:20;12763:9;12753:20;;;;;;;;;;;;;;;:55;;;;12851:9;12834:35;;12843:6;12834:35;;;12862:6;12834:35;;;;;;:::i;:::-;;;;;;;;11328:1555;9565:3325;;;;;:::o;3024:173::-;3080:16;3099:6;;;;;;;;;;;3080:25;;3125:8;3116:6;;:17;;;;;;;;;;;;;;;;;;3180:8;3149:40;;3170:8;3149:40;;;;;;;;;;;;3024:173;;:::o;13566:836::-;13606:28;13637:24;13655:4;13637:9;:24::i;:::-;13606:55;;13700:1;13677:20;:24;13674:707;;;13723:10;;;;;;;;;;;13720:560;;;13781:1;13758:20;:24;13755:508;;;13828:17;13890:3;13875:12;;13848:24;13866:4;13848:9;:24::i;:::-;:39;;;;:::i;:::-;:45;;;;:::i;:::-;13828:65;;13918:14;13935:9;13918:26;;13969:24;13986:6;13969:16;:24::i;:::-;14018:23;14044:21;14018:47;;14112:1;14094:15;:19;14090:66;;;14124:3;;;;;;;;;;;14116:21;;:38;14138:15;14116:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14090:66;13755:508;;;;;;14206:37;;;;;;;;;;:::i;:::-;;;;;;;;13755:508;13720:560;13674:707;;;14313:38;;;;;;;;;;:::i;:::-;;;;;;;;13674:707;13566:836;:::o;1076:179::-;1134:7;1154:9;1170:1;1166;:5;;;;:::i;:::-;1154:17;;1195:1;1190;:6;;1182:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1246:1;1239:8;;;1076:179;;;;:::o;1264:136::-;1322:7;1349:43;1353:1;1356;1349:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1342:50;;1264:136;;;;:::o;12900:656::-;13031:21;13069:1;13055:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13031:40;;13100:4;13082;13087:1;13082:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;13126:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13116:4;13121:1;13116:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;13228:62;13245:4;13260:15;;;;;;;;;;;13278:11;13228:8;:62::i;:::-;13324:15;;;;;;;;;;;:66;;;13405:11;13431:1;13475:4;13502;13522:15;13324:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12900:656;;:::o;1409:224::-;1529:7;1562:1;1557;:6;;1565:12;1549:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1589:9;1605:1;1601;:5;;;;:::i;:::-;1589:17;;1624:1;1617:8;;;1409:224;;;;;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:133::-;;382:6;369:20;360:29;;398:30;422:5;398:30;:::i;:::-;350:84;;;;:::o;440:139::-;;524:6;511:20;502:29;;540:33;567:5;540:33;:::i;:::-;492:87;;;;:::o;585:262::-;;693:2;681:9;672:7;668:23;664:32;661:2;;;709:1;706;699:12;661:2;752:1;777:53;822:7;813:6;802:9;798:22;777:53;:::i;:::-;767:63;;723:117;651:196;;;;:::o;853:284::-;;972:2;960:9;951:7;947:23;943:32;940:2;;;988:1;985;978:12;940:2;1031:1;1056:64;1112:7;1103:6;1092:9;1088:22;1056:64;:::i;:::-;1046:74;;1002:128;930:207;;;;:::o;1143:407::-;;;1268:2;1256:9;1247:7;1243:23;1239:32;1236:2;;;1284:1;1281;1274:12;1236:2;1327:1;1352:53;1397:7;1388:6;1377:9;1373:22;1352:53;:::i;:::-;1342:63;;1298:117;1454:2;1480:53;1525:7;1516:6;1505:9;1501:22;1480:53;:::i;:::-;1470:63;;1425:118;1226:324;;;;;:::o;1556:552::-;;;;1698:2;1686:9;1677:7;1673:23;1669:32;1666:2;;;1714:1;1711;1704:12;1666:2;1757:1;1782:53;1827:7;1818:6;1807:9;1803:22;1782:53;:::i;:::-;1772:63;;1728:117;1884:2;1910:53;1955:7;1946:6;1935:9;1931:22;1910:53;:::i;:::-;1900:63;;1855:118;2012:2;2038:53;2083:7;2074:6;2063:9;2059:22;2038:53;:::i;:::-;2028:63;;1983:118;1656:452;;;;;:::o;2114:401::-;;;2236:2;2224:9;2215:7;2211:23;2207:32;2204:2;;;2252:1;2249;2242:12;2204:2;2295:1;2320:53;2365:7;2356:6;2345:9;2341:22;2320:53;:::i;:::-;2310:63;;2266:117;2422:2;2448:50;2490:7;2481:6;2470:9;2466:22;2448:50;:::i;:::-;2438:60;;2393:115;2194:321;;;;;:::o;2521:407::-;;;2646:2;2634:9;2625:7;2621:23;2617:32;2614:2;;;2662:1;2659;2652:12;2614:2;2705:1;2730:53;2775:7;2766:6;2755:9;2751:22;2730:53;:::i;:::-;2720:63;;2676:117;2832:2;2858:53;2903:7;2894:6;2883:9;2879:22;2858:53;:::i;:::-;2848:63;;2803:118;2604:324;;;;;:::o;2934:256::-;;3039:2;3027:9;3018:7;3014:23;3010:32;3007:2;;;3055:1;3052;3045:12;3007:2;3098:1;3123:50;3165:7;3156:6;3145:9;3141:22;3123:50;:::i;:::-;3113:60;;3069:114;2997:193;;;;:::o;3196:262::-;;3304:2;3292:9;3283:7;3279:23;3275:32;3272:2;;;3320:1;3317;3310:12;3272:2;3363:1;3388:53;3433:7;3424:6;3413:9;3409:22;3388:53;:::i;:::-;3378:63;;3334:117;3262:196;;;;:::o;3464:552::-;;;;3606:2;3594:9;3585:7;3581:23;3577:32;3574:2;;;3622:1;3619;3612:12;3574:2;3665:1;3690:53;3735:7;3726:6;3715:9;3711:22;3690:53;:::i;:::-;3680:63;;3636:117;3792:2;3818:53;3863:7;3854:6;3843:9;3839:22;3818:53;:::i;:::-;3808:63;;3763:118;3920:2;3946:53;3991:7;3982:6;3971:9;3967:22;3946:53;:::i;:::-;3936:63;;3891:118;3564:452;;;;;:::o;4022:179::-;;4112:46;4154:3;4146:6;4112:46;:::i;:::-;4190:4;4185:3;4181:14;4167:28;;4102:99;;;;:::o;4207:108::-;4284:24;4302:5;4284:24;:::i;:::-;4279:3;4272:37;4262:53;;:::o;4321:118::-;4408:24;4426:5;4408:24;:::i;:::-;4403:3;4396:37;4386:53;;:::o;4475:732::-;;4623:54;4671:5;4623:54;:::i;:::-;4693:86;4772:6;4767:3;4693:86;:::i;:::-;4686:93;;4803:56;4853:5;4803:56;:::i;:::-;4882:7;4913:1;4898:284;4923:6;4920:1;4917:13;4898:284;;;4999:6;4993:13;5026:63;5085:3;5070:13;5026:63;:::i;:::-;5019:70;;5112:60;5165:6;5112:60;:::i;:::-;5102:70;;4958:224;4945:1;4942;4938:9;4933:14;;4898:284;;;4902:14;5198:3;5191:10;;4599:608;;;;;;;:::o;5213:109::-;5294:21;5309:5;5294:21;:::i;:::-;5289:3;5282:34;5272:50;;:::o;5328:183::-;5441:63;5498:5;5441:63;:::i;:::-;5436:3;5429:76;5419:92;;:::o;5517:147::-;5612:45;5651:5;5612:45;:::i;:::-;5607:3;5600:58;5590:74;;:::o;5670:364::-;;5786:39;5819:5;5786:39;:::i;:::-;5841:71;5905:6;5900:3;5841:71;:::i;:::-;5834:78;;5921:52;5966:6;5961:3;5954:4;5947:5;5943:16;5921:52;:::i;:::-;5998:29;6020:6;5998:29;:::i;:::-;5993:3;5989:39;5982:46;;5762:272;;;;;:::o;6040:365::-;;6203:67;6267:2;6262:3;6203:67;:::i;:::-;6196:74;;6300:34;6296:1;6291:3;6287:11;6280:55;6366:3;6361:2;6356:3;6352:12;6345:25;6396:2;6391:3;6387:12;6380:19;;6186:219;;;:::o;6411:372::-;;6574:67;6638:2;6633:3;6574:67;:::i;:::-;6567:74;;6671:34;6667:1;6662:3;6658:11;6651:55;6737:10;6732:2;6727:3;6723:12;6716:32;6774:2;6769:3;6765:12;6758:19;;6557:226;;;:::o;6789:330::-;;6952:67;7016:2;7011:3;6952:67;:::i;:::-;6945:74;;7049:34;7045:1;7040:3;7036:11;7029:55;7110:2;7105:3;7101:12;7094:19;;6935:184;;;:::o;7125:313::-;;7288:67;7352:2;7347:3;7288:67;:::i;:::-;7281:74;;7385:17;7381:1;7376:3;7372:11;7365:38;7429:2;7424:3;7420:12;7413:19;;7271:167;;;:::o;7444:370::-;;7607:67;7671:2;7666:3;7607:67;:::i;:::-;7600:74;;7704:34;7700:1;7695:3;7691:11;7684:55;7770:8;7765:2;7760:3;7756:12;7749:30;7805:2;7800:3;7796:12;7789:19;;7590:224;;;:::o;7820:369::-;;7983:67;8047:2;8042:3;7983:67;:::i;:::-;7976:74;;8080:34;8076:1;8071:3;8067:11;8060:55;8146:7;8141:2;8136:3;8132:12;8125:29;8180:2;8175:3;8171:12;8164:19;;7966:223;;;:::o;8195:325::-;;8358:67;8422:2;8417:3;8358:67;:::i;:::-;8351:74;;8455:29;8451:1;8446:3;8442:11;8435:50;8511:2;8506:3;8502:12;8495:19;;8341:179;;;:::o;8526:384::-;;8689:67;8753:2;8748:3;8689:67;:::i;:::-;8682:74;;8786:34;8782:1;8777:3;8773:11;8766:55;8852:22;8847:2;8842:3;8838:12;8831:44;8901:2;8896:3;8892:12;8885:19;;8672:238;;;:::o;8916:326::-;;9079:67;9143:2;9138:3;9079:67;:::i;:::-;9072:74;;9176:30;9172:1;9167:3;9163:11;9156:51;9233:2;9228:3;9224:12;9217:19;;9062:180;;;:::o;9248:367::-;;9411:67;9475:2;9470:3;9411:67;:::i;:::-;9404:74;;9508:34;9504:1;9499:3;9495:11;9488:55;9574:5;9569:2;9564:3;9560:12;9553:27;9606:2;9601:3;9597:12;9590:19;;9394:221;;;:::o;9621:393::-;;9784:67;9848:2;9843:3;9784:67;:::i;:::-;9777:74;;9881:34;9877:1;9872:3;9868:11;9861:55;9947:31;9942:2;9937:3;9933:12;9926:53;10005:2;10000:3;9996:12;9989:19;;9767:247;;;:::o;10020:373::-;;10183:67;10247:2;10242:3;10183:67;:::i;:::-;10176:74;;10280:34;10276:1;10271:3;10267:11;10260:55;10346:11;10341:2;10336:3;10332:12;10325:33;10384:2;10379:3;10375:12;10368:19;;10166:227;;;:::o;10399:330::-;;10562:67;10626:2;10621:3;10562:67;:::i;:::-;10555:74;;10659:34;10655:1;10650:3;10646:11;10639:55;10720:2;10715:3;10711:12;10704:19;;10545:184;;;:::o;10735:370::-;;10898:67;10962:2;10957:3;10898:67;:::i;:::-;10891:74;;10995:34;10991:1;10986:3;10982:11;10975:55;11061:8;11056:2;11051:3;11047:12;11040:30;11096:2;11091:3;11087:12;11080:19;;10881:224;;;:::o;11111:330::-;;11274:67;11338:2;11333:3;11274:67;:::i;:::-;11267:74;;11371:34;11367:1;11362:3;11358:11;11351:55;11432:2;11427:3;11423:12;11416:19;;11257:184;;;:::o;11447:315::-;;11610:67;11674:2;11669:3;11610:67;:::i;:::-;11603:74;;11707:19;11703:1;11698:3;11694:11;11687:40;11753:2;11748:3;11744:12;11737:19;;11593:169;;;:::o;11768:325::-;;11931:67;11995:2;11990:3;11931:67;:::i;:::-;11924:74;;12028:29;12024:1;12019:3;12015:11;12008:50;12084:2;12079:3;12075:12;12068:19;;11914:179;;;:::o;12099:118::-;12186:24;12204:5;12186:24;:::i;:::-;12181:3;12174:37;12164:53;;:::o;12223:112::-;12306:22;12322:5;12306:22;:::i;:::-;12301:3;12294:35;12284:51;;:::o;12341:222::-;;12472:2;12461:9;12457:18;12449:26;;12485:71;12553:1;12542:9;12538:17;12529:6;12485:71;:::i;:::-;12439:124;;;;:::o;12569:210::-;;12694:2;12683:9;12679:18;12671:26;;12707:65;12769:1;12758:9;12754:17;12745:6;12707:65;:::i;:::-;12661:118;;;;:::o;12785:274::-;;12942:2;12931:9;12927:18;12919:26;;12955:97;13049:1;13038:9;13034:17;13025:6;12955:97;:::i;:::-;12909:150;;;;:::o;13065:313::-;;13216:2;13205:9;13201:18;13193:26;;13265:9;13259:4;13255:20;13251:1;13240:9;13236:17;13229:47;13293:78;13366:4;13357:6;13293:78;:::i;:::-;13285:86;;13183:195;;;;:::o;13384:419::-;;13588:2;13577:9;13573:18;13565:26;;13637:9;13631:4;13627:20;13623:1;13612:9;13608:17;13601:47;13665:131;13791:4;13665:131;:::i;:::-;13657:139;;13555:248;;;:::o;13809:419::-;;14013:2;14002:9;13998:18;13990:26;;14062:9;14056:4;14052:20;14048:1;14037:9;14033:17;14026:47;14090:131;14216:4;14090:131;:::i;:::-;14082:139;;13980:248;;;:::o;14234:419::-;;14438:2;14427:9;14423:18;14415:26;;14487:9;14481:4;14477:20;14473:1;14462:9;14458:17;14451:47;14515:131;14641:4;14515:131;:::i;:::-;14507:139;;14405:248;;;:::o;14659:419::-;;14863:2;14852:9;14848:18;14840:26;;14912:9;14906:4;14902:20;14898:1;14887:9;14883:17;14876:47;14940:131;15066:4;14940:131;:::i;:::-;14932:139;;14830:248;;;:::o;15084:419::-;;15288:2;15277:9;15273:18;15265:26;;15337:9;15331:4;15327:20;15323:1;15312:9;15308:17;15301:47;15365:131;15491:4;15365:131;:::i;:::-;15357:139;;15255:248;;;:::o;15509:419::-;;15713:2;15702:9;15698:18;15690:26;;15762:9;15756:4;15752:20;15748:1;15737:9;15733:17;15726:47;15790:131;15916:4;15790:131;:::i;:::-;15782:139;;15680:248;;;:::o;15934:419::-;;16138:2;16127:9;16123:18;16115:26;;16187:9;16181:4;16177:20;16173:1;16162:9;16158:17;16151:47;16215:131;16341:4;16215:131;:::i;:::-;16207:139;;16105:248;;;:::o;16359:419::-;;16563:2;16552:9;16548:18;16540:26;;16612:9;16606:4;16602:20;16598:1;16587:9;16583:17;16576:47;16640:131;16766:4;16640:131;:::i;:::-;16632:139;;16530:248;;;:::o;16784:419::-;;16988:2;16977:9;16973:18;16965:26;;17037:9;17031:4;17027:20;17023:1;17012:9;17008:17;17001:47;17065:131;17191:4;17065:131;:::i;:::-;17057:139;;16955:248;;;:::o;17209:419::-;;17413:2;17402:9;17398:18;17390:26;;17462:9;17456:4;17452:20;17448:1;17437:9;17433:17;17426:47;17490:131;17616:4;17490:131;:::i;:::-;17482:139;;17380:248;;;:::o;17634:419::-;;17838:2;17827:9;17823:18;17815:26;;17887:9;17881:4;17877:20;17873:1;17862:9;17858:17;17851:47;17915:131;18041:4;17915:131;:::i;:::-;17907:139;;17805:248;;;:::o;18059:419::-;;18263:2;18252:9;18248:18;18240:26;;18312:9;18306:4;18302:20;18298:1;18287:9;18283:17;18276:47;18340:131;18466:4;18340:131;:::i;:::-;18332:139;;18230:248;;;:::o;18484:419::-;;18688:2;18677:9;18673:18;18665:26;;18737:9;18731:4;18727:20;18723:1;18712:9;18708:17;18701:47;18765:131;18891:4;18765:131;:::i;:::-;18757:139;;18655:248;;;:::o;18909:419::-;;19113:2;19102:9;19098:18;19090:26;;19162:9;19156:4;19152:20;19148:1;19137:9;19133:17;19126:47;19190:131;19316:4;19190:131;:::i;:::-;19182:139;;19080:248;;;:::o;19334:419::-;;19538:2;19527:9;19523:18;19515:26;;19587:9;19581:4;19577:20;19573:1;19562:9;19558:17;19551:47;19615:131;19741:4;19615:131;:::i;:::-;19607:139;;19505:248;;;:::o;19759:419::-;;19963:2;19952:9;19948:18;19940:26;;20012:9;20006:4;20002:20;19998:1;19987:9;19983:17;19976:47;20040:131;20166:4;20040:131;:::i;:::-;20032:139;;19930:248;;;:::o;20184:419::-;;20388:2;20377:9;20373:18;20365:26;;20437:9;20431:4;20427:20;20423:1;20412:9;20408:17;20401:47;20465:131;20591:4;20465:131;:::i;:::-;20457:139;;20355:248;;;:::o;20609:222::-;;20740:2;20729:9;20725:18;20717:26;;20753:71;20821:1;20810:9;20806:17;20797:6;20753:71;:::i;:::-;20707:124;;;;:::o;20837:831::-;;21138:3;21127:9;21123:19;21115:27;;21152:71;21220:1;21209:9;21205:17;21196:6;21152:71;:::i;:::-;21233:80;21309:2;21298:9;21294:18;21285:6;21233:80;:::i;:::-;21360:9;21354:4;21350:20;21345:2;21334:9;21330:18;21323:48;21388:108;21491:4;21482:6;21388:108;:::i;:::-;21380:116;;21506:72;21574:2;21563:9;21559:18;21550:6;21506:72;:::i;:::-;21588:73;21656:3;21645:9;21641:19;21632:6;21588:73;:::i;:::-;21105:563;;;;;;;;:::o;21674:442::-;;21861:2;21850:9;21846:18;21838:26;;21874:71;21942:1;21931:9;21927:17;21918:6;21874:71;:::i;:::-;21955:72;22023:2;22012:9;22008:18;21999:6;21955:72;:::i;:::-;22037;22105:2;22094:9;22090:18;22081:6;22037:72;:::i;:::-;21828:288;;;;;;:::o;22122:553::-;;22337:3;22326:9;22322:19;22314:27;;22351:71;22419:1;22408:9;22404:17;22395:6;22351:71;:::i;:::-;22432:72;22500:2;22489:9;22485:18;22476:6;22432:72;:::i;:::-;22514;22582:2;22571:9;22567:18;22558:6;22514:72;:::i;:::-;22596;22664:2;22653:9;22649:18;22640:6;22596:72;:::i;:::-;22304:371;;;;;;;:::o;22681:214::-;;22808:2;22797:9;22793:18;22785:26;;22821:67;22885:1;22874:9;22870:17;22861:6;22821:67;:::i;:::-;22775:120;;;;:::o;22901:132::-;;22991:3;22983:11;;23021:4;23016:3;23012:14;23004:22;;22973:60;;;:::o;23039:114::-;;23140:5;23134:12;23124:22;;23113:40;;;:::o;23159:99::-;;23245:5;23239:12;23229:22;;23218:40;;;:::o;23264:113::-;;23366:4;23361:3;23357:14;23349:22;;23339:38;;;:::o;23383:184::-;;23516:6;23511:3;23504:19;23556:4;23551:3;23547:14;23532:29;;23494:73;;;;:::o;23573:169::-;;23691:6;23686:3;23679:19;23731:4;23726:3;23722:14;23707:29;;23669:73;;;;:::o;23748:305::-;;23807:20;23825:1;23807:20;:::i;:::-;23802:25;;23841:20;23859:1;23841:20;:::i;:::-;23836:25;;23995:1;23927:66;23923:74;23920:1;23917:81;23914:2;;;24001:18;;:::i;:::-;23914:2;24045:1;24042;24038:9;24031:16;;23792:261;;;;:::o;24059:185::-;;24116:20;24134:1;24116:20;:::i;:::-;24111:25;;24150:20;24168:1;24150:20;:::i;:::-;24145:25;;24189:1;24179:2;;24194:18;;:::i;:::-;24179:2;24236:1;24233;24229:9;24224:14;;24101:143;;;;:::o;24250:848::-;;;24342:6;24333:15;;24366:5;24357:14;;24380:712;24401:1;24391:8;24388:15;24380:712;;;24496:4;24491:3;24487:14;24481:4;24478:24;24475:2;;;24505:18;;:::i;:::-;24475:2;24555:1;24545:8;24541:16;24538:2;;;24970:4;24963:5;24959:16;24950:25;;24538:2;25020:4;25014;25010:15;25002:23;;25050:32;25073:8;25050:32;:::i;:::-;25038:44;;24380:712;;;24323:775;;;;;;;:::o;25104:281::-;;25186:23;25204:4;25186:23;:::i;:::-;25178:31;;25230:25;25246:8;25230:25;:::i;:::-;25218:37;;25274:104;25311:66;25301:8;25295:4;25274:104;:::i;:::-;25265:113;;25168:217;;;;:::o;25391:1073::-;;25636:8;25626:2;;25657:1;25648:10;;25659:5;;25626:2;25685:4;25675:2;;25702:1;25693:10;;25704:5;;25675:2;25771:4;25819:1;25814:27;;;;25855:1;25850:191;;;;25764:277;;25814:27;25832:1;25823:10;;25834:5;;;25850:191;25895:3;25885:8;25882:17;25879:2;;;25902:18;;:::i;:::-;25879:2;25951:8;25948:1;25944:16;25935:25;;25986:3;25979:5;25976:14;25973:2;;;25993:18;;:::i;:::-;25973:2;26026:5;;;25764:277;;26150:2;26140:8;26137:16;26131:3;26125:4;26122:13;26118:36;26100:2;26090:8;26087:16;26082:2;26076:4;26073:12;26069:35;26053:111;26050:2;;;26206:8;26200:4;26196:19;26187:28;;26241:3;26234:5;26231:14;26228:2;;;26248:18;;:::i;:::-;26228:2;26281:5;;26050:2;26321:42;26359:3;26349:8;26343:4;26340:1;26321:42;:::i;:::-;26306:57;;;;26395:4;26390:3;26386:14;26379:5;26376:25;26373:2;;;26404:18;;:::i;:::-;26373:2;26453:4;26446:5;26442:16;26433:25;;25451:1013;;;;;;:::o;26470:348::-;;26533:20;26551:1;26533:20;:::i;:::-;26528:25;;26567:20;26585:1;26567:20;:::i;:::-;26562:25;;26755:1;26687:66;26683:74;26680:1;26677:81;26672:1;26665:9;26658:17;26654:105;26651:2;;;26762:18;;:::i;:::-;26651:2;26810:1;26807;26803:9;26792:20;;26518:300;;;;:::o;26824:191::-;;26884:20;26902:1;26884:20;:::i;:::-;26879:25;;26918:20;26936:1;26918:20;:::i;:::-;26913:25;;26957:1;26954;26951:8;26948:2;;;26962:18;;:::i;:::-;26948:2;27007:1;27004;27000:9;26992:17;;26869:146;;;;:::o;27021:96::-;;27087:24;27105:5;27087:24;:::i;:::-;27076:35;;27066:51;;;:::o;27123:90::-;;27200:5;27193:13;27186:21;27175:32;;27165:48;;;:::o;27219:126::-;;27296:42;27289:5;27285:54;27274:65;;27264:81;;;:::o;27351:77::-;;27417:5;27406:16;;27396:32;;;:::o;27434:86::-;;27509:4;27502:5;27498:16;27487:27;;27477:43;;;:::o;27526:178::-;;27635:63;27692:5;27635:63;:::i;:::-;27622:76;;27612:92;;;:::o;27710:139::-;;27819:24;27837:5;27819:24;:::i;:::-;27806:37;;27796:53;;;:::o;27855:121::-;;27946:24;27964:5;27946:24;:::i;:::-;27933:37;;27923:53;;;:::o;27982:307::-;28050:1;28060:113;28074:6;28071:1;28068:13;28060:113;;;28159:1;28154:3;28150:11;28144:18;28140:1;28135:3;28131:11;28124:39;28096:2;28093:1;28089:10;28084:15;;28060:113;;;28191:6;28188:1;28185:13;28182:2;;;28271:1;28262:6;28257:3;28253:16;28246:27;28182:2;28031:258;;;;:::o;28295:180::-;28343:77;28340:1;28333:88;28440:4;28437:1;28430:15;28464:4;28461:1;28454:15;28481:180;28529:77;28526:1;28519:88;28626:4;28623:1;28616:15;28650:4;28647:1;28640:15;28667:102;;28759:2;28755:7;28750:2;28743:5;28739:14;28735:28;28725:38;;28715:54;;;:::o;28775:102::-;;28864:5;28861:1;28857:13;28836:34;;28826:51;;;:::o;28883:122::-;28956:24;28974:5;28956:24;:::i;:::-;28949:5;28946:35;28936:2;;28995:1;28992;28985:12;28936:2;28926:79;:::o;29011:116::-;29081:21;29096:5;29081:21;:::i;:::-;29074:5;29071:32;29061:2;;29117:1;29114;29107:12;29061:2;29051:76;:::o;29133:122::-;29206:24;29224:5;29206:24;:::i;:::-;29199:5;29196:35;29186:2;;29245:1;29242;29235:12;29186:2;29176:79;:::o

Swarm Source

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