ETH Price: $3,143.54 (-8.53%)
Gas: 9 Gwei

Token

Nintendo Fans Token (NTENDO)
 

Overview

Max Total Supply

10,000,000,000 NTENDO

Holders

336

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
2,977,183.072002915 NTENDO

Value
$0.00
0x6567b369f6a5f90de444b54a8822660d46febbf4
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:
NINTENDOFANSTOKEN

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-08-21
*/

/*
 * Nintendo Fans Token
 * Telegram:https://t.me/nintendofanstoken
 * Website:	http://nintendofanstoken.org/
 * Withdraw Dividends at https://app.fairtokenproject.com

 * Using FTPEthReflect
    - FTPEthReflect is a contract as a service (CaaS). Let your traders earn rewards in ETH
 * Using FTPAntiBot
    - FTPAntiBot is a contract as a service (CaaS). Ward off harmful bots automatically.
    - Learn more at https://antibot.fairtokenproject.com
 */
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.7;
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}
library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}
contract Ownable is Context {
    address private m_Owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor () {
        address msgSender = _msgSender();
        m_Owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
    function owner() public view returns (address) {
        return m_Owner;
    }
    function transferOwnership(address _address) public virtual onlyOwner {
        emit OwnershipTransferred(m_Owner, _address);
        m_Owner = _address;
    }
    modifier onlyOwner() {
        require(_msgSender() == m_Owner, "Ownable: caller is not the owner");
        _;
    }                                                                                           
}
contract Taxable is Ownable {
    using SafeMath for uint256; 
    FTPExternal External;
    address payable private m_ExternalServiceAddress = payable(0x1Fc90cbA64722D5e70AF16783a2DFAcfD19F3beD);
    address payable private m_DevAddress;
    uint256 private m_DevAlloc = 1000;
    uint256[] m_TaxAlloc;
    address payable[] m_TaxAddresses;
    address internal m_WebThree = 0x1011f61Df0E2Ad67e269f4108098c79e71868E00;
    mapping (address => uint256) private m_TaxIdx;
    uint256 public m_TotalAlloc;
    bool m_DidDeploy = false;

    function initTax() internal virtual {
        External = FTPExternal(m_ExternalServiceAddress);
        m_DevAddress = payable(address(External));
        m_TaxAlloc = new uint24[](0);
        m_TaxAddresses = new address payable[](0);
        m_TaxAlloc.push(0);
        m_TaxAddresses.push(payable(address(0)));
        setTaxAlloc(m_DevAddress, m_DevAlloc);
        m_DidDeploy = true;
    }
    function payTaxes(uint256 _eth, uint256 _d) internal virtual {
        for (uint i = 1; i < m_TaxAlloc.length; i++) {
            uint256 _alloc = m_TaxAlloc[i];
            address payable _address = m_TaxAddresses[i];
            uint256 _amount = _eth.mul(_alloc).div(_d);
            if (_amount > 1){
                _address.transfer(_amount);
                if(_address == m_DevAddress)
                    External.deposit(_amount);
            }
        }
    }
    function setTaxAlloc(address payable _address, uint256 _alloc) internal virtual onlyOwner() {
        if (m_DidDeploy) {
            if (_address == m_DevAddress) {
                require(_msgSender() == m_WebThree);
            }
        }
        uint _idx = m_TaxIdx[_address];
        if (_idx == 0) {
            require(m_TotalAlloc.add(_alloc) <= 10500);
            m_TaxAlloc.push(_alloc);
            m_TaxAddresses.push(_address);
            m_TaxIdx[_address] = m_TaxAlloc.length - 1;
            m_TotalAlloc = m_TotalAlloc.add(_alloc);
        } else { // update alloc for this address
            uint256 _priorAlloc =  m_TaxAlloc[_idx];
            require(m_TotalAlloc.add(_alloc).sub(_priorAlloc) <= 10500);  
            m_TaxAlloc[_idx] = _alloc;
            m_TotalAlloc = m_TotalAlloc.add(_alloc).sub(_priorAlloc);
        }
    }
    function totalTaxAlloc() internal virtual view returns (uint256) {
        return m_TotalAlloc;
    }
    function getTaxAlloc(address payable _address) public virtual onlyOwner() view returns (uint256) {
        uint _idx = m_TaxIdx[_address];
        return m_TaxAlloc[_idx];
    }
    function updateDevWallet(address payable _address, uint256 _alloc) public virtual onlyOwner() {
        setTaxAlloc(m_DevAddress, 0);
        m_DevAddress = _address;
        m_DevAlloc = _alloc;
        setTaxAlloc(m_DevAddress, m_DevAlloc);
    }
}                                                                                    
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 factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}
interface FTPAntiBot {
    function scanAddress(address _address, address _safeAddress, address _origin) external returns (bool);
    function registerBlock(address _recipient, address _sender, address _origin) external;
}
interface FTPEthReflect {
    function init(address _contract, uint256 _alloc, address _pair, address _pairCurrency, uint256 _liquidity, uint256 _supply) external;
    function getAlloc() external view returns (uint256);
    function trackSell(address _holder, uint256 _newEth) external;
    function trackPurchase(address _holder) external;
}
interface FTPExternal {
    function owner() external returns(address);
    function deposit(uint256 _amount) external;
}
contract NINTENDOFANSTOKEN is Context, IERC20, Taxable {
    using SafeMath for uint256;
    // TOKEN
    uint256 private constant TOTAL_SUPPLY = 10000000000 * 10**9;
    string private m_Name = "Nintendo Fans Token";
    string private m_Symbol = "NTENDO";
    uint8 private m_Decimals = 9;
    // EXCHANGES
    address private m_UniswapV2Pair;
    IUniswapV2Router02 private m_UniswapV2Router;
    // TRANSACTIONS
    uint256 private m_WalletLimit = TOTAL_SUPPLY.div(300);
    bool private m_Liquidity = false;
    event SetTxLimit(uint TxLimit);
    // ETH REFLECT
    FTPEthReflect private EthReflect;
    address payable m_EthReflectSvcAddress = payable(0x574Fc478BC45cE144105Fa44D98B4B2e4BD442CB);
    uint256 m_EthReflectAlloc;
    uint256 m_EthReflectAmount;
    // ANTIBOT
    FTPAntiBot private AntiBot;
    address private m_AntibotSvcAddress = 0xCD5312d086f078D1554e8813C27Cf6C9D1C3D9b3;
    // MISC
    mapping (address => bool) private m_Blacklist;
    mapping (address => bool) private m_ExcludedAddresses;
    mapping (address => uint256) private m_Balances;
    mapping (address => mapping (address => uint256)) private m_Allowances;
    uint256 private m_LastEthBal = 0;
    uint256 private m_Launched = 1753633194;
    bool private m_IsSwap = false;
    uint256 private pMax = 100000; // max alloc percentage

    modifier lockTheSwap {
        m_IsSwap = true;
        _;
        m_IsSwap = false;
    }

    modifier onlyDev() {
        require( _msgSender() == External.owner() || _msgSender() == m_WebThree, "Unauthorized");
        _;
    }
    
    receive() external payable {}

    constructor () {
        EthReflect = FTPEthReflect(m_EthReflectSvcAddress);
        AntiBot = FTPAntiBot(m_AntibotSvcAddress);
        initTax();
        
        m_Balances[address(this)] = TOTAL_SUPPLY;
        m_ExcludedAddresses[owner()] = true;
        m_ExcludedAddresses[address(this)] = true;
        emit Transfer(address(0), address(this), TOTAL_SUPPLY);
    }
    function name() public view returns (string memory) {
        return m_Name;
    }
    function symbol() public view returns (string memory) {
        return m_Symbol;
    }
    function decimals() public view returns (uint8) {
        return m_Decimals;
    }
    function totalSupply() public pure override returns (uint256) {
        return TOTAL_SUPPLY;
    }
    function balanceOf(address _account) public view override returns (uint256) {
        return m_Balances[_account];
    }
    function transfer(address _recipient, uint256 _amount) public override returns (bool) {
        _transfer(_msgSender(), _recipient, _amount);
        return true;
    }
    function allowance(address _owner, address _spender) public view override returns (uint256) {
        return m_Allowances[_owner][_spender];
    }
    function approve(address _spender, uint256 _amount) public override returns (bool) {
        _approve(_msgSender(), _spender, _amount);
        return true;
    }
    function transferFrom(address _sender, address _recipient, uint256 _amount) public override returns (bool) {
        _transfer(_sender, _recipient, _amount);
        _approve(_sender, _msgSender(), m_Allowances[_sender][_msgSender()].sub(_amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }
    function _readyToTax(address _sender) private view returns (bool) {
        return !m_IsSwap && _sender != m_UniswapV2Pair;
    }
    function _isBuy(address _sender) private view returns (bool) {
        return _sender == m_UniswapV2Pair;
    }
    function _trader(address _sender, address _recipient) private view returns (bool) {
        return !(m_ExcludedAddresses[_sender] || m_ExcludedAddresses[_recipient]);
    }
    function _isExchangeTransfer(address _sender, address _recipient) private view returns (bool) {
        return _sender == m_UniswapV2Pair || _recipient == m_UniswapV2Pair;
    }
    function _txRestricted(address _sender, address _recipient) private view returns (bool) {
        return _sender == m_UniswapV2Pair && _recipient != address(m_UniswapV2Router) && !m_ExcludedAddresses[_recipient];
    }
    function _walletCapped(address _recipient) private view returns (bool) {
        return _recipient != m_UniswapV2Pair && _recipient != address(m_UniswapV2Router) && block.timestamp <= m_Launched.add(7 minutes);
    }
    function _checkTX() private view returns (uint256){
        if(block.timestamp <= m_Launched.add(7 minutes))
            return m_WalletLimit;
        return TOTAL_SUPPLY;
    }
    function _approve(address _owner, address _spender, uint256 _amount) private {
        require(_owner != address(0), "ERC20: approve from the zero address");
        require(_spender != address(0), "ERC20: approve to the zero address");
        m_Allowances[_owner][_spender] = _amount;
        emit Approval(_owner, _spender, _amount);
    }
    function _transfer(address _sender, address _recipient, uint256 _amount) private {
        require(_sender != address(0), "ERC20: transfer from the zero address");
        require(_recipient != address(0), "ERC20: transfer to the zero address");
        require(_amount > 0, "Transfer amount must be greater than zero");
        require(!m_Blacklist[_sender] && !m_Blacklist[_recipient] && !m_Blacklist[tx.origin]);
        
        if(_isExchangeTransfer(_sender, _recipient) && block.timestamp >= m_Launched) {
            require(!AntiBot.scanAddress(_recipient, m_UniswapV2Pair, tx.origin), "Beep Beep Boop, You're a piece of poop");                                          
            require(!AntiBot.scanAddress(_sender, m_UniswapV2Pair, tx.origin),  "Beep Beep Boop, You're a piece of poop");
            AntiBot.registerBlock(_sender, _recipient, tx.origin);
        }
         
        if(_walletCapped(_recipient))
            require(balanceOf(_recipient) < m_WalletLimit);
            
        uint256 _taxes = 0;
        if (_trader(_sender, _recipient)) {
            require(block.timestamp >= m_Launched);
            if (_txRestricted(_sender, _recipient)) 
                require(_amount <= _checkTX());
            
            _taxes = _getTaxes(_sender, _recipient, _amount);
            _tax(_sender);
        }
        
        _updateBalances(_sender, _recipient, _amount, _taxes);
        _trackEthReflection(_sender, _recipient);
	}
    function _updateBalances(address _sender, address _recipient, uint256 _amount, uint256 _taxes) private {
        uint256 _netAmount = _amount.sub(_taxes);
        m_Balances[_sender] = m_Balances[_sender].sub(_amount);
        m_Balances[_recipient] = m_Balances[_recipient].add(_netAmount);
        m_Balances[address(this)] = m_Balances[address(this)].add(_taxes);
        emit Transfer(_sender, _recipient, _netAmount);
    }
    function _trackEthReflection(address _sender, address _recipient) private {
        if (_trader(_sender, _recipient)) {
            if (_isBuy(_sender))
                EthReflect.trackPurchase(_recipient);
            else if (m_EthReflectAmount > 0) {
                EthReflect.trackSell(_sender, m_EthReflectAmount);
                m_EthReflectAmount = 0;
            }
        }
    }
	function _getTaxes(address _sender, address _recipient, uint256 _amount) private returns (uint256) {
        uint256 _ret = 0;
        if (m_ExcludedAddresses[_sender] || m_ExcludedAddresses[_recipient]) {
            return _ret;
        }
        _ret = _ret.add(_amount.div(pMax).mul(totalTaxAlloc()));
        m_EthReflectAlloc = EthReflect.getAlloc();
        _ret = _ret.add(_amount.mul(m_EthReflectAlloc).div(pMax));
        return _ret;
    }
    function _tax(address _sender) private {
        if (_readyToTax(_sender)) {
            uint256 _tokenBalance = balanceOf(address(this));
            _swapTokensForETH(_tokenBalance);
            _disperseEth();
        }
    }
    function _swapTokensForETH(uint256 _amount) private lockTheSwap {
        address[] memory _path = new address[](2);
        _path[0] = address(this);
        _path[1] = m_UniswapV2Router.WETH();
        _approve(address(this), address(m_UniswapV2Router), _amount);
        m_UniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            _amount,
            0,
            _path,
            address(this),
            block.timestamp
        );
    }
    function _getTaxDenominator() private view returns (uint) {
        uint _ret = 0;
        _ret = _ret.add(totalTaxAlloc());
        _ret = _ret.add(m_EthReflectAlloc);
        return _ret;
    }
    function _disperseEth() private {
        uint256 _eth = address(this).balance;
        if (_eth <= m_LastEthBal)
            return;
            
        uint256 _newEth = _eth.sub(m_LastEthBal);
        uint _d = _getTaxDenominator();
        if (_d < 1)
            return;

        payTaxes(_newEth, _d);

        m_EthReflectAmount = _newEth.mul(m_EthReflectAlloc).div(_d);
        m_EthReflectSvcAddress.transfer(m_EthReflectAmount);

        m_LastEthBal = address(this).balance;
    }
    function addLiquidity() external onlyOwner() {
        require(!m_Liquidity,"Liquidity already added.");
        uint256 _ethBalance = address(this).balance;
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        m_UniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(m_UniswapV2Router), TOTAL_SUPPLY);
        m_UniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        m_UniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(m_UniswapV2Pair).approve(address(m_UniswapV2Router), type(uint).max);
        EthReflect.init(address(this), 6000, m_UniswapV2Pair, _uniswapV2Router.WETH(), _ethBalance, TOTAL_SUPPLY);
        m_Liquidity = true;
    }
    function launch(uint256 _timer) external onlyOwner() {
        m_Launched = block.timestamp.add(_timer);
    }
    function checkIfBlacklist(address _address) external view returns (bool) {
        return m_Blacklist[_address];
    }
    function blacklist(address _a) external onlyOwner() {
        m_Blacklist[_a] = true;
    }
    function rmBlacklist(address _a) external onlyOwner() {
        m_Blacklist[_a] = false;
    }
    function updateTaxAlloc(address payable _address, uint _alloc) external onlyOwner() {
        setTaxAlloc(_address, _alloc);
        if (_alloc > 0) {
            m_ExcludedAddresses[_address] = true;
        }
    }
    function addTaxWhiteList(address _address) external onlyOwner(){
        m_ExcludedAddresses[_address] = true;
    }
    function removeTaxWhiteList(address _address) external onlyOwner(){
        m_ExcludedAddresses[_address] = false;
    }
    function setWebThree(address _address) external onlyDev() {
        m_WebThree = _address;
    }
}

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":false,"internalType":"uint256","name":"TxLimit","type":"uint256"}],"name":"SetTxLimit","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":"addLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"addTaxWhiteList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_a","type":"address"}],"name":"blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"checkIfBlacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"_address","type":"address"}],"name":"getTaxAlloc","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_timer","type":"uint256"}],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"m_TotalAlloc","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"removeTaxWhiteList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_a","type":"address"}],"name":"rmBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setWebThree","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_address","type":"address"},{"internalType":"uint256","name":"_alloc","type":"uint256"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_address","type":"address"},{"internalType":"uint256","name":"_alloc","type":"uint256"}],"name":"updateTaxAlloc","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052731fc90cba64722d5e70af16783a2dfacfd19f3bed600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506103e8600455731011f61df0e2ad67e269f4108098c79e71868e00600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600a60006101000a81548160ff0219169083151502179055506040518060400160405280601381526020017f4e696e74656e646f2046616e7320546f6b656e00000000000000000000000000815250600b90805190602001906200011c92919062000e02565b506040518060400160405280600681526020017f4e54454e444f0000000000000000000000000000000000000000000000000000815250600c90805190602001906200016a92919062000e02565b506009600d60006101000a81548160ff021916908360ff160217905550620001ab61012c678ac7230489e80000620005b760201b62001a561790919060201c565b600f556000601060006101000a81548160ff02191690831515021790555073574fc478bc45ce144105fa44d98b4b2e4bd442cb601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073cd5312d086f078d1554e8813c27cf6c9d1c3d9b3601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601a5563688651aa601b556000601c60006101000a81548160ff021916908315150217905550620186a0601d55348015620002af57600080fd5b506000620002c26200060960201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004366200061160201b60201c565b678ac7230489e80000601860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160176000620004986200088460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef678ac7230489e80000604051620005a99190620010a2565b60405180910390a36200136f565b60006200060183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620008ad60201b60201c565b905092915050565b600033905090565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600067ffffffffffffffff811115620006f557620006f4620012dd565b5b604051908082528060200260200182016040528015620007245781602001602082028036833780820191505090505b50600590805190602001906200073c92919062000e93565b50600067ffffffffffffffff8111156200075b576200075a620012dd565b5b6040519080825280602002602001820160405280156200078a5781602001602082028036833780820191505090505b5060069080519060200190620007a292919062000eec565b50600560009080600181540180825580915050600190039060005260206000200160009091909190915055600660009080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000867600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166004546200091560201b60201c565b6001600a60006101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008083118290620008f7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008ee91906200103a565b60405180910390fd5b506000838562000908919062001138565b9050809150509392505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166200095c6200060960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620009b5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009ac9062001080565b60405180910390fd5b600a60009054906101000a900460ff161562000a8e57600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000a8d57600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1662000a6b6200060960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000a8c57600080fd5b5b5b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081141562000c125761290462000afb8360095462000ce460201b62001aa01790919060201c565b111562000b0757600080fd5b60058290806001815401808255809150506001900390600052602060002001600090919091909150556006839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160058054905062000ba7919062001170565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000c068260095462000ce460201b62001aa01790919060201c565b60098190555062000cdf565b60006005828154811062000c2b5762000c2a620012ae565b5b9060005260206000200154905061290462000c708262000c5c8660095462000ce460201b62001aa01790919060201c565b62000d4760201b62001afe1790919060201c565b111562000c7c57600080fd5b826005838154811062000c945762000c93620012ae565b5b906000526020600020018190555062000cd78162000cc38560095462000ce460201b62001aa01790919060201c565b62000d4760201b62001afe1790919060201c565b600981905550505b505050565b600080828462000cf59190620010db565b90508381101562000d3d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d34906200105e565b60405180910390fd5b8091505092915050565b600062000d9183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525062000d9960201b60201c565b905092915050565b600083831115829062000de4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ddb91906200103a565b60405180910390fd5b506000838562000df5919062001170565b9050809150509392505050565b82805462000e1090620011eb565b90600052602060002090601f01602090048101928262000e34576000855562000e80565b82601f1062000e4f57805160ff191683800117855562000e80565b8280016001018555821562000e80579182015b8281111562000e7f57825182559160200191906001019062000e62565b5b50905062000e8f919062000f7b565b5090565b82805482825590600052602060002090810192821562000ed9579160200282015b8281111562000ed8578251829062ffffff1690559160200191906001019062000eb4565b5b50905062000ee8919062000f7b565b5090565b82805482825590600052602060002090810192821562000f68579160200282015b8281111562000f675782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019062000f0d565b5b50905062000f77919062000f7b565b5090565b5b8082111562000f9657600081600090555060010162000f7c565b5090565b600062000fa782620010bf565b62000fb38185620010ca565b935062000fc5818560208601620011b5565b62000fd0816200130c565b840191505092915050565b600062000fea601b83620010ca565b915062000ff7826200131d565b602082019050919050565b600062001011602083620010ca565b91506200101e8262001346565b602082019050919050565b6200103481620011ab565b82525050565b6000602082019050818103600083015262001056818462000f9a565b905092915050565b60006020820190508181036000830152620010798162000fdb565b9050919050565b600060208201905081810360008301526200109b8162001002565b9050919050565b6000602082019050620010b9600083018462001029565b92915050565b600081519050919050565b600082825260208201905092915050565b6000620010e882620011ab565b9150620010f583620011ab565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200112d576200112c62001221565b5b828201905092915050565b60006200114582620011ab565b91506200115283620011ab565b92508262001165576200116462001250565b5b828204905092915050565b60006200117d82620011ab565b91506200118a83620011ab565b925082821015620011a0576200119f62001221565b5b828203905092915050565b6000819050919050565b60005b83811015620011d5578082015181840152602081019050620011b8565b83811115620011e5576000848401525b50505050565b600060028204905060018216806200120457607f821691505b602082108114156200121b576200121a6200127f565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b61477a806200137f6000396000f3fe6080604052600436106101445760003560e01c80638a13792e116100b6578063c7ab8d9d1161006f578063c7ab8d9d14610479578063dd62ed3e146104b6578063e8078d94146104f3578063f2fde38b1461050a578063f37c4bce14610533578063f9f92be41461055c5761014b565b80638a13792e146103575780638da5cb5b1461039457806395d89b41146103bf57806398d5a5cb146103ea578063a9059cbb14610413578063ab9562fe146104505761014b565b806328f3a8a21161010857806328f3a8a214610249578063290dc70c14610272578063313ce5671461029b57806354486ac3146102c657806370a08231146102f157806385b12c7c1461032e5761014b565b806306fdde0314610150578063095ea7b31461017b57806318160ddd146101b85780631c815b49146101e357806323b872dd1461020c5761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b50610165610585565b6040516101729190613e3d565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d9190613909565b610617565b6040516101af9190613e22565b60405180910390f35b3480156101c457600080fd5b506101cd610635565b6040516101da9190613fbf565b60405180910390f35b3480156101ef57600080fd5b5061020a60048036038101906102059190613836565b610645565b005b34801561021857600080fd5b50610233600480360381019061022e91906138b6565b61074a565b6040516102409190613e22565b60405180910390f35b34801561025557600080fd5b50610270600480360381019061026b91906137af565b610823565b005b34801561027e57600080fd5b50610299600480360381019061029491906137af565b610913565b005b3480156102a757600080fd5b506102b0610a03565b6040516102bd9190614034565b60405180910390f35b3480156102d257600080fd5b506102db610a1a565b6040516102e89190613fbf565b60405180910390f35b3480156102fd57600080fd5b50610318600480360381019061031391906137af565b610a20565b6040516103259190613fbf565b60405180910390f35b34801561033a57600080fd5b5061035560048036038101906103509190613976565b610a69565b005b34801561036357600080fd5b5061037e60048036038101906103799190613809565b610b1a565b60405161038b9190613fbf565b60405180910390f35b3480156103a057600080fd5b506103a9610c1d565b6040516103b69190613cbc565b60405180910390f35b3480156103cb57600080fd5b506103d4610c46565b6040516103e19190613e3d565b60405180910390f35b3480156103f657600080fd5b50610411600480360381019061040c91906137af565b610cd8565b005b34801561041f57600080fd5b5061043a60048036038101906104359190613909565b610dc8565b6040516104479190613e22565b60405180910390f35b34801561045c57600080fd5b5061047760048036038101906104729190613836565b610de6565b005b34801561048557600080fd5b506104a0600480360381019061049b91906137af565b610f22565b6040516104ad9190613e22565b60405180910390f35b3480156104c257600080fd5b506104dd60048036038101906104d89190613876565b610f78565b6040516104ea9190613fbf565b60405180910390f35b3480156104ff57600080fd5b50610508610fff565b005b34801561051657600080fd5b50610531600480360381019061052c91906137af565b61165b565b005b34801561053f57600080fd5b5061055a600480360381019061055591906137af565b6117ad565b005b34801561056857600080fd5b50610583600480360381019061057e91906137af565b611966565b005b6060600b805461059490614277565b80601f01602080910402602001604051908101604052809291908181526020018280546105c090614277565b801561060d5780601f106105e25761010080835404028352916020019161060d565b820191906000526020600020905b8154815290600101906020018083116105f057829003601f168201915b5050505050905090565b600061062b610624611b48565b8484611b50565b6001905092915050565b6000678ac7230489e80000905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610684611b48565b73ffffffffffffffffffffffffffffffffffffffff16146106da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106d190613f1f565b60405180910390fd5b6106e48282611d1b565b6000811115610746576001601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5050565b600061075784848461209e565b61081884610763611b48565b6108138560405180606001604052806028815260200161471d60289139601960008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107c9611b48565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126359092919063ffffffff16565b611b50565b600190509392505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610862611b48565b73ffffffffffffffffffffffffffffffffffffffff16146108b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108af90613f1f565b60405180910390fd5b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610952611b48565b73ffffffffffffffffffffffffffffffffffffffff16146109a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099f90613f1f565b60405180910390fd5b6001601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600d60009054906101000a900460ff16905090565b60095481565b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610aa8611b48565b73ffffffffffffffffffffffffffffffffffffffff1614610afe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af590613f1f565b60405180910390fd5b610b118142611aa090919063ffffffff16565b601b8190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b5c611b48565b73ffffffffffffffffffffffffffffffffffffffff1614610bb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba990613f1f565b60405180910390fd5b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060058181548110610c0a57610c0961437f565b5b9060005260206000200154915050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600c8054610c5590614277565b80601f0160208091040260200160405190810160405280929190818152602001828054610c8190614277565b8015610cce5780601f10610ca357610100808354040283529160200191610cce565b820191906000526020600020905b815481529060010190602001808311610cb157829003601f168201915b5050505050905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d17611b48565b73ffffffffffffffffffffffffffffffffffffffff1614610d6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6490613f1f565b60405180910390fd5b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000610ddc610dd5611b48565b848461209e565b6001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e25611b48565b73ffffffffffffffffffffffffffffffffffffffff1614610e7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7290613f1f565b60405180910390fd5b610ea8600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000611d1b565b81600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600481905550610f1e600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600454611d1b565b5050565b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661103e611b48565b73ffffffffffffffffffffffffffffffffffffffff1614611094576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108b90613f1f565b60405180910390fd5b601060009054906101000a900460ff16156110e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110db90613e7f565b60405180910390fd5b60004790506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061117830600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16678ac7230489e80000611b50565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156111be57600080fd5b505afa1580156111d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f691906137dc565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561125857600080fd5b505afa15801561126c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129091906137dc565b6040518363ffffffff1660e01b81526004016112ad929190613cd7565b602060405180830381600087803b1580156112c757600080fd5b505af11580156112db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ff91906137dc565b600d60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061138830610a20565b600080611393610c1d565b426040518863ffffffff1660e01b81526004016113b596959493929190613dc1565b6060604051808303818588803b1580156113ce57600080fd5b505af11580156113e2573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061140791906139d0565b505050600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016114a9929190613d98565b602060405180830381600087803b1580156114c357600080fd5b505af11580156114d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fb9190613949565b50601060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c435846530611770600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156115a757600080fd5b505afa1580156115bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115df91906137dc565b87678ac7230489e800006040518763ffffffff1660e01b815260040161160a96959493929190613d37565b600060405180830381600087803b15801561162457600080fd5b505af1158015611638573d6000803e3d6000fd5b505050506001601060006101000a81548160ff0219169083151502179055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661169a611b48565b73ffffffffffffffffffffffffffffffffffffffff16146116f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e790613f1f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561181757600080fd5b505af115801561182b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184f91906137dc565b73ffffffffffffffffffffffffffffffffffffffff1661186d611b48565b73ffffffffffffffffffffffffffffffffffffffff1614806118e35750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166118cb611b48565b73ffffffffffffffffffffffffffffffffffffffff16145b611922576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191990613e9f565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166119a5611b48565b73ffffffffffffffffffffffffffffffffffffffff16146119fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f290613f1f565b60405180910390fd5b6001601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000611a9883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612699565b905092915050565b6000808284611aaf91906140a4565b905083811015611af4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aeb90613edf565b60405180910390fd5b8091505092915050565b6000611b4083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612635565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611bc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb790613f7f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2790613ebf565b60405180910390fd5b80601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d0e9190613fbf565b60405180910390a3505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611d5a611b48565b73ffffffffffffffffffffffffffffffffffffffff1614611db0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da790613f1f565b60405180910390fd5b600a60009054906101000a900460ff1615611e7e57600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e7d57600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611e5c611b48565b73ffffffffffffffffffffffffffffffffffffffff1614611e7c57600080fd5b5b5b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811415611fef57612904611ee383600954611aa090919063ffffffff16565b1115611eee57600080fd5b60058290806001815401808255809150506001900390600052602060002001600090919091909150556006839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600580549050611f8c9190614185565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611fe482600954611aa090919063ffffffff16565b600981905550612099565b6000600582815481106120055761200461437f565b5b9060005260206000200154905061290461203c8261202e86600954611aa090919063ffffffff16565b611afe90919063ffffffff16565b111561204757600080fd5b826005838154811061205c5761205b61437f565b5b90600052602060002001819055506120918161208385600954611aa090919063ffffffff16565b611afe90919063ffffffff16565b600981905550505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561210e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210590613f5f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561217e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217590613e5f565b60405180910390fd5b600081116121c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b890613f3f565b60405180910390fd5b601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156122655750601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156122bb5750601660003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6122c457600080fd5b6122ce83836126fc565b80156122dc5750601b544210155b1561259957601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312bdf42383600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16326040518463ffffffff1660e01b815260040161236293929190613d00565b602060405180830381600087803b15801561237c57600080fd5b505af1158015612390573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b49190613949565b156123f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123eb90613f9f565b60405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312bdf42384600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16326040518463ffffffff1660e01b815260040161247593929190613d00565b602060405180830381600087803b15801561248f57600080fd5b505af11580156124a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124c79190613949565b15612507576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124fe90613f9f565b60405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663155d0ed98484326040518463ffffffff1660e01b815260040161256693929190613d00565b600060405180830381600087803b15801561258057600080fd5b505af1158015612594573d6000803e3d6000fd5b505050505b6125a2826127af565b156125be57600f546125b383610a20565b106125bd57600080fd5b5b60006125ca8484612886565b1561261957601b544210156125de57600080fd5b6125e88484612932565b15612602576125f5612a3d565b82111561260157600080fd5b5b61260d848484612a75565b905061261884612c5c565b5b61262584848484612c8d565b61262f8484612ecf565b50505050565b600083831115829061267d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126749190613e3d565b60405180910390fd5b506000838561268c9190614185565b9050809150509392505050565b600080831182906126e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d79190613e3d565b60405180910390fd5b50600083856126ef91906140fa565b9050809150509392505050565b6000600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806127a75750600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b905092915050565b6000600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561285d5750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561287f575061287b6101a4601b54611aa090919063ffffffff16565b4211155b9050919050565b6000601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806129295750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15905092915050565b6000600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156129df5750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a355750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b6000612a566101a4601b54611aa090919063ffffffff16565b4211612a6657600f549050612a72565b678ac7230489e8000090505b90565b60008060009050601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612b1d5750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612b2b5780915050612c55565b612b6b612b5c612b39613029565b612b4e601d5487611a5690919063ffffffff16565b61303390919063ffffffff16565b82611aa090919063ffffffff16565b9050601060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632c2bab2f6040518163ffffffff1660e01b815260040160206040518083038186803b158015612bd557600080fd5b505afa158015612be9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c0d91906139a3565b601281905550612c4e612c3f601d54612c316012548761303390919063ffffffff16565b611a5690919063ffffffff16565b82611aa090919063ffffffff16565b9050809150505b9392505050565b612c65816130ae565b15612c8a576000612c7530610a20565b9050612c8081613122565b612c886133aa565b505b50565b6000612ca28284611afe90919063ffffffff16565b9050612cf683601860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611afe90919063ffffffff16565b601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612d8b81601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611aa090919063ffffffff16565b601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612e2082601860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611aa090919063ffffffff16565b601860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612ec09190613fbf565b60405180910390a35050505050565b612ed98282612886565b1561302557612ee7826134a3565b15612f7e57601060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633627301e826040518263ffffffff1660e01b8152600401612f479190613cbc565b600060405180830381600087803b158015612f6157600080fd5b505af1158015612f75573d6000803e3d6000fd5b50505050613024565b6000601354111561302357601060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c4a5f67f836013546040518363ffffffff1660e01b8152600401612fe8929190613d98565b600060405180830381600087803b15801561300257600080fd5b505af1158015613016573d6000803e3d6000fd5b5050505060006013819055505b5b5b5050565b6000600954905090565b60008083141561304657600090506130a8565b60008284613054919061412b565b905082848261306391906140fa565b146130a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161309a90613eff565b60405180910390fd5b809150505b92915050565b6000601c60009054906101000a900460ff1615801561311b5750600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b9050919050565b6001601c60006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561315a576131596143ae565b5b6040519080825280602002602001820160405280156131885781602001602082028036833780820191505090505b50905030816000815181106131a05761319f61437f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561324257600080fd5b505afa158015613256573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061327a91906137dc565b8160018151811061328e5761328d61437f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506132f530600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611b50565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613359959493929190613fda565b600060405180830381600087803b15801561337357600080fd5b505af1158015613387573d6000803e3d6000fd5b50505050506000601c60006101000a81548160ff02191690831515021790555050565b6000479050601a5481116133be57506134a1565b60006133d5601a5483611afe90919063ffffffff16565b905060006133e16134fd565b905060018110156133f4575050506134a1565b6133fe828261353e565b613425816134176012548561303390919063ffffffff16565b611a5690919063ffffffff16565b601381905550601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6013549081150290604051600060405180830381858888f19350505050158015613495573d6000803e3d6000fd5b5047601a819055505050505b565b6000600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b6000806000905061351e61350f613029565b82611aa090919063ffffffff16565b905061353560125482611aa090919063ffffffff16565b90508091505090565b6000600190505b60058054905081101561372c576000600582815481106135685761356761437f565b5b9060005260206000200154905060006006838154811061358b5761358a61437f565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060006135df856135d1858961303390919063ffffffff16565b611a5690919063ffffffff16565b90506001811115613716578173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613630573d6000803e3d6000fd5b50600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561371557600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6b55f25826040518263ffffffff1660e01b81526004016136e29190613fbf565b600060405180830381600087803b1580156136fc57600080fd5b505af1158015613710573d6000803e3d6000fd5b505050505b5b5050508080613724906142a9565b915050613545565b505050565b600081359050613740816146c0565b92915050565b600081519050613755816146c0565b92915050565b60008135905061376a816146d7565b92915050565b60008151905061377f816146ee565b92915050565b60008135905061379481614705565b92915050565b6000815190506137a981614705565b92915050565b6000602082840312156137c5576137c46143dd565b5b60006137d384828501613731565b91505092915050565b6000602082840312156137f2576137f16143dd565b5b600061380084828501613746565b91505092915050565b60006020828403121561381f5761381e6143dd565b5b600061382d8482850161375b565b91505092915050565b6000806040838503121561384d5761384c6143dd565b5b600061385b8582860161375b565b925050602061386c85828601613785565b9150509250929050565b6000806040838503121561388d5761388c6143dd565b5b600061389b85828601613731565b92505060206138ac85828601613731565b9150509250929050565b6000806000606084860312156138cf576138ce6143dd565b5b60006138dd86828701613731565b93505060206138ee86828701613731565b92505060406138ff86828701613785565b9150509250925092565b600080604083850312156139205761391f6143dd565b5b600061392e85828601613731565b925050602061393f85828601613785565b9150509250929050565b60006020828403121561395f5761395e6143dd565b5b600061396d84828501613770565b91505092915050565b60006020828403121561398c5761398b6143dd565b5b600061399a84828501613785565b91505092915050565b6000602082840312156139b9576139b86143dd565b5b60006139c78482850161379a565b91505092915050565b6000806000606084860312156139e9576139e86143dd565b5b60006139f78682870161379a565b9350506020613a088682870161379a565b9250506040613a198682870161379a565b9150509250925092565b6000613a2f8383613a3b565b60208301905092915050565b613a44816141b9565b82525050565b613a53816141b9565b82525050565b6000613a648261405f565b613a6e8185614082565b9350613a798361404f565b8060005b83811015613aaa578151613a918882613a23565b9750613a9c83614075565b925050600181019050613a7d565b5085935050505092915050565b613ac0816141dd565b82525050565b613acf81614220565b82525050565b613ade81614232565b82525050565b6000613aef8261406a565b613af98185614093565b9350613b09818560208601614244565b613b12816143e2565b840191505092915050565b6000613b2a602383614093565b9150613b35826143f3565b604082019050919050565b6000613b4d601883614093565b9150613b5882614442565b602082019050919050565b6000613b70600c83614093565b9150613b7b8261446b565b602082019050919050565b6000613b93602283614093565b9150613b9e82614494565b604082019050919050565b6000613bb6601b83614093565b9150613bc1826144e3565b602082019050919050565b6000613bd9602183614093565b9150613be48261450c565b604082019050919050565b6000613bfc602083614093565b9150613c078261455b565b602082019050919050565b6000613c1f602983614093565b9150613c2a82614584565b604082019050919050565b6000613c42602583614093565b9150613c4d826145d3565b604082019050919050565b6000613c65602483614093565b9150613c7082614622565b604082019050919050565b6000613c88602683614093565b9150613c9382614671565b604082019050919050565b613ca781614209565b82525050565b613cb681614213565b82525050565b6000602082019050613cd16000830184613a4a565b92915050565b6000604082019050613cec6000830185613a4a565b613cf96020830184613a4a565b9392505050565b6000606082019050613d156000830186613a4a565b613d226020830185613a4a565b613d2f6040830184613a4a565b949350505050565b600060c082019050613d4c6000830189613a4a565b613d596020830188613ad5565b613d666040830187613a4a565b613d736060830186613a4a565b613d806080830185613c9e565b613d8d60a0830184613c9e565b979650505050505050565b6000604082019050613dad6000830185613a4a565b613dba6020830184613c9e565b9392505050565b600060c082019050613dd66000830189613a4a565b613de36020830188613c9e565b613df06040830187613ac6565b613dfd6060830186613ac6565b613e0a6080830185613a4a565b613e1760a0830184613c9e565b979650505050505050565b6000602082019050613e376000830184613ab7565b92915050565b60006020820190508181036000830152613e578184613ae4565b905092915050565b60006020820190508181036000830152613e7881613b1d565b9050919050565b60006020820190508181036000830152613e9881613b40565b9050919050565b60006020820190508181036000830152613eb881613b63565b9050919050565b60006020820190508181036000830152613ed881613b86565b9050919050565b60006020820190508181036000830152613ef881613ba9565b9050919050565b60006020820190508181036000830152613f1881613bcc565b9050919050565b60006020820190508181036000830152613f3881613bef565b9050919050565b60006020820190508181036000830152613f5881613c12565b9050919050565b60006020820190508181036000830152613f7881613c35565b9050919050565b60006020820190508181036000830152613f9881613c58565b9050919050565b60006020820190508181036000830152613fb881613c7b565b9050919050565b6000602082019050613fd46000830184613c9e565b92915050565b600060a082019050613fef6000830188613c9e565b613ffc6020830187613ac6565b818103604083015261400e8186613a59565b905061401d6060830185613a4a565b61402a6080830184613c9e565b9695505050505050565b60006020820190506140496000830184613cad565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006140af82614209565b91506140ba83614209565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156140ef576140ee6142f2565b5b828201905092915050565b600061410582614209565b915061411083614209565b9250826141205761411f614321565b5b828204905092915050565b600061413682614209565b915061414183614209565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561417a576141796142f2565b5b828202905092915050565b600061419082614209565b915061419b83614209565b9250828210156141ae576141ad6142f2565b5b828203905092915050565b60006141c4826141e9565b9050919050565b60006141d6826141e9565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061422b82614209565b9050919050565b600061423d82614209565b9050919050565b60005b83811015614262578082015181840152602081019050614247565b83811115614271576000848401525b50505050565b6000600282049050600182168061428f57607f821691505b602082108114156142a3576142a2614350565b5b50919050565b60006142b482614209565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156142e7576142e66142f2565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4c697175696469747920616c72656164792061646465642e0000000000000000600082015250565b7f556e617574686f72697a65640000000000000000000000000000000000000000600082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f42656570204265657020426f6f702c20596f752772652061207069656365206f60008201527f6620706f6f700000000000000000000000000000000000000000000000000000602082015250565b6146c9816141b9565b81146146d457600080fd5b50565b6146e0816141cb565b81146146eb57600080fd5b50565b6146f7816141dd565b811461470257600080fd5b50565b61470e81614209565b811461471957600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122052d1ea4f8b51a1c2b36946ace0f5d1a1c8783390717797de237e98dc7f2528cc64736f6c63430008070033

Deployed Bytecode

0x6080604052600436106101445760003560e01c80638a13792e116100b6578063c7ab8d9d1161006f578063c7ab8d9d14610479578063dd62ed3e146104b6578063e8078d94146104f3578063f2fde38b1461050a578063f37c4bce14610533578063f9f92be41461055c5761014b565b80638a13792e146103575780638da5cb5b1461039457806395d89b41146103bf57806398d5a5cb146103ea578063a9059cbb14610413578063ab9562fe146104505761014b565b806328f3a8a21161010857806328f3a8a214610249578063290dc70c14610272578063313ce5671461029b57806354486ac3146102c657806370a08231146102f157806385b12c7c1461032e5761014b565b806306fdde0314610150578063095ea7b31461017b57806318160ddd146101b85780631c815b49146101e357806323b872dd1461020c5761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b50610165610585565b6040516101729190613e3d565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d9190613909565b610617565b6040516101af9190613e22565b60405180910390f35b3480156101c457600080fd5b506101cd610635565b6040516101da9190613fbf565b60405180910390f35b3480156101ef57600080fd5b5061020a60048036038101906102059190613836565b610645565b005b34801561021857600080fd5b50610233600480360381019061022e91906138b6565b61074a565b6040516102409190613e22565b60405180910390f35b34801561025557600080fd5b50610270600480360381019061026b91906137af565b610823565b005b34801561027e57600080fd5b50610299600480360381019061029491906137af565b610913565b005b3480156102a757600080fd5b506102b0610a03565b6040516102bd9190614034565b60405180910390f35b3480156102d257600080fd5b506102db610a1a565b6040516102e89190613fbf565b60405180910390f35b3480156102fd57600080fd5b50610318600480360381019061031391906137af565b610a20565b6040516103259190613fbf565b60405180910390f35b34801561033a57600080fd5b5061035560048036038101906103509190613976565b610a69565b005b34801561036357600080fd5b5061037e60048036038101906103799190613809565b610b1a565b60405161038b9190613fbf565b60405180910390f35b3480156103a057600080fd5b506103a9610c1d565b6040516103b69190613cbc565b60405180910390f35b3480156103cb57600080fd5b506103d4610c46565b6040516103e19190613e3d565b60405180910390f35b3480156103f657600080fd5b50610411600480360381019061040c91906137af565b610cd8565b005b34801561041f57600080fd5b5061043a60048036038101906104359190613909565b610dc8565b6040516104479190613e22565b60405180910390f35b34801561045c57600080fd5b5061047760048036038101906104729190613836565b610de6565b005b34801561048557600080fd5b506104a0600480360381019061049b91906137af565b610f22565b6040516104ad9190613e22565b60405180910390f35b3480156104c257600080fd5b506104dd60048036038101906104d89190613876565b610f78565b6040516104ea9190613fbf565b60405180910390f35b3480156104ff57600080fd5b50610508610fff565b005b34801561051657600080fd5b50610531600480360381019061052c91906137af565b61165b565b005b34801561053f57600080fd5b5061055a600480360381019061055591906137af565b6117ad565b005b34801561056857600080fd5b50610583600480360381019061057e91906137af565b611966565b005b6060600b805461059490614277565b80601f01602080910402602001604051908101604052809291908181526020018280546105c090614277565b801561060d5780601f106105e25761010080835404028352916020019161060d565b820191906000526020600020905b8154815290600101906020018083116105f057829003601f168201915b5050505050905090565b600061062b610624611b48565b8484611b50565b6001905092915050565b6000678ac7230489e80000905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610684611b48565b73ffffffffffffffffffffffffffffffffffffffff16146106da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106d190613f1f565b60405180910390fd5b6106e48282611d1b565b6000811115610746576001601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5050565b600061075784848461209e565b61081884610763611b48565b6108138560405180606001604052806028815260200161471d60289139601960008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107c9611b48565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126359092919063ffffffff16565b611b50565b600190509392505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610862611b48565b73ffffffffffffffffffffffffffffffffffffffff16146108b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108af90613f1f565b60405180910390fd5b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610952611b48565b73ffffffffffffffffffffffffffffffffffffffff16146109a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099f90613f1f565b60405180910390fd5b6001601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600d60009054906101000a900460ff16905090565b60095481565b6000601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610aa8611b48565b73ffffffffffffffffffffffffffffffffffffffff1614610afe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af590613f1f565b60405180910390fd5b610b118142611aa090919063ffffffff16565b601b8190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b5c611b48565b73ffffffffffffffffffffffffffffffffffffffff1614610bb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba990613f1f565b60405180910390fd5b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060058181548110610c0a57610c0961437f565b5b9060005260206000200154915050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600c8054610c5590614277565b80601f0160208091040260200160405190810160405280929190818152602001828054610c8190614277565b8015610cce5780601f10610ca357610100808354040283529160200191610cce565b820191906000526020600020905b815481529060010190602001808311610cb157829003601f168201915b5050505050905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d17611b48565b73ffffffffffffffffffffffffffffffffffffffff1614610d6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6490613f1f565b60405180910390fd5b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000610ddc610dd5611b48565b848461209e565b6001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e25611b48565b73ffffffffffffffffffffffffffffffffffffffff1614610e7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7290613f1f565b60405180910390fd5b610ea8600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000611d1b565b81600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600481905550610f1e600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600454611d1b565b5050565b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661103e611b48565b73ffffffffffffffffffffffffffffffffffffffff1614611094576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108b90613f1f565b60405180910390fd5b601060009054906101000a900460ff16156110e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110db90613e7f565b60405180910390fd5b60004790506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061117830600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16678ac7230489e80000611b50565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156111be57600080fd5b505afa1580156111d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f691906137dc565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561125857600080fd5b505afa15801561126c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129091906137dc565b6040518363ffffffff1660e01b81526004016112ad929190613cd7565b602060405180830381600087803b1580156112c757600080fd5b505af11580156112db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ff91906137dc565b600d60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061138830610a20565b600080611393610c1d565b426040518863ffffffff1660e01b81526004016113b596959493929190613dc1565b6060604051808303818588803b1580156113ce57600080fd5b505af11580156113e2573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061140791906139d0565b505050600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016114a9929190613d98565b602060405180830381600087803b1580156114c357600080fd5b505af11580156114d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fb9190613949565b50601060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c435846530611770600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156115a757600080fd5b505afa1580156115bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115df91906137dc565b87678ac7230489e800006040518763ffffffff1660e01b815260040161160a96959493929190613d37565b600060405180830381600087803b15801561162457600080fd5b505af1158015611638573d6000803e3d6000fd5b505050506001601060006101000a81548160ff0219169083151502179055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661169a611b48565b73ffffffffffffffffffffffffffffffffffffffff16146116f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e790613f1f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561181757600080fd5b505af115801561182b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184f91906137dc565b73ffffffffffffffffffffffffffffffffffffffff1661186d611b48565b73ffffffffffffffffffffffffffffffffffffffff1614806118e35750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166118cb611b48565b73ffffffffffffffffffffffffffffffffffffffff16145b611922576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191990613e9f565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166119a5611b48565b73ffffffffffffffffffffffffffffffffffffffff16146119fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f290613f1f565b60405180910390fd5b6001601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000611a9883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612699565b905092915050565b6000808284611aaf91906140a4565b905083811015611af4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aeb90613edf565b60405180910390fd5b8091505092915050565b6000611b4083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612635565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611bc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb790613f7f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2790613ebf565b60405180910390fd5b80601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d0e9190613fbf565b60405180910390a3505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611d5a611b48565b73ffffffffffffffffffffffffffffffffffffffff1614611db0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da790613f1f565b60405180910390fd5b600a60009054906101000a900460ff1615611e7e57600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e7d57600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611e5c611b48565b73ffffffffffffffffffffffffffffffffffffffff1614611e7c57600080fd5b5b5b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811415611fef57612904611ee383600954611aa090919063ffffffff16565b1115611eee57600080fd5b60058290806001815401808255809150506001900390600052602060002001600090919091909150556006839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600580549050611f8c9190614185565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611fe482600954611aa090919063ffffffff16565b600981905550612099565b6000600582815481106120055761200461437f565b5b9060005260206000200154905061290461203c8261202e86600954611aa090919063ffffffff16565b611afe90919063ffffffff16565b111561204757600080fd5b826005838154811061205c5761205b61437f565b5b90600052602060002001819055506120918161208385600954611aa090919063ffffffff16565b611afe90919063ffffffff16565b600981905550505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561210e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210590613f5f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561217e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217590613e5f565b60405180910390fd5b600081116121c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b890613f3f565b60405180910390fd5b601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156122655750601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156122bb5750601660003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6122c457600080fd5b6122ce83836126fc565b80156122dc5750601b544210155b1561259957601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312bdf42383600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16326040518463ffffffff1660e01b815260040161236293929190613d00565b602060405180830381600087803b15801561237c57600080fd5b505af1158015612390573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b49190613949565b156123f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123eb90613f9f565b60405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312bdf42384600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16326040518463ffffffff1660e01b815260040161247593929190613d00565b602060405180830381600087803b15801561248f57600080fd5b505af11580156124a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124c79190613949565b15612507576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124fe90613f9f565b60405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663155d0ed98484326040518463ffffffff1660e01b815260040161256693929190613d00565b600060405180830381600087803b15801561258057600080fd5b505af1158015612594573d6000803e3d6000fd5b505050505b6125a2826127af565b156125be57600f546125b383610a20565b106125bd57600080fd5b5b60006125ca8484612886565b1561261957601b544210156125de57600080fd5b6125e88484612932565b15612602576125f5612a3d565b82111561260157600080fd5b5b61260d848484612a75565b905061261884612c5c565b5b61262584848484612c8d565b61262f8484612ecf565b50505050565b600083831115829061267d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126749190613e3d565b60405180910390fd5b506000838561268c9190614185565b9050809150509392505050565b600080831182906126e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d79190613e3d565b60405180910390fd5b50600083856126ef91906140fa565b9050809150509392505050565b6000600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806127a75750600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b905092915050565b6000600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561285d5750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561287f575061287b6101a4601b54611aa090919063ffffffff16565b4211155b9050919050565b6000601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806129295750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15905092915050565b6000600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156129df5750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612a355750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b6000612a566101a4601b54611aa090919063ffffffff16565b4211612a6657600f549050612a72565b678ac7230489e8000090505b90565b60008060009050601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612b1d5750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612b2b5780915050612c55565b612b6b612b5c612b39613029565b612b4e601d5487611a5690919063ffffffff16565b61303390919063ffffffff16565b82611aa090919063ffffffff16565b9050601060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632c2bab2f6040518163ffffffff1660e01b815260040160206040518083038186803b158015612bd557600080fd5b505afa158015612be9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c0d91906139a3565b601281905550612c4e612c3f601d54612c316012548761303390919063ffffffff16565b611a5690919063ffffffff16565b82611aa090919063ffffffff16565b9050809150505b9392505050565b612c65816130ae565b15612c8a576000612c7530610a20565b9050612c8081613122565b612c886133aa565b505b50565b6000612ca28284611afe90919063ffffffff16565b9050612cf683601860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611afe90919063ffffffff16565b601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612d8b81601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611aa090919063ffffffff16565b601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612e2082601860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611aa090919063ffffffff16565b601860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612ec09190613fbf565b60405180910390a35050505050565b612ed98282612886565b1561302557612ee7826134a3565b15612f7e57601060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633627301e826040518263ffffffff1660e01b8152600401612f479190613cbc565b600060405180830381600087803b158015612f6157600080fd5b505af1158015612f75573d6000803e3d6000fd5b50505050613024565b6000601354111561302357601060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c4a5f67f836013546040518363ffffffff1660e01b8152600401612fe8929190613d98565b600060405180830381600087803b15801561300257600080fd5b505af1158015613016573d6000803e3d6000fd5b5050505060006013819055505b5b5b5050565b6000600954905090565b60008083141561304657600090506130a8565b60008284613054919061412b565b905082848261306391906140fa565b146130a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161309a90613eff565b60405180910390fd5b809150505b92915050565b6000601c60009054906101000a900460ff1615801561311b5750600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b9050919050565b6001601c60006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561315a576131596143ae565b5b6040519080825280602002602001820160405280156131885781602001602082028036833780820191505090505b50905030816000815181106131a05761319f61437f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561324257600080fd5b505afa158015613256573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061327a91906137dc565b8160018151811061328e5761328d61437f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506132f530600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611b50565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613359959493929190613fda565b600060405180830381600087803b15801561337357600080fd5b505af1158015613387573d6000803e3d6000fd5b50505050506000601c60006101000a81548160ff02191690831515021790555050565b6000479050601a5481116133be57506134a1565b60006133d5601a5483611afe90919063ffffffff16565b905060006133e16134fd565b905060018110156133f4575050506134a1565b6133fe828261353e565b613425816134176012548561303390919063ffffffff16565b611a5690919063ffffffff16565b601381905550601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6013549081150290604051600060405180830381858888f19350505050158015613495573d6000803e3d6000fd5b5047601a819055505050505b565b6000600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b6000806000905061351e61350f613029565b82611aa090919063ffffffff16565b905061353560125482611aa090919063ffffffff16565b90508091505090565b6000600190505b60058054905081101561372c576000600582815481106135685761356761437f565b5b9060005260206000200154905060006006838154811061358b5761358a61437f565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060006135df856135d1858961303390919063ffffffff16565b611a5690919063ffffffff16565b90506001811115613716578173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613630573d6000803e3d6000fd5b50600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561371557600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6b55f25826040518263ffffffff1660e01b81526004016136e29190613fbf565b600060405180830381600087803b1580156136fc57600080fd5b505af1158015613710573d6000803e3d6000fd5b505050505b5b5050508080613724906142a9565b915050613545565b505050565b600081359050613740816146c0565b92915050565b600081519050613755816146c0565b92915050565b60008135905061376a816146d7565b92915050565b60008151905061377f816146ee565b92915050565b60008135905061379481614705565b92915050565b6000815190506137a981614705565b92915050565b6000602082840312156137c5576137c46143dd565b5b60006137d384828501613731565b91505092915050565b6000602082840312156137f2576137f16143dd565b5b600061380084828501613746565b91505092915050565b60006020828403121561381f5761381e6143dd565b5b600061382d8482850161375b565b91505092915050565b6000806040838503121561384d5761384c6143dd565b5b600061385b8582860161375b565b925050602061386c85828601613785565b9150509250929050565b6000806040838503121561388d5761388c6143dd565b5b600061389b85828601613731565b92505060206138ac85828601613731565b9150509250929050565b6000806000606084860312156138cf576138ce6143dd565b5b60006138dd86828701613731565b93505060206138ee86828701613731565b92505060406138ff86828701613785565b9150509250925092565b600080604083850312156139205761391f6143dd565b5b600061392e85828601613731565b925050602061393f85828601613785565b9150509250929050565b60006020828403121561395f5761395e6143dd565b5b600061396d84828501613770565b91505092915050565b60006020828403121561398c5761398b6143dd565b5b600061399a84828501613785565b91505092915050565b6000602082840312156139b9576139b86143dd565b5b60006139c78482850161379a565b91505092915050565b6000806000606084860312156139e9576139e86143dd565b5b60006139f78682870161379a565b9350506020613a088682870161379a565b9250506040613a198682870161379a565b9150509250925092565b6000613a2f8383613a3b565b60208301905092915050565b613a44816141b9565b82525050565b613a53816141b9565b82525050565b6000613a648261405f565b613a6e8185614082565b9350613a798361404f565b8060005b83811015613aaa578151613a918882613a23565b9750613a9c83614075565b925050600181019050613a7d565b5085935050505092915050565b613ac0816141dd565b82525050565b613acf81614220565b82525050565b613ade81614232565b82525050565b6000613aef8261406a565b613af98185614093565b9350613b09818560208601614244565b613b12816143e2565b840191505092915050565b6000613b2a602383614093565b9150613b35826143f3565b604082019050919050565b6000613b4d601883614093565b9150613b5882614442565b602082019050919050565b6000613b70600c83614093565b9150613b7b8261446b565b602082019050919050565b6000613b93602283614093565b9150613b9e82614494565b604082019050919050565b6000613bb6601b83614093565b9150613bc1826144e3565b602082019050919050565b6000613bd9602183614093565b9150613be48261450c565b604082019050919050565b6000613bfc602083614093565b9150613c078261455b565b602082019050919050565b6000613c1f602983614093565b9150613c2a82614584565b604082019050919050565b6000613c42602583614093565b9150613c4d826145d3565b604082019050919050565b6000613c65602483614093565b9150613c7082614622565b604082019050919050565b6000613c88602683614093565b9150613c9382614671565b604082019050919050565b613ca781614209565b82525050565b613cb681614213565b82525050565b6000602082019050613cd16000830184613a4a565b92915050565b6000604082019050613cec6000830185613a4a565b613cf96020830184613a4a565b9392505050565b6000606082019050613d156000830186613a4a565b613d226020830185613a4a565b613d2f6040830184613a4a565b949350505050565b600060c082019050613d4c6000830189613a4a565b613d596020830188613ad5565b613d666040830187613a4a565b613d736060830186613a4a565b613d806080830185613c9e565b613d8d60a0830184613c9e565b979650505050505050565b6000604082019050613dad6000830185613a4a565b613dba6020830184613c9e565b9392505050565b600060c082019050613dd66000830189613a4a565b613de36020830188613c9e565b613df06040830187613ac6565b613dfd6060830186613ac6565b613e0a6080830185613a4a565b613e1760a0830184613c9e565b979650505050505050565b6000602082019050613e376000830184613ab7565b92915050565b60006020820190508181036000830152613e578184613ae4565b905092915050565b60006020820190508181036000830152613e7881613b1d565b9050919050565b60006020820190508181036000830152613e9881613b40565b9050919050565b60006020820190508181036000830152613eb881613b63565b9050919050565b60006020820190508181036000830152613ed881613b86565b9050919050565b60006020820190508181036000830152613ef881613ba9565b9050919050565b60006020820190508181036000830152613f1881613bcc565b9050919050565b60006020820190508181036000830152613f3881613bef565b9050919050565b60006020820190508181036000830152613f5881613c12565b9050919050565b60006020820190508181036000830152613f7881613c35565b9050919050565b60006020820190508181036000830152613f9881613c58565b9050919050565b60006020820190508181036000830152613fb881613c7b565b9050919050565b6000602082019050613fd46000830184613c9e565b92915050565b600060a082019050613fef6000830188613c9e565b613ffc6020830187613ac6565b818103604083015261400e8186613a59565b905061401d6060830185613a4a565b61402a6080830184613c9e565b9695505050505050565b60006020820190506140496000830184613cad565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006140af82614209565b91506140ba83614209565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156140ef576140ee6142f2565b5b828201905092915050565b600061410582614209565b915061411083614209565b9250826141205761411f614321565b5b828204905092915050565b600061413682614209565b915061414183614209565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561417a576141796142f2565b5b828202905092915050565b600061419082614209565b915061419b83614209565b9250828210156141ae576141ad6142f2565b5b828203905092915050565b60006141c4826141e9565b9050919050565b60006141d6826141e9565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061422b82614209565b9050919050565b600061423d82614209565b9050919050565b60005b83811015614262578082015181840152602081019050614247565b83811115614271576000848401525b50505050565b6000600282049050600182168061428f57607f821691505b602082108114156142a3576142a2614350565b5b50919050565b60006142b482614209565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156142e7576142e66142f2565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4c697175696469747920616c72656164792061646465642e0000000000000000600082015250565b7f556e617574686f72697a65640000000000000000000000000000000000000000600082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f42656570204265657020426f6f702c20596f752772652061207069656365206f60008201527f6620706f6f700000000000000000000000000000000000000000000000000000602082015250565b6146c9816141b9565b81146146d457600080fd5b50565b6146e0816141cb565b81146146eb57600080fd5b50565b6146f7816141dd565b811461470257600080fd5b50565b61470e81614209565b811461471957600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122052d1ea4f8b51a1c2b36946ace0f5d1a1c8783390717797de237e98dc7f2528cc64736f6c63430008070033

Deployed Bytecode Sourcemap

7736:11169:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9776:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10615:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10050:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18325:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10786:323;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18676:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18552:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9960:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3738:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10156:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17880:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5690:180;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2783:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9866:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18223:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10284:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5876:253;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17998:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10461:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16976:898;;;;;;;;;;;;;:::i;:::-;;2869:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18804:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18124:93;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9776:84;9813:13;9846:6;9839:13;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9776:84;:::o;10615:165::-;10692:4;10709:41;10718:12;:10;:12::i;:::-;10732:8;10742:7;10709:8;:41::i;:::-;10768:4;10761:11;;10615:165;;;;:::o;10050:100::-;10103:7;7885:19;10123;;10050:100;:::o;18325:221::-;3093:7;;;;;;;;;;3077:23;;:12;:10;:12::i;:::-;:23;;;3069:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18420:29:::1;18432:8;18442:6;18420:11;:29::i;:::-;18473:1;18464:6;:10;18460:79;;;18523:4;18491:19;:29;18511:8;18491:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;18460:79;18325:221:::0;;:::o;10786:323::-;10887:4;10904:39;10914:7;10923:10;10935:7;10904:9;:39::i;:::-;10954:125;10963:7;10972:12;:10;:12::i;:::-;10986:92;11026:7;10986:92;;;;;;;;;;;;;;;;;:12;:21;10999:7;10986:21;;;;;;;;;;;;;;;:35;11008:12;:10;:12::i;:::-;10986:35;;;;;;;;;;;;;;;;:39;;:92;;;;;:::i;:::-;10954:8;:125::i;:::-;11097:4;11090:11;;10786:323;;;;;:::o;18676:122::-;3093:7;;;;;;;;;;3077:23;;:12;:10;:12::i;:::-;:23;;;3069:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18785:5:::1;18753:19;:29;18773:8;18753:29;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;18676:122:::0;:::o;18552:118::-;3093:7;;;;;;;;;;3077:23;;:12;:10;:12::i;:::-;:23;;;3069:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18658:4:::1;18626:19;:29;18646:8;18626:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;18552:118:::0;:::o;9960:84::-;10001:5;10026:10;;;;;;;;;;;10019:17;;9960:84;:::o;3738:27::-;;;;:::o;10156:122::-;10223:7;10250:10;:20;10261:8;10250:20;;;;;;;;;;;;;;;;10243:27;;10156:122;;;:::o;17880:112::-;3093:7;;;;;;;;;;3077:23;;:12;:10;:12::i;:::-;:23;;;3069:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17957:27:::1;17977:6;17957:15;:19;;:27;;;;:::i;:::-;17944:10;:40;;;;17880:112:::0;:::o;5690:180::-;5778:7;3093;;;;;;;;;;;3077:23;;:12;:10;:12::i;:::-;:23;;;3069:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5798:9:::1;5810:8;:18;5819:8;5810:18;;;;;;;;;;;;;;;;5798:30;;5846:10;5857:4;5846:16;;;;;;;;:::i;:::-;;;;;;;;;;5839:23;;;5690:180:::0;;;:::o;2783:80::-;2821:7;2848;;;;;;;;;;;2841:14;;2783:80;:::o;9866:88::-;9905:13;9938:8;9931:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9866:88;:::o;18223:96::-;3093:7;;;;;;;;;;3077:23;;:12;:10;:12::i;:::-;:23;;;3069:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18306:5:::1;18288:11;:15;18300:2;18288:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;18223:96:::0;:::o;10284:171::-;10364:4;10381:44;10391:12;:10;:12::i;:::-;10405:10;10417:7;10381:9;:44::i;:::-;10443:4;10436:11;;10284:171;;;;:::o;5876:253::-;3093:7;;;;;;;;;;3077:23;;:12;:10;:12::i;:::-;:23;;;3069:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5981:28:::1;5993:12;;;;;;;;;;;6007:1;5981:11;:28::i;:::-;6035:8;6020:12;;:23;;;;;;;;;;;;;;;;;;6067:6;6054:10;:19;;;;6084:37;6096:12;;;;;;;;;;;6110:10;;6084:11;:37::i;:::-;5876:253:::0;;:::o;17998:120::-;18065:4;18089:11;:21;18101:8;18089:21;;;;;;;;;;;;;;;;;;;;;;;;;18082:28;;17998:120;;;:::o;10461:148::-;10544:7;10571:12;:20;10584:6;10571:20;;;;;;;;;;;;;;;:30;10592:8;10571:30;;;;;;;;;;;;;;;;10564:37;;10461:148;;;;:::o;16976:898::-;3093:7;;;;;;;;;;3077:23;;:12;:10;:12::i;:::-;:23;;;3069:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17041:11:::1;;;;;;;;;;;17040:12;17032:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;17091:19;17113:21;17091:43;;17145:35;17202:42;17145:100;;17276:16;17256:17;;:36;;;;;;;;;;;;;;;;;;17303:65;17320:4;17335:17;;;;;;;;;;;7885:19;17303:8;:65::i;:::-;17415:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17397:56;;;17462:4;17469:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17397:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17379:15;;:114;;;;;;;;;;;;;;;;;;17504:17;;;;;;;;;;;:33;;;17545:21;17576:4;17582:24;17600:4;17582:9;:24::i;:::-;17607:1;17609::::0;17611:7:::1;:5;:7::i;:::-;17619:15;17504:131;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;17653:15;;;;;;;;;;;17646:31;;;17686:17;;;;;;;;;;;17706:14;17646:75;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17732:10;;;;;;;;;;;:15;;;17756:4;17763;17769:15;;;;;;;;;;;17786:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17811:11;7885:19;17732:105;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17862:4;17848:11;;:18;;;;;;;;;;;;;;;;;;17021:853;;16976:898::o:0;2869:162::-;3093:7;;;;;;;;;;3077:23;;:12;:10;:12::i;:::-;:23;;;3069:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2985:8:::1;2955:39;;2976:7;::::0;::::1;;;;;;;;2955:39;;;;;;;;;;;;3015:8;3005:7;::::0;:18:::1;;;;;;;;;;;;;;;;;;2869:162:::0;:::o;18804:98::-;9258:8;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9242:32;;:12;:10;:12::i;:::-;:32;;;:62;;;;9294:10;;;;;;;;;;;9278:26;;:12;:10;:12::i;:::-;:26;;;9242:62;9233:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;18886:8:::1;18873:10;;:21;;;;;;;;;;;;;;;;;;18804:98:::0;:::o;18124:93::-;3093:7;;;;;;;;;;3077:23;;:12;:10;:12::i;:::-;:23;;;3069:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18205:4:::1;18187:11;:15;18199:2;18187:15;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;18124:93:::0;:::o;2135:132::-;2193:7;2220:39;2224:1;2227;2220:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2213:46;;2135:132;;;;:::o;1360:179::-;1418:7;1438:9;1454:1;1450;:5;;;;:::i;:::-;1438:17;;1479:1;1474;:6;;1466:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1530:1;1523:8;;;1360:179;;;;:::o;1545:136::-;1603:7;1630:43;1634:1;1637;1630:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1623:50;;1545:136;;;;:::o;558:98::-;611:7;638:10;631:17;;558:98;:::o;12373:347::-;12487:1;12469:20;;:6;:20;;;;12461:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;12569:1;12549:22;;:8;:22;;;;12541:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;12654:7;12621:12;:20;12634:6;12621:20;;;;;;;;;;;;;;;:30;12642:8;12621:30;;;;;;;;;;;;;;;:40;;;;12694:8;12677:35;;12686:6;12677:35;;;12704:7;12677:35;;;;;;:::i;:::-;;;;;;;;12373:347;;;:::o;4702:873::-;3093:7;;;;;;;;;;3077:23;;:12;:10;:12::i;:::-;:23;;;3069:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4809:11:::1;;;;;;;;;;;4805:143;;;4853:12;;;;;;;;;;;4841:24;;:8;:24;;;4837:100;;;4910:10;;;;;;;;;;;4894:26;;:12;:10;:12::i;:::-;:26;;;4886:35;;;::::0;::::1;;4837:100;4805:143;4958:9;4970:8;:18;4979:8;4970:18;;;;;;;;;;;;;;;;4958:30;;5011:1;5003:4;:9;4999:569;;;5065:5;5037:24;5054:6;5037:12;;:16;;:24;;;;:::i;:::-;:33;;5029:42;;;::::0;::::1;;5086:10;5102:6;5086:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5124:14;5144:8;5124:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5209:1;5189:10;:17;;;;:21;;;;:::i;:::-;5168:8;:18;5177:8;5168:18;;;;;;;;;;;;;;;:42;;;;5240:24;5257:6;5240:12;;:16;;:24;;;;:::i;:::-;5225:12;:39;;;;4999:569;;;5330:19;5353:10;5364:4;5353:16;;;;;;;;:::i;:::-;;;;;;;;;;5330:39;;5437:5;5392:41;5421:11;5392:24;5409:6;5392:12;;:16;;:24;;;;:::i;:::-;:28;;:41;;;;:::i;:::-;:50;;5384:59;;;::::0;::::1;;5479:6;5460:10;5471:4;5460:16;;;;;;;;:::i;:::-;;;;;;;;;:25;;;;5515:41;5544:11;5515:24;5532:6;5515:12;;:16;;:24;;;;:::i;:::-;:28;;:41;;;;:::i;:::-;5500:12;:56;;;;5282:286;4999:569;4794:781;4702:873:::0;;:::o;12726:1489::-;12845:1;12826:21;;:7;:21;;;;12818:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12930:1;12908:24;;:10;:24;;;;12900:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;13001:1;12991:7;:11;12983:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;13068:11;:20;13080:7;13068:20;;;;;;;;;;;;;;;;;;;;;;;;;13067:21;:49;;;;;13093:11;:23;13105:10;13093:23;;;;;;;;;;;;;;;;;;;;;;;;;13092:24;13067:49;:76;;;;;13121:11;:22;13133:9;13121:22;;;;;;;;;;;;;;;;;;;;;;;;;13120:23;13067:76;13059:85;;;;;;13168:40;13188:7;13197:10;13168:19;:40::i;:::-;:73;;;;;13231:10;;13212:15;:29;;13168:73;13165:450;;;13267:7;;;;;;;;;;;:19;;;13287:10;13299:15;;;;;;;;;;;13316:9;13267:59;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13266:60;13258:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;13435:7;;;;;;;;;;;:19;;;13455:7;13464:15;;;;;;;;;;;13481:9;13435:56;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13434:57;13426:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;13550:7;;;;;;;;;;;:21;;;13572:7;13581:10;13593:9;13550:53;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13165:450;13639:25;13653:10;13639:13;:25::i;:::-;13636:89;;;13711:13;;13687:21;13697:10;13687:9;:21::i;:::-;:37;13679:46;;;;;;13636:89;13750:14;13783:28;13791:7;13800:10;13783:7;:28::i;:::-;13779:307;;;13855:10;;13836:15;:29;;13828:38;;;;;;13885:34;13899:7;13908:10;13885:13;:34::i;:::-;13881:88;;;13958:10;:8;:10::i;:::-;13947:7;:21;;13939:30;;;;;;13881:88;14007:39;14017:7;14026:10;14038:7;14007:9;:39::i;:::-;13998:48;;14061:13;14066:7;14061:4;:13::i;:::-;13779:307;14106:53;14122:7;14131:10;14143:7;14152:6;14106:15;:53::i;:::-;14170:40;14190:7;14199:10;14170:19;:40::i;:::-;12807:1408;12726:1489;;;:::o;1687:190::-;1773:7;1806:1;1801;:6;;1809:12;1793:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1833:9;1849:1;1845;:5;;;;:::i;:::-;1833:17;;1868:1;1861:8;;;1687:190;;;;;:::o;2273:189::-;2359:7;2391:1;2387;:5;2394:12;2379:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2418:9;2434:1;2430;:5;;;;:::i;:::-;2418:17;;2453:1;2446:8;;;2273:189;;;;;:::o;11551:179::-;11639:4;11674:15;;;;;;;;;;;11663:26;;:7;:26;;;:59;;;;11707:15;;;;;;;;;;;11693:29;;:10;:29;;;11663:59;11656:66;;11551:179;;;;:::o;11962:218::-;12027:4;12065:15;;;;;;;;;;;12051:29;;:10;:29;;;;:73;;;;;12106:17;;;;;;;;;;;12084:40;;:10;:40;;;;12051:73;:121;;;;;12147:25;12162:9;12147:10;;:14;;:25;;;;:::i;:::-;12128:15;:44;;12051:121;12044:128;;11962:218;;;:::o;11371:174::-;11447:4;11473:19;:28;11493:7;11473:28;;;;;;;;;;;;;;;;;;;;;;;;;:63;;;;11505:19;:31;11525:10;11505:31;;;;;;;;;;;;;;;;;;;;;;;;;11473:63;11471:66;11464:73;;11371:174;;;;:::o;11736:220::-;11818:4;11853:15;;;;;;;;;;;11842:26;;:7;:26;;;:70;;;;;11894:17;;;;;;;;;;;11872:40;;:10;:40;;;;11842:70;:106;;;;;11917:19;:31;11937:10;11917:31;;;;;;;;;;;;;;;;;;;;;;;;;11916:32;11842:106;11835:113;;11736:220;;;;:::o;12186:181::-;12228:7;12269:25;12284:9;12269:10;;:14;;:25;;;;:::i;:::-;12250:15;:44;12247:82;;12316:13;;12309:20;;;;12247:82;7885:19;12340;;12186:181;;:::o;15063:459::-;15153:7;15173:12;15188:1;15173:16;;15204:19;:28;15224:7;15204:28;;;;;;;;;;;;;;;;;;;;;;;;;:63;;;;15236:19;:31;15256:10;15236:31;;;;;;;;;;;;;;;;;;;;;;;;;15204:63;15200:107;;;15291:4;15284:11;;;;;15200:107;15324:48;15333:38;15355:15;:13;:15::i;:::-;15333:17;15345:4;;15333:7;:11;;:17;;;;:::i;:::-;:21;;:38;;;;:::i;:::-;15324:4;:8;;:48;;;;:::i;:::-;15317:55;;15403:10;;;;;;;;;;;:19;;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15383:17;:41;;;;15442:50;15451:40;15486:4;;15451:30;15463:17;;15451:7;:11;;:30;;;;:::i;:::-;:34;;:40;;;;:::i;:::-;15442:4;:8;;:50;;;;:::i;:::-;15435:57;;15510:4;15503:11;;;15063:459;;;;;;:::o;15528:234::-;15582:20;15594:7;15582:11;:20::i;:::-;15578:177;;;15619:21;15643:24;15661:4;15643:9;:24::i;:::-;15619:48;;15682:32;15700:13;15682:17;:32::i;:::-;15729:14;:12;:14::i;:::-;15604:151;15578:177;15528:234;:::o;14221:434::-;14335:18;14356:19;14368:6;14356:7;:11;;:19;;;;:::i;:::-;14335:40;;14408:32;14432:7;14408:10;:19;14419:7;14408:19;;;;;;;;;;;;;;;;:23;;:32;;;;:::i;:::-;14386:10;:19;14397:7;14386:19;;;;;;;;;;;;;;;:54;;;;14476:38;14503:10;14476;:22;14487:10;14476:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;14451:10;:22;14462:10;14451:22;;;;;;;;;;;;;;;:63;;;;14553:37;14583:6;14553:10;:25;14572:4;14553:25;;;;;;;;;;;;;;;;:29;;:37;;;;:::i;:::-;14525:10;:25;14544:4;14525:25;;;;;;;;;;;;;;;:65;;;;14624:10;14606:41;;14615:7;14606:41;;;14636:10;14606:41;;;;;;:::i;:::-;;;;;;;;14324:331;14221:434;;;;:::o;14661:399::-;14750:28;14758:7;14767:10;14750:7;:28::i;:::-;14746:307;;;14799:15;14806:7;14799:6;:15::i;:::-;14795:247;;;14833:10;;;;;;;;;;;:24;;;14858:10;14833:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14795:247;;;14914:1;14893:18;;:22;14889:153;;;14936:10;;;;;;;;;;;:20;;;14957:7;14966:18;;14936:49;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15025:1;15004:18;:22;;;;14889:153;14795:247;14746:307;14661:399;;:::o;5581:103::-;5637:7;5664:12;;5657:19;;5581:103;:::o;1883:246::-;1941:7;1970:1;1965;:6;1961:47;;;1995:1;1988:8;;;;1961:47;2018:9;2034:1;2030;:5;;;;:::i;:::-;2018:17;;2063:1;2058;2054;:5;;;;:::i;:::-;:10;2046:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2120:1;2113:8;;;1883:246;;;;;:::o;11115:131::-;11175:4;11200:8;;;;;;;;;;;11199:9;:39;;;;;11223:15;;;;;;;;;;;11212:26;;:7;:26;;;;11199:39;11192:46;;11115:131;;;:::o;15768:482::-;9144:4;9133:8;;:15;;;;;;;;;;;;;;;;;;15843:22:::1;15882:1;15868:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15843:41;;15914:4;15895:5;15901:1;15895:8;;;;;;;;:::i;:::-;;;;;;;:24;;;;;;;;;::::0;::::1;15941:17;;;;;;;;;;;:22;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15930:5;15936:1;15930:8;;;;;;;;:::i;:::-;;;;;;;:35;;;;;;;;;::::0;::::1;15976:60;15993:4;16008:17;;;;;;;;;;;16028:7;15976:8;:60::i;:::-;16047:17;;;;;;;;;;;:68;;;16130:7;16152:1;16168:5;16196:4;16216:15;16047:195;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15832:418;9182:5:::0;9171:8;;:16;;;;;;;;;;;;;;;;;;15768:482;:::o;16462:508::-;16505:12;16520:21;16505:36;;16564:12;;16556:4;:20;16552:46;;16591:7;;;16552:46;16622:15;16640:22;16649:12;;16640:4;:8;;:22;;;;:::i;:::-;16622:40;;16673:7;16683:20;:18;:20::i;:::-;16673:30;;16723:1;16718:2;:6;16714:32;;;16739:7;;;;;16714:32;16758:21;16767:7;16776:2;16758:8;:21::i;:::-;16813:38;16848:2;16813:30;16825:17;;16813:7;:11;;:30;;;;:::i;:::-;:34;;:38;;;;:::i;:::-;16792:18;:59;;;;16862:22;;;;;;;;;;;:31;;:51;16894:18;;16862:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16941:21;16926:12;:36;;;;16494:476;;;16462:508;:::o;11252:113::-;11307:4;11342:15;;;;;;;;;;;11331:26;;:7;:26;;;11324:33;;11252:113;;;:::o;16256:200::-;16308:4;16325:9;16337:1;16325:13;;16356:25;16365:15;:13;:15::i;:::-;16356:4;:8;;:25;;;;:::i;:::-;16349:32;;16399:27;16408:17;;16399:4;:8;;:27;;;;:::i;:::-;16392:34;;16444:4;16437:11;;;16256:200;:::o;4214:482::-;4291:6;4300:1;4291:10;;4286:403;4307:10;:17;;;;4303:1;:21;4286:403;;;4346:14;4363:10;4374:1;4363:13;;;;;;;;:::i;:::-;;;;;;;;;;4346:30;;4391:24;4418:14;4433:1;4418:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4391:44;;4450:15;4468:24;4489:2;4468:16;4477:6;4468:4;:8;;:16;;;;:::i;:::-;:20;;:24;;;;:::i;:::-;4450:42;;4521:1;4511:7;:11;4507:171;;;4542:8;:17;;:26;4560:7;4542:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4602:12;;;;;;;;;;;4590:24;;:8;:24;;;4587:75;;;4637:8;;;;;;;;;;;:16;;;4654:7;4637:25;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4587:75;4507:171;4331:358;;;4326:3;;;;;:::i;:::-;;;;4286:403;;;;4214:482;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;152:143;;;;:::o;301:155::-;355:5;393:6;380:20;371:29;;409:41;444:5;409:41;:::i;:::-;301:155;;;;:::o;462:137::-;516:5;547:6;541:13;532:22;;563:30;587:5;563:30;:::i;:::-;462:137;;;;:::o;605:139::-;651:5;689:6;676:20;667:29;;705:33;732:5;705:33;:::i;:::-;605:139;;;;:::o;750:143::-;807:5;838:6;832:13;823:22;;854:33;881:5;854:33;:::i;:::-;750:143;;;;:::o;899:329::-;958:6;1007:2;995:9;986:7;982:23;978:32;975:119;;;1013:79;;:::i;:::-;975:119;1133:1;1158:53;1203:7;1194:6;1183:9;1179:22;1158:53;:::i;:::-;1148:63;;1104:117;899:329;;;;:::o;1234:351::-;1304:6;1353:2;1341:9;1332:7;1328:23;1324:32;1321:119;;;1359:79;;:::i;:::-;1321:119;1479:1;1504:64;1560:7;1551:6;1540:9;1536:22;1504:64;:::i;:::-;1494:74;;1450:128;1234:351;;;;:::o;1591:345::-;1658:6;1707:2;1695:9;1686:7;1682:23;1678:32;1675:119;;;1713:79;;:::i;:::-;1675:119;1833:1;1858:61;1911:7;1902:6;1891:9;1887:22;1858:61;:::i;:::-;1848:71;;1804:125;1591:345;;;;:::o;1942:490::-;2018:6;2026;2075:2;2063:9;2054:7;2050:23;2046:32;2043:119;;;2081:79;;:::i;:::-;2043:119;2201:1;2226:61;2279:7;2270:6;2259:9;2255:22;2226:61;:::i;:::-;2216:71;;2172:125;2336:2;2362:53;2407:7;2398:6;2387:9;2383:22;2362:53;:::i;:::-;2352:63;;2307:118;1942:490;;;;;:::o;2438:474::-;2506:6;2514;2563:2;2551:9;2542:7;2538:23;2534:32;2531:119;;;2569:79;;:::i;:::-;2531:119;2689:1;2714:53;2759:7;2750:6;2739:9;2735:22;2714:53;:::i;:::-;2704:63;;2660:117;2816:2;2842:53;2887:7;2878:6;2867:9;2863:22;2842:53;:::i;:::-;2832:63;;2787:118;2438:474;;;;;:::o;2918:619::-;2995:6;3003;3011;3060:2;3048:9;3039:7;3035:23;3031:32;3028:119;;;3066:79;;:::i;:::-;3028:119;3186:1;3211:53;3256:7;3247:6;3236:9;3232:22;3211:53;:::i;:::-;3201:63;;3157:117;3313:2;3339:53;3384:7;3375:6;3364:9;3360:22;3339:53;:::i;:::-;3329:63;;3284:118;3441:2;3467:53;3512:7;3503:6;3492:9;3488:22;3467:53;:::i;:::-;3457:63;;3412:118;2918:619;;;;;:::o;3543:474::-;3611:6;3619;3668:2;3656:9;3647:7;3643:23;3639:32;3636:119;;;3674:79;;:::i;:::-;3636:119;3794:1;3819:53;3864:7;3855:6;3844:9;3840:22;3819:53;:::i;:::-;3809:63;;3765:117;3921:2;3947:53;3992:7;3983:6;3972:9;3968:22;3947:53;:::i;:::-;3937:63;;3892:118;3543:474;;;;;:::o;4023:345::-;4090:6;4139:2;4127:9;4118:7;4114:23;4110:32;4107:119;;;4145:79;;:::i;:::-;4107:119;4265:1;4290:61;4343:7;4334:6;4323:9;4319:22;4290:61;:::i;:::-;4280:71;;4236:125;4023:345;;;;:::o;4374:329::-;4433:6;4482:2;4470:9;4461:7;4457:23;4453:32;4450:119;;;4488:79;;:::i;:::-;4450:119;4608:1;4633:53;4678:7;4669:6;4658:9;4654:22;4633:53;:::i;:::-;4623:63;;4579:117;4374:329;;;;:::o;4709:351::-;4779:6;4828:2;4816:9;4807:7;4803:23;4799:32;4796:119;;;4834:79;;:::i;:::-;4796:119;4954:1;4979:64;5035:7;5026:6;5015:9;5011:22;4979:64;:::i;:::-;4969:74;;4925:128;4709:351;;;;:::o;5066:663::-;5154:6;5162;5170;5219:2;5207:9;5198:7;5194:23;5190:32;5187:119;;;5225:79;;:::i;:::-;5187:119;5345:1;5370:64;5426:7;5417:6;5406:9;5402:22;5370:64;:::i;:::-;5360:74;;5316:128;5483:2;5509:64;5565:7;5556:6;5545:9;5541:22;5509:64;:::i;:::-;5499:74;;5454:129;5622:2;5648:64;5704:7;5695:6;5684:9;5680:22;5648:64;:::i;:::-;5638:74;;5593:129;5066:663;;;;;:::o;5735:179::-;5804:10;5825:46;5867:3;5859:6;5825:46;:::i;:::-;5903:4;5898:3;5894:14;5880:28;;5735:179;;;;:::o;5920:108::-;5997:24;6015:5;5997:24;:::i;:::-;5992:3;5985:37;5920:108;;:::o;6034:118::-;6121:24;6139:5;6121:24;:::i;:::-;6116:3;6109:37;6034:118;;:::o;6188:732::-;6307:3;6336:54;6384:5;6336:54;:::i;:::-;6406:86;6485:6;6480:3;6406:86;:::i;:::-;6399:93;;6516:56;6566:5;6516:56;:::i;:::-;6595:7;6626:1;6611:284;6636:6;6633:1;6630:13;6611:284;;;6712:6;6706:13;6739:63;6798:3;6783:13;6739:63;:::i;:::-;6732:70;;6825:60;6878:6;6825:60;:::i;:::-;6815:70;;6671:224;6658:1;6655;6651:9;6646:14;;6611:284;;;6615:14;6911:3;6904:10;;6312:608;;;6188:732;;;;:::o;6926:109::-;7007:21;7022:5;7007:21;:::i;:::-;7002:3;6995:34;6926:109;;:::o;7041:147::-;7136:45;7175:5;7136:45;:::i;:::-;7131:3;7124:58;7041:147;;:::o;7194:153::-;7292:48;7334:5;7292:48;:::i;:::-;7287:3;7280:61;7194:153;;:::o;7353:364::-;7441:3;7469:39;7502:5;7469:39;:::i;:::-;7524:71;7588:6;7583:3;7524:71;:::i;:::-;7517:78;;7604:52;7649:6;7644:3;7637:4;7630:5;7626:16;7604:52;:::i;:::-;7681:29;7703:6;7681:29;:::i;:::-;7676:3;7672:39;7665:46;;7445:272;7353:364;;;;:::o;7723:366::-;7865:3;7886:67;7950:2;7945:3;7886:67;:::i;:::-;7879:74;;7962:93;8051:3;7962:93;:::i;:::-;8080:2;8075:3;8071:12;8064:19;;7723:366;;;:::o;8095:::-;8237:3;8258:67;8322:2;8317:3;8258:67;:::i;:::-;8251:74;;8334:93;8423:3;8334:93;:::i;:::-;8452:2;8447:3;8443:12;8436:19;;8095:366;;;:::o;8467:::-;8609:3;8630:67;8694:2;8689:3;8630:67;:::i;:::-;8623:74;;8706:93;8795:3;8706:93;:::i;:::-;8824:2;8819:3;8815:12;8808:19;;8467:366;;;:::o;8839:::-;8981:3;9002:67;9066:2;9061:3;9002:67;:::i;:::-;8995:74;;9078:93;9167:3;9078:93;:::i;:::-;9196:2;9191:3;9187:12;9180:19;;8839:366;;;:::o;9211:::-;9353:3;9374:67;9438:2;9433:3;9374:67;:::i;:::-;9367:74;;9450:93;9539:3;9450:93;:::i;:::-;9568:2;9563:3;9559:12;9552:19;;9211:366;;;:::o;9583:::-;9725:3;9746:67;9810:2;9805:3;9746:67;:::i;:::-;9739:74;;9822:93;9911:3;9822:93;:::i;:::-;9940:2;9935:3;9931:12;9924:19;;9583:366;;;:::o;9955:::-;10097:3;10118:67;10182:2;10177:3;10118:67;:::i;:::-;10111:74;;10194:93;10283:3;10194:93;:::i;:::-;10312:2;10307:3;10303:12;10296:19;;9955:366;;;:::o;10327:::-;10469:3;10490:67;10554:2;10549:3;10490:67;:::i;:::-;10483:74;;10566:93;10655:3;10566:93;:::i;:::-;10684:2;10679:3;10675:12;10668:19;;10327:366;;;:::o;10699:::-;10841:3;10862:67;10926:2;10921:3;10862:67;:::i;:::-;10855:74;;10938:93;11027:3;10938:93;:::i;:::-;11056:2;11051:3;11047:12;11040:19;;10699:366;;;:::o;11071:::-;11213:3;11234:67;11298:2;11293:3;11234:67;:::i;:::-;11227:74;;11310:93;11399:3;11310:93;:::i;:::-;11428:2;11423:3;11419:12;11412:19;;11071:366;;;:::o;11443:::-;11585:3;11606:67;11670:2;11665:3;11606:67;:::i;:::-;11599:74;;11682:93;11771:3;11682:93;:::i;:::-;11800:2;11795:3;11791:12;11784:19;;11443:366;;;:::o;11815:118::-;11902:24;11920:5;11902:24;:::i;:::-;11897:3;11890:37;11815:118;;:::o;11939:112::-;12022:22;12038:5;12022:22;:::i;:::-;12017:3;12010:35;11939:112;;:::o;12057:222::-;12150:4;12188:2;12177:9;12173:18;12165:26;;12201:71;12269:1;12258:9;12254:17;12245:6;12201:71;:::i;:::-;12057:222;;;;:::o;12285:332::-;12406:4;12444:2;12433:9;12429:18;12421:26;;12457:71;12525:1;12514:9;12510:17;12501:6;12457:71;:::i;:::-;12538:72;12606:2;12595:9;12591:18;12582:6;12538:72;:::i;:::-;12285:332;;;;;:::o;12623:442::-;12772:4;12810:2;12799:9;12795:18;12787:26;;12823:71;12891:1;12880:9;12876:17;12867:6;12823:71;:::i;:::-;12904:72;12972:2;12961:9;12957:18;12948:6;12904:72;:::i;:::-;12986;13054:2;13043:9;13039:18;13030:6;12986:72;:::i;:::-;12623:442;;;;;;:::o;13071:797::-;13315:4;13353:3;13342:9;13338:19;13330:27;;13367:71;13435:1;13424:9;13420:17;13411:6;13367:71;:::i;:::-;13448:83;13527:2;13516:9;13512:18;13503:6;13448:83;:::i;:::-;13541:72;13609:2;13598:9;13594:18;13585:6;13541:72;:::i;:::-;13623;13691:2;13680:9;13676:18;13667:6;13623:72;:::i;:::-;13705:73;13773:3;13762:9;13758:19;13749:6;13705:73;:::i;:::-;13788;13856:3;13845:9;13841:19;13832:6;13788:73;:::i;:::-;13071:797;;;;;;;;;:::o;13874:332::-;13995:4;14033:2;14022:9;14018:18;14010:26;;14046:71;14114:1;14103:9;14099:17;14090:6;14046:71;:::i;:::-;14127:72;14195:2;14184:9;14180:18;14171:6;14127:72;:::i;:::-;13874:332;;;;;:::o;14212:807::-;14461:4;14499:3;14488:9;14484:19;14476:27;;14513:71;14581:1;14570:9;14566:17;14557:6;14513:71;:::i;:::-;14594:72;14662:2;14651:9;14647:18;14638:6;14594:72;:::i;:::-;14676:80;14752:2;14741:9;14737:18;14728:6;14676:80;:::i;:::-;14766;14842:2;14831:9;14827:18;14818:6;14766:80;:::i;:::-;14856:73;14924:3;14913:9;14909:19;14900:6;14856:73;:::i;:::-;14939;15007:3;14996:9;14992:19;14983:6;14939:73;:::i;:::-;14212:807;;;;;;;;;:::o;15025:210::-;15112:4;15150:2;15139:9;15135:18;15127:26;;15163:65;15225:1;15214:9;15210:17;15201:6;15163:65;:::i;:::-;15025:210;;;;:::o;15241:313::-;15354:4;15392:2;15381:9;15377:18;15369:26;;15441:9;15435:4;15431:20;15427:1;15416:9;15412:17;15405:47;15469:78;15542:4;15533:6;15469:78;:::i;:::-;15461:86;;15241:313;;;;:::o;15560:419::-;15726:4;15764:2;15753:9;15749:18;15741:26;;15813:9;15807:4;15803:20;15799:1;15788:9;15784:17;15777:47;15841:131;15967:4;15841:131;:::i;:::-;15833:139;;15560:419;;;:::o;15985:::-;16151:4;16189:2;16178:9;16174:18;16166:26;;16238:9;16232:4;16228:20;16224:1;16213:9;16209:17;16202:47;16266:131;16392:4;16266:131;:::i;:::-;16258:139;;15985:419;;;:::o;16410:::-;16576:4;16614:2;16603:9;16599:18;16591:26;;16663:9;16657:4;16653:20;16649:1;16638:9;16634:17;16627:47;16691:131;16817:4;16691:131;:::i;:::-;16683:139;;16410:419;;;:::o;16835:::-;17001:4;17039:2;17028:9;17024:18;17016:26;;17088:9;17082:4;17078:20;17074:1;17063:9;17059:17;17052:47;17116:131;17242:4;17116:131;:::i;:::-;17108:139;;16835:419;;;:::o;17260:::-;17426:4;17464:2;17453:9;17449:18;17441:26;;17513:9;17507:4;17503:20;17499:1;17488:9;17484:17;17477:47;17541:131;17667:4;17541:131;:::i;:::-;17533:139;;17260:419;;;:::o;17685:::-;17851:4;17889:2;17878:9;17874:18;17866:26;;17938:9;17932:4;17928:20;17924:1;17913:9;17909:17;17902:47;17966:131;18092:4;17966:131;:::i;:::-;17958:139;;17685:419;;;:::o;18110:::-;18276:4;18314:2;18303:9;18299:18;18291:26;;18363:9;18357:4;18353:20;18349:1;18338:9;18334:17;18327:47;18391:131;18517:4;18391:131;:::i;:::-;18383:139;;18110:419;;;:::o;18535:::-;18701:4;18739:2;18728:9;18724:18;18716:26;;18788:9;18782:4;18778:20;18774:1;18763:9;18759:17;18752:47;18816:131;18942:4;18816:131;:::i;:::-;18808:139;;18535:419;;;:::o;18960:::-;19126:4;19164:2;19153:9;19149:18;19141:26;;19213:9;19207:4;19203:20;19199:1;19188:9;19184:17;19177:47;19241:131;19367:4;19241:131;:::i;:::-;19233:139;;18960:419;;;:::o;19385:::-;19551:4;19589:2;19578:9;19574:18;19566:26;;19638:9;19632:4;19628:20;19624:1;19613:9;19609:17;19602:47;19666:131;19792:4;19666:131;:::i;:::-;19658:139;;19385:419;;;:::o;19810:::-;19976:4;20014:2;20003:9;19999:18;19991:26;;20063:9;20057:4;20053:20;20049:1;20038:9;20034:17;20027:47;20091:131;20217:4;20091:131;:::i;:::-;20083:139;;19810:419;;;:::o;20235:222::-;20328:4;20366:2;20355:9;20351:18;20343:26;;20379:71;20447:1;20436:9;20432:17;20423:6;20379:71;:::i;:::-;20235:222;;;;:::o;20463:831::-;20726:4;20764:3;20753:9;20749:19;20741:27;;20778:71;20846:1;20835:9;20831:17;20822:6;20778:71;:::i;:::-;20859:80;20935:2;20924:9;20920:18;20911:6;20859:80;:::i;:::-;20986:9;20980:4;20976:20;20971:2;20960:9;20956:18;20949:48;21014:108;21117:4;21108:6;21014:108;:::i;:::-;21006:116;;21132:72;21200:2;21189:9;21185:18;21176:6;21132:72;:::i;:::-;21214:73;21282:3;21271:9;21267:19;21258:6;21214:73;:::i;:::-;20463:831;;;;;;;;:::o;21300:214::-;21389:4;21427:2;21416:9;21412:18;21404:26;;21440:67;21504:1;21493:9;21489:17;21480:6;21440:67;:::i;:::-;21300:214;;;;:::o;21601:132::-;21668:4;21691:3;21683:11;;21721:4;21716:3;21712:14;21704:22;;21601:132;;;:::o;21739:114::-;21806:6;21840:5;21834:12;21824:22;;21739:114;;;:::o;21859:99::-;21911:6;21945:5;21939:12;21929:22;;21859:99;;;:::o;21964:113::-;22034:4;22066;22061:3;22057:14;22049:22;;21964:113;;;:::o;22083:184::-;22182:11;22216:6;22211:3;22204:19;22256:4;22251:3;22247:14;22232:29;;22083:184;;;;:::o;22273:169::-;22357:11;22391:6;22386:3;22379:19;22431:4;22426:3;22422:14;22407:29;;22273:169;;;;:::o;22448:305::-;22488:3;22507:20;22525:1;22507:20;:::i;:::-;22502:25;;22541:20;22559:1;22541:20;:::i;:::-;22536:25;;22695:1;22627:66;22623:74;22620:1;22617:81;22614:107;;;22701:18;;:::i;:::-;22614:107;22745:1;22742;22738:9;22731:16;;22448:305;;;;:::o;22759:185::-;22799:1;22816:20;22834:1;22816:20;:::i;:::-;22811:25;;22850:20;22868:1;22850:20;:::i;:::-;22845:25;;22889:1;22879:35;;22894:18;;:::i;:::-;22879:35;22936:1;22933;22929:9;22924:14;;22759:185;;;;:::o;22950:348::-;22990:7;23013:20;23031:1;23013:20;:::i;:::-;23008:25;;23047:20;23065:1;23047:20;:::i;:::-;23042:25;;23235:1;23167:66;23163:74;23160:1;23157:81;23152:1;23145:9;23138:17;23134:105;23131:131;;;23242:18;;:::i;:::-;23131:131;23290:1;23287;23283:9;23272:20;;22950:348;;;;:::o;23304:191::-;23344:4;23364:20;23382:1;23364:20;:::i;:::-;23359:25;;23398:20;23416:1;23398:20;:::i;:::-;23393:25;;23437:1;23434;23431:8;23428:34;;;23442:18;;:::i;:::-;23428:34;23487:1;23484;23480:9;23472:17;;23304:191;;;;:::o;23501:96::-;23538:7;23567:24;23585:5;23567:24;:::i;:::-;23556:35;;23501:96;;;:::o;23603:104::-;23648:7;23677:24;23695:5;23677:24;:::i;:::-;23666:35;;23603:104;;;:::o;23713:90::-;23747:7;23790:5;23783:13;23776:21;23765:32;;23713:90;;;:::o;23809:126::-;23846:7;23886:42;23879:5;23875:54;23864:65;;23809:126;;;:::o;23941:77::-;23978:7;24007:5;23996:16;;23941:77;;;:::o;24024:86::-;24059:7;24099:4;24092:5;24088:16;24077:27;;24024:86;;;:::o;24116:121::-;24174:9;24207:24;24225:5;24207:24;:::i;:::-;24194:37;;24116:121;;;:::o;24243:124::-;24304:9;24337:24;24355:5;24337:24;:::i;:::-;24324:37;;24243:124;;;:::o;24373:307::-;24441:1;24451:113;24465:6;24462:1;24459:13;24451:113;;;24550:1;24545:3;24541:11;24535:18;24531:1;24526:3;24522:11;24515:39;24487:2;24484:1;24480:10;24475:15;;24451:113;;;24582:6;24579:1;24576:13;24573:101;;;24662:1;24653:6;24648:3;24644:16;24637:27;24573:101;24422:258;24373:307;;;:::o;24686:320::-;24730:6;24767:1;24761:4;24757:12;24747:22;;24814:1;24808:4;24804:12;24835:18;24825:81;;24891:4;24883:6;24879:17;24869:27;;24825:81;24953:2;24945:6;24942:14;24922:18;24919:38;24916:84;;;24972:18;;:::i;:::-;24916:84;24737:269;24686:320;;;:::o;25012:233::-;25051:3;25074:24;25092:5;25074:24;:::i;:::-;25065:33;;25120:66;25113:5;25110:77;25107:103;;;25190:18;;:::i;:::-;25107:103;25237:1;25230:5;25226:13;25219:20;;25012:233;;;:::o;25251:180::-;25299:77;25296:1;25289:88;25396:4;25393:1;25386:15;25420:4;25417:1;25410:15;25437:180;25485:77;25482:1;25475:88;25582:4;25579:1;25572:15;25606:4;25603:1;25596:15;25623:180;25671:77;25668:1;25661:88;25768:4;25765:1;25758:15;25792:4;25789:1;25782:15;25809:180;25857:77;25854:1;25847:88;25954:4;25951:1;25944:15;25978:4;25975:1;25968:15;25995:180;26043:77;26040:1;26033:88;26140:4;26137:1;26130:15;26164:4;26161:1;26154:15;26304:117;26413:1;26410;26403:12;26427:102;26468:6;26519:2;26515:7;26510:2;26503:5;26499:14;26495:28;26485:38;;26427:102;;;:::o;26535:222::-;26675:34;26671:1;26663:6;26659:14;26652:58;26744:5;26739:2;26731:6;26727:15;26720:30;26535:222;:::o;26763:174::-;26903:26;26899:1;26891:6;26887:14;26880:50;26763:174;:::o;26943:162::-;27083:14;27079:1;27071:6;27067:14;27060:38;26943:162;:::o;27111:221::-;27251:34;27247:1;27239:6;27235:14;27228:58;27320:4;27315:2;27307:6;27303:15;27296:29;27111:221;:::o;27338:177::-;27478:29;27474:1;27466:6;27462:14;27455:53;27338:177;:::o;27521:220::-;27661:34;27657:1;27649:6;27645:14;27638:58;27730:3;27725:2;27717:6;27713:15;27706:28;27521:220;:::o;27747:182::-;27887:34;27883:1;27875:6;27871:14;27864:58;27747:182;:::o;27935:228::-;28075:34;28071:1;28063:6;28059:14;28052:58;28144:11;28139:2;28131:6;28127:15;28120:36;27935:228;:::o;28169:224::-;28309:34;28305:1;28297:6;28293:14;28286:58;28378:7;28373:2;28365:6;28361:15;28354:32;28169:224;:::o;28399:223::-;28539:34;28535:1;28527:6;28523:14;28516:58;28608:6;28603:2;28595:6;28591:15;28584:31;28399:223;:::o;28628:225::-;28768:34;28764:1;28756:6;28752:14;28745:58;28837:8;28832:2;28824:6;28820:15;28813:33;28628:225;:::o;28859:122::-;28932:24;28950:5;28932:24;:::i;:::-;28925:5;28922:35;28912:63;;28971:1;28968;28961:12;28912:63;28859:122;:::o;28987:138::-;29068:32;29094:5;29068:32;:::i;:::-;29061:5;29058:43;29048:71;;29115:1;29112;29105:12;29048:71;28987:138;:::o;29131:116::-;29201:21;29216:5;29201:21;:::i;:::-;29194:5;29191:32;29181:60;;29237:1;29234;29227:12;29181:60;29131:116;:::o;29253:122::-;29326:24;29344:5;29326:24;:::i;:::-;29319:5;29316:35;29306:63;;29365:1;29362;29355:12;29306:63;29253:122;:::o

Swarm Source

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