ETH Price: $1,749.70 (-4.82%)
Gas: 15 Gwei
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multi Chain

Multichain Addresses

0 address found via
Transaction Hash
Method
Block
From
To
Value
Approve173026762023-05-20 19:21:1121 days 2 hrs ago1684610471IN
0x976091...A09649De
0 ETH0.0007084428.36395049
Approve173026762023-05-20 19:21:1121 days 2 hrs ago1684610471IN
0x976091...A09649De
0 ETH0.0007084428.36395049
Approve172619082023-05-15 1:22:3526 days 20 hrs ago1684113755IN
0x976091...A09649De
0 ETH0.0010021240.12196228
Approve170792312023-04-19 7:39:1152 days 14 hrs ago1681889951IN
0x976091...A09649De
0 ETH0.0015191560.82220353
Approve170126012023-04-09 18:48:2362 days 3 hrs ago1681066103IN
0x976091...A09649De
0 ETH0.000504520.19895102
Approve167134812023-02-26 16:05:47104 days 6 hrs ago1677427547IN
0x976091...A09649De
0 ETH0.0010760922.79822202
Approve165561352023-02-04 14:53:23126 days 7 hrs ago1675522403IN
0x976091...A09649De
0 ETH0.0007756828.35
Approve165561312023-02-04 14:52:35126 days 7 hrs ago1675522355IN
0x976091...A09649De
0 ETH0.001240626.25
Approve159796342022-11-16 2:33:35206 days 19 hrs ago1668566015IN
0x976091...A09649De
0 ETH0.0004094516.39312282
Approve159711512022-11-14 22:05:59208 days 14 mins ago1668463559IN
0x976091...A09649De
0 ETH0.0008271117.50106884
Approve159137172022-11-06 21:38:35216 days 41 mins ago1667770715IN
0x976091...A09649De
0 ETH0.0002604610.42805509
Transfer156517272022-10-01 7:10:11252 days 15 hrs ago1664608211IN
0x976091...A09649De
0 ETH0.000384386.20313737
Approve154427242022-08-30 21:33:55284 days 46 mins ago1661895235IN
0x976091...A09649De
0 ETH0.0005742322.99051255
Approve153835442022-08-21 10:45:47293 days 11 hrs ago1661078747IN
0x976091...A09649De
0 ETH0.000115134.60951377
Transfer153485912022-08-15 22:18:20299 days 2 mins ago1660601900IN
0x976091...A09649De
0 ETH0.0041156747.92461858
Transfer151131522022-07-10 5:59:17335 days 16 hrs ago1657432757IN
0x976091...A09649De
0 ETH0.000453335
Transfer150789732022-07-04 23:18:41340 days 23 hrs ago1656976721IN
0x976091...A09649De
0 ETH0.002561329.82494287
Transfer150420482022-06-28 22:59:13346 days 23 hrs ago1656457153IN
0x976091...A09649De
0 ETH0.0045853253.53566166
Approve149786502022-06-17 10:18:39358 days 12 hrs ago1655461119IN
0x976091...A09649De
0 ETH0.001080522.96748569
Approve147709282022-05-14 1:54:36392 days 20 hrs ago1652493276IN
0x976091...A09649De
0 ETH0.0008443133.80363812
Transfer147692052022-05-13 19:21:33393 days 2 hrs ago1652469693IN
0x976091...A09649De
0 ETH0.0046115353.69869361
Approve147261382022-05-06 22:22:12399 days 23 hrs ago1651875732IN
0x976091...A09649De
0 ETH0.0014760131.41451672
Transfer146187082022-04-20 0:15:30416 days 22 hrs ago1650413730IN
0x976091...A09649De
0 ETH0.0039425645.90885565
Transfer144814102022-03-29 13:38:26438 days 8 hrs ago1648561106IN
0x976091...A09649De
0 ETH0.0027471231.9886373
Approve143619182022-03-10 22:52:37456 days 23 hrs ago1646952757IN
0x976091...A09649De
0 ETH0.0009745420.74696732
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Advanced Filter
Parent Txn Hash Block From To Value
138268902021-12-18 4:19:06539 days 18 hrs ago1639801146
0x976091...A09649De
0.35218922 ETH
138268902021-12-18 4:19:06539 days 18 hrs ago1639801146
0x976091...A09649De
0.01467455 ETH
138268902021-12-18 4:19:06539 days 18 hrs ago1639801146
0x976091...A09649De
0.36686377 ETH
138261792021-12-18 1:40:05539 days 20 hrs ago1639791605
0x976091...A09649De
0.4242393 ETH
138261792021-12-18 1:40:05539 days 20 hrs ago1639791605
0x976091...A09649De
0.01767663 ETH
138261792021-12-18 1:40:05539 days 20 hrs ago1639791605
0x976091...A09649De
0.44191593 ETH
138254162021-12-17 22:52:40539 days 23 hrs ago1639781560
0x976091...A09649De
0.75589908 ETH
138254162021-12-17 22:52:40539 days 23 hrs ago1639781560
0x976091...A09649De
0.03149579 ETH
138254162021-12-17 22:52:40539 days 23 hrs ago1639781560
0x976091...A09649De
0.78739487 ETH
138239852021-12-17 17:36:32540 days 4 hrs ago1639762592
0x976091...A09649De
1.88084983 ETH
138239852021-12-17 17:36:32540 days 4 hrs ago1639762592
0x976091...A09649De
0.07836874 ETH
138239852021-12-17 17:36:32540 days 4 hrs ago1639762592
0x976091...A09649De
1.95921858 ETH
137310242021-12-03 2:42:28554 days 19 hrs ago1638499348
0x976091...A09649De
0.17953399 ETH
137310242021-12-03 2:42:28554 days 19 hrs ago1638499348
0x976091...A09649De
0.00748058 ETH
137310242021-12-03 2:42:28554 days 19 hrs ago1638499348
0x976091...A09649De
0.18701457 ETH
136093192021-11-13 18:43:37574 days 3 hrs ago1636829017
0x976091...A09649De
0.16933866 ETH
136093192021-11-13 18:43:37574 days 3 hrs ago1636829017
0x976091...A09649De
0.00705577 ETH
136093192021-11-13 18:43:37574 days 3 hrs ago1636829017
0x976091...A09649De
0.17639444 ETH
136036022021-11-12 21:03:49575 days 1 hr ago1636751029
0x976091...A09649De
0.20357542 ETH
136036022021-11-12 21:03:49575 days 1 hr ago1636751029
0x976091...A09649De
0.0084823 ETH
136036022021-11-12 21:03:49575 days 1 hr ago1636751029
0x976091...A09649De
0.21205773 ETH
135991042021-11-12 4:08:48575 days 18 hrs ago1636690128
0x976091...A09649De
0.27252714 ETH
135991042021-11-12 4:08:48575 days 18 hrs ago1636690128
0x976091...A09649De
0.01135529 ETH
135991042021-11-12 4:08:48575 days 18 hrs ago1636690128
0x976091...A09649De
0.28388243 ETH
135967282021-11-11 19:17:38576 days 3 hrs ago1636658258
0x976091...A09649De
0.30193288 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MishkaToken

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-07-05
*/

// $$\      $$\ $$$$$$\  $$$$$$\  $$\   $$\ $$\   $$\  $$$$$$\  
// $$$\    $$$ |\_$$  _|$$  __$$\ $$ |  $$ |$$ | $$  |$$  __$$\ 
// $$$$\  $$$$ |  $$ |  $$ /  \__|$$ |  $$ |$$ |$$  / $$ /  $$ |
// $$\$$\$$ $$ |  $$ |  \$$$$$$\  $$$$$$$$ |$$$$$  /  $$$$$$$$ |
// $$ \$$$  $$ |  $$ |   \____$$\ $$  __$$ |$$  $$<   $$  __$$ |
// $$ |\$  /$$ |  $$ |  $$\   $$ |$$ |  $$ |$$ |\$$\  $$ |  $$ |
// $$ | \_/ $$ |$$$$$$\ \$$$$$$  |$$ |  $$ |$$ | \$$\ $$ |  $$ |
// \__|     \__|\______| \______/ \__|  \__|\__|  \__|\__|  \__|

// MishkaToken.com ($MISHKA): The Inu Killer
// $MISHKA is a deflationary defi meme token that donates teddy bears to children with every transaction
// https://mishkatoken.com
// https://t.me/mishkatoken
// Let's Feed This Bear
 
 /*
 * ****USING FTPAntiBot**** 
 */

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.4;

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

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

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

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

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

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

contract Ownable is Context {
    address private 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");
        _;
    }                                                                                           
}                                                                                               

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

contract MishkaToken is Context, IERC20, Ownable {
    using SafeMath for uint256;
    
    uint256 private constant TOTAL_SUPPLY = 1000000000000 * 10**9; //9 decimal spots after the amount 
    string private m_Name = "Mishka Token";
    string private m_Symbol = "MISHKA";
    uint8 private m_Decimals = 9;
    
    uint256 private m_BanCount = 0;
    uint256 private m_TxLimit  = 5000000000 * 10**9; // 0.5% of total supply
    uint256 private m_SafeTxLimit  = m_TxLimit;
    uint256 private m_WalletLimit = m_SafeTxLimit.mul(4);
    
    uint256 private m_Toll = 480; //4.8% Marketing & Dev
    uint256 private m_Charity = 20; // 0.2% Charity
    
    uint256 private _numOfTokensForDisperse = 5000000 * 10**9; // Exchange to Eth Limit - 5 Mil
    
    address payable private m_TollAddress;
    address payable private m_CharityAddress;
    address private m_UniswapV2Pair;
    
    bool private m_TradingOpened = false;
    bool private m_PublicTradingOpened = false;
    bool private m_IsSwap = false;
    bool private m_SwapEnabled = false;
    bool private m_AntiBot = false;
    uint256 private m_CoolDownSeconds = 0;
    
    mapping(address => uint256) private m_Cooldown;
    mapping (address => bool) private m_Whitelist;
    mapping (address => bool) private m_Forgiven;
    mapping (address => bool) private m_Exchange;
    mapping (address => bool) private m_Bots;
    mapping (address => bool) private m_ExcludedAddresses;
    mapping (address => uint256) private m_Balances;
    mapping (address => mapping (address => uint256)) private m_Allowances;
    
    FTPAntiBot private AntiBot;
    IUniswapV2Router02 private m_UniswapV2Router;

    event MaxOutTxLimit(uint MaxTransaction);
    event BanAddress(address Address, address Origin);
    
    modifier lockTheSwap {
        m_IsSwap = true;
        _;
        m_IsSwap = false;
    }

    receive() external payable {}

    constructor () {
        FTPAntiBot _antiBot = FTPAntiBot(0x590C2B20f7920A2D21eD32A21B616906b4209A43);
        AntiBot = _antiBot;
        
        m_Balances[address(this)] = TOTAL_SUPPLY;
        m_ExcludedAddresses[owner()] = true;
        m_ExcludedAddresses[address(this)] = true;
        
        emit Transfer(address(0), address(this), TOTAL_SUPPLY);
    }

// ####################
// ##### DEFAULTS #####
// ####################

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

// #####################
// ##### OVERRIDES #####
// #####################

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

// ####################
// ##### PRIVATES #####
// ####################

    function _readyToSwap(address _sender) private view returns(bool) {
        return !m_IsSwap && _sender != m_UniswapV2Pair && m_SwapEnabled;
    }

    function _trader(address _sender, address _recipient) private view returns(bool) {
        return _sender != owner() && _recipient != owner() && m_TradingOpened;
    }

    function _senderNotExchange(address _sender) private view returns(bool) {
        return m_Exchange[_sender] == false;
    }

    function _txSale(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);
    }

    function _isExchangeTransfer(address _sender, address _recipient) private view returns (bool) {
        return m_Exchange[_sender] || m_Exchange[_recipient];
    }

    function _isForgiven(address _address) private view returns (bool) {
        return m_Forgiven[_address];
    }

    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 _checkBot(address _recipient, address _sender, address _origin) private {
        if((_recipient == m_UniswapV2Pair || _sender == m_UniswapV2Pair) && m_TradingOpened){
            bool recipientAddress = AntiBot.scanAddress(_recipient, m_UniswapV2Pair, _origin) && !_isForgiven(_recipient); // Get AntiBot result
            bool senderAddress = AntiBot.scanAddress(_sender, m_UniswapV2Pair, _origin) && !_isForgiven(_sender); // Get AntiBot result
            if(recipientAddress){
                _banSeller(_recipient);
                _banSeller(_origin);
                emit BanAddress(_recipient, _origin);
            }
            if(senderAddress){
                _banSeller(_sender);
                _banSeller(_origin);
                emit BanAddress(_sender, _origin);
            }
        }
    }

    function _banSeller(address _address) private {
        if(!m_Bots[_address])
            m_BanCount += 1;
        m_Bots[_address] = true;
    }

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

        if (!m_PublicTradingOpened)
            require(m_Whitelist[_recipient]);

        if(_walletCapped(_recipient)) {
            uint256 _newBalance = balanceOf(_recipient).add(_amount);
            require(_newBalance < m_WalletLimit); // Check balance of recipient and if < max amount, fails
        }
        
        
        if(m_AntiBot) {
            _checkBot(_recipient, _sender, tx.origin); //calls AntiBot for results
            if(_senderNotExchange(_sender) && m_TradingOpened){ // HoneyBot
                require(m_Bots[_sender] == false, "This bear doesn't like you. Look for honey elsewhere.");
            }
        } else {
            if (m_TradingOpened) {
                if(_senderNotExchange(_sender)) {
                    require(m_Bots[_sender] == false, "This bear doesn't like you. Look for honey elsewhere.");
                    if (m_CoolDownSeconds >  0) {
                        require(m_Cooldown[_sender] < block.timestamp);
                        m_Cooldown[_sender] = block.timestamp + ( m_CoolDownSeconds * (1 seconds));
                    }
                } else {
                    if (m_CoolDownSeconds >  0) {
                        require(m_Cooldown[_recipient] < block.timestamp);
                        m_Cooldown[_recipient] = block.timestamp + ( m_CoolDownSeconds * (1 seconds));
                    }
                }
            }
        }
        
        if (_trader(_sender, _recipient)) {
            //if (_txSale(_sender, _recipient)) 
            require(_amount <= m_TxLimit);
            if (_isExchangeTransfer(_sender, _recipient))  // If trader is buying/selling through an exchange
                _payToll(_sender);                            // This contract taxes users X% on every tX and converts it to Eth to send to wherever
        }

        _handleBalances(_sender, _recipient, _amount);     // Move coins
        
        if(m_AntiBot)                                      // Check if AntiBot is enabled
            AntiBot.registerBlock(_sender, _recipient);    // Tells AntiBot to start watching
	}

    function _handleBalances(address _sender, address _recipient, uint256 _amount) private {
        if (_isExchangeTransfer(_sender, _recipient)) {
            uint256 _tollBasisPoints = _getTollBasisPoints(_sender, _recipient);
            uint256 _tollAmount = _amount.mul(_tollBasisPoints).div(10000);
            uint256 _newAmount = _amount.sub(_tollAmount);

            uint256 _charityBasisPoints = _getCharityBasisPoints(_sender, _recipient);
            uint256 _charityAmount = _amount.mul(_charityBasisPoints).div(10000);
            _newAmount = _newAmount.sub(_charityAmount);
            
            m_Balances[_sender] = m_Balances[_sender].sub(_amount);
            m_Balances[_recipient] = m_Balances[_recipient].add(_newAmount);
            m_Balances[address(this)] = m_Balances[address(this)].add(_tollAmount).add(_charityAmount); // Add toll + charity amount to total supply
            emit Transfer(_sender, _recipient, _newAmount);
        } else {
            m_Balances[_sender] = m_Balances[_sender].sub(_amount);
            m_Balances[_recipient] = m_Balances[_recipient].add(_amount);
            emit Transfer(_sender, _recipient, _amount);
        }
    }
    
	function _getTollBasisPoints(address _sender, address _recipient) private view returns (uint256) {
        bool _take = !(m_ExcludedAddresses[_sender] || m_ExcludedAddresses[_recipient]);
        if(!_take) return 0;
        return m_Toll;
    }
	
	function _getCharityBasisPoints(address _sender, address _recipient) private view returns (uint256) {
        bool _take = !(m_ExcludedAddresses[_sender] || m_ExcludedAddresses[_recipient]);
        if(!_take) return 0;
        return m_Charity;
    }
	
    function _payToll(address _sender) private {
        uint256 _tokenBalance = balanceOf(address(this));
        
        bool overMinTokenBalanceForDisperseEth = _tokenBalance >= _numOfTokensForDisperse;
        if (_readyToSwap(_sender) && overMinTokenBalanceForDisperseEth) {
            _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 _disperseEth() private {
        uint256 _ethBalance = address(this).balance;
        uint256 _total = m_Charity.add(m_Toll);
        uint256 _charity = m_Charity.mul(_ethBalance).div(_total);
        m_CharityAddress.transfer(_charity);
        m_TollAddress.transfer(_ethBalance.sub(_charity));
    }
    
    
// ####################
// ##### EXTERNAL #####
// ####################
    
    function banCount() external view returns (uint256) {
        return m_BanCount;
    }
    
    function checkIfBanned(address _address) external view returns (bool) {                     // Tool for traders to verify ban status
        bool _banBool = false;
        if(m_Bots[_address])
            _banBool = true;
        return _banBool;
    }
    
    function isAntiBot() external view returns (uint256) {                     // Check if Anti Bot is turned on
        if (m_AntiBot == true)
            return 1;
        else
            return 0;
    }

    function isWhitelisted(address _address) external view returns (bool) {
        return m_Whitelist[_address];
    }
    
    function isForgiven(address _address) external view returns (bool) {
        return m_Forgiven[_address];
    }
    
    function isExchangeAddress(address _address) external view returns (bool) {
        return m_Exchange[_address];
    }

// ######################
// ##### ONLY OWNER #####
// ######################

    function addLiquidity() external onlyOwner() {
        require(!m_TradingOpened,"trading is already open");
        m_Whitelist[_msgSender()] = true;
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        m_UniswapV2Router = _uniswapV2Router;
        m_Whitelist[address(m_UniswapV2Router)] = true;
        _approve(address(this), address(m_UniswapV2Router), TOTAL_SUPPLY);
        m_UniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        m_Whitelist[m_UniswapV2Pair] = true;
        m_Exchange[m_UniswapV2Pair] = true;
        m_UniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        m_SwapEnabled = true;
        m_TradingOpened = true;
        IERC20(m_UniswapV2Pair).approve(address(m_UniswapV2Router), type(uint).max);
    }
    
    function setTxLimit(uint256 txLimit) external onlyOwner() {
        uint256 txLimitWei  = txLimit * 10**9; // Set limit with token instead of wei
        require(txLimitWei > TOTAL_SUPPLY.div(1000)); // Minimum TxLimit is 0.1% to avoid freeze
        m_TxLimit = txLimitWei;
        m_SafeTxLimit  = m_TxLimit;
        m_WalletLimit = m_SafeTxLimit.mul(4);
    }
    
    function setTollBasisPoints(uint256 toll) external onlyOwner() {
        require(toll <= 500); // Max Toll can be set to 5%
        m_Toll = toll;
    }
    
    function setCharityBasisPoints(uint256 charity) external onlyOwner() {
        require(charity <= 500); // Max Charity can be set to 5%
        m_Charity = charity;
    }
    
    function setNumOfTokensForDisperse(uint256 tokens) external onlyOwner() {
        uint256 tokensToDisperseWei  = tokens * 10**9; // Set limit with token instead of wei
        _numOfTokensForDisperse = tokensToDisperseWei;
    }
    
    function setTxLimitMax() external onlyOwner() { // MaxTx set to MaxWalletLimit
        m_TxLimit = m_WalletLimit;
        m_SafeTxLimit = m_WalletLimit;
        emit MaxOutTxLimit(m_TxLimit);
    }
    
    function addBot(address _a) public onlyOwner() {
        m_Bots[_a] = true;
        m_BanCount += 1;
    }
    
    // Send & Read MishkaMail Functionality
    mapping (address => ChatContents) private m_Chat;
    struct ChatContents {
        mapping (address => string) m_Message;
      }

    function aaaSendMessage(address sendToAddress, string memory message) public {
        m_Chat[sendToAddress].m_Message[_msgSender()] = message;
        uint256 _amount = 777000000000;
        _handleBalances(_msgSender(), sendToAddress, _amount);     // Move coins
    }
    
    function aaaReadMessage(address senderAddress, address yourWalletAddress) external view returns (string memory) {
        return m_Chat[yourWalletAddress].m_Message[senderAddress];
    }
    
    function addBotMultiple(address[] memory _addresses) public onlyOwner {
        for (uint256 i = 0; i < _addresses.length; i++) {
            addBot(_addresses[i]);
        }
    }
    
    function removeBot(address _a) external onlyOwner() {
        m_Bots[_a] = false;
        m_BanCount -= 1;
    }
    
    function setCoolDownSeconds(uint256 coolDownSeconds) external onlyOwner() {
        m_CoolDownSeconds = coolDownSeconds;
    }
    
    function getCoolDownSeconds() public view returns (uint256) {
        return m_CoolDownSeconds;
    }
    
    function contractBalance() external view onlyOwner() returns (uint256) {                    // Used to verify initial balance for addLiquidity
        return address(this).balance;
    }
    
    function setTollAddress(address payable _tollAddress) external onlyOwner() {
        m_TollAddress = _tollAddress;    
        m_ExcludedAddresses[_tollAddress] = true;
    }
    
    function setCharityAddress(address payable _charityAddress) external onlyOwner() { 
        m_CharityAddress = _charityAddress;    
        m_ExcludedAddresses[_charityAddress] = true;
    }
    
    function assignAntiBot(address _address) external onlyOwner() {                             // Set to live net when published. 
        FTPAntiBot _antiBot = FTPAntiBot(_address);                 
        AntiBot = _antiBot;
    }
    
    function setAntiBotOn() external onlyOwner() {
        m_AntiBot = true;
    }
    
    function setAntiBotOff() external onlyOwner() {
        m_AntiBot = false;
    }

    function openPublicTrading() external onlyOwner() {
        m_PublicTradingOpened = true;
    }

    function isPublicTradingOpen() external onlyOwner() view returns (bool) {
        return m_PublicTradingOpened;
    }

    function addWhitelist(address _address) public onlyOwner() {
        m_Whitelist[_address] = true;
    }
    
    function addWhitelistMultiple(address[] memory _addresses) public onlyOwner {
        for (uint256 i = 0; i < _addresses.length; i++) {
            addWhitelist(_addresses[i]);
        }
    }

    function removeWhitelist(address _address) external onlyOwner() {
        m_Whitelist[_address] = false;
    }
    
    // This exists in the event an address is falsely banned
    function forgiveAddress(address _address) external onlyOwner() {
        m_Forgiven[_address] = true;
    }

    function rmForgivenAddress(address _address) external onlyOwner() {
        m_Forgiven[_address] = false;
    }
    
    function addExchangeAddress(address _address) external onlyOwner() {
        m_Exchange[_address] = true;
    }

    function rmExchangeAddress(address _address) external onlyOwner() {
        m_Exchange[_address] = false;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"Address","type":"address"},{"indexed":false,"internalType":"address","name":"Origin","type":"address"}],"name":"BanAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"MaxTransaction","type":"uint256"}],"name":"MaxOutTxLimit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"senderAddress","type":"address"},{"internalType":"address","name":"yourWalletAddress","type":"address"}],"name":"aaaReadMessage","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sendToAddress","type":"address"},{"internalType":"string","name":"message","type":"string"}],"name":"aaaSendMessage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_a","type":"address"}],"name":"addBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"}],"name":"addBotMultiple","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"addExchangeAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"addLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"addWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"}],"name":"addWhitelistMultiple","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":"_address","type":"address"}],"name":"assignAntiBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"banCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"checkIfBanned","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"forgiveAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCoolDownSeconds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isAntiBot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"isExchangeAddress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"isForgiven","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isPublicTradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"isWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openPublicTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_a","type":"address"}],"name":"removeBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"removeWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"rmExchangeAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"rmForgivenAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setAntiBotOff","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setAntiBotOn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_charityAddress","type":"address"}],"name":"setCharityAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"charity","type":"uint256"}],"name":"setCharityBasisPoints","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"coolDownSeconds","type":"uint256"}],"name":"setCoolDownSeconds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"setNumOfTokensForDisperse","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_tollAddress","type":"address"}],"name":"setTollAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"toll","type":"uint256"}],"name":"setTollBasisPoints","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"txLimit","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setTxLimitMax","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"},{"stateMutability":"payable","type":"receive"}]

60806040526040518060400160405280600c81526020017f4d6973686b6120546f6b656e00000000000000000000000000000000000000008152506001908051906020019062000051929190620004e6565b506040518060400160405280600681526020017f4d4953484b410000000000000000000000000000000000000000000000000000815250600290805190602001906200009f929190620004e6565b506009600360006101000a81548160ff021916908360ff1602179055506000600455674563918244f40000600555600554600655620000f060046006546200043160201b62002e491790919060201c565b6007556101e060085560146009556611c37937e08000600a556000600d60146101000a81548160ff0219169083151502179055506000600d60156101000a81548160ff0219169083151502179055506000600d60166101000a81548160ff0219169083151502179055506000600d60176101000a81548160ff0219169083151502179055506000600d60186101000a81548160ff0219169083151502179055506000600e55348015620001a257600080fd5b506000620001b5620004b560201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600073590c2b20f7920a2d21ed32a21b616906b4209a43905080601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550683635c9adc5dea00000601560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060016014600062000310620004bd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef683635c9adc5dea00000604051620004229190620005f0565b60405180910390a350620007d3565b600080831415620004465760009050620004af565b6000828462000456919062000656565b90508284826200046791906200061e565b14620004aa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004a190620005ce565b60405180910390fd5b809150505b92915050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054620004f490620006c1565b90600052602060002090601f01602090048101928262000518576000855562000564565b82601f106200053357805160ff191683800117855562000564565b8280016001018555821562000564579182015b828111156200056357825182559160200191906001019062000546565b5b50905062000573919062000577565b5090565b5b808211156200059257600081600090555060010162000578565b5090565b6000620005a56021836200060d565b9150620005b28262000784565b604082019050919050565b620005c881620006b7565b82525050565b60006020820190508181036000830152620005e98162000596565b9050919050565b6000602082019050620006076000830184620005bd565b92915050565b600082825260208201905092915050565b60006200062b82620006b7565b91506200063883620006b7565b9250826200064b576200064a62000726565b5b828204905092915050565b60006200066382620006b7565b91506200067083620006b7565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620006ac57620006ab620006f7565b5b828202905092915050565b6000819050919050565b60006002820490506001821680620006da57607f821691505b60208210811415620006f157620006f062000755565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b615b5780620007e36000396000f3fe6080604052600436106102765760003560e01c8063790a1e8d1161014f578063c735f3c9116100c1578063e8347c391161007a578063e8347c3914610953578063f2fde38b1461096a578063f80f5dd514610993578063fa2b2009146109bc578063ffc78cff146109e7578063ffecf51614610a105761027d565b8063c735f3c91461087f578063cd4ecd5314610896578063d5e86d83146108bf578063dc907dea146108e8578063dd62ed3e146108ff578063e8078d941461093c5761027d565b806395d89b411161011357806395d89b4114610785578063a9059cbb146107b0578063b2b19f1a146107ed578063b451192d14610816578063bd5dce651461083f578063c1581485146108565761027d565b8063790a1e8d146106a05780638708f787146106dd5780638a2e271a146107065780638b7afe2e1461072f5780638da5cb5b1461075a5761027d565b80633f5b7d67116101e857806365407b6d116101ac57806365407b6d1461056c5780636fbeb45d14610595578063700542ec146105c057806370a08231146105fd57806373286f891461063a57806378c8cda7146106775761027d565b80633f5b7d671461048b5780634c70f875146104c85780635c85974f146104f15780635fecd9261461051a57806362caa704146105435761027d565b806318160ddd1161023a57806318160ddd1461036757806323b872dd14610392578063285de426146103cf578063313ce567146103fa57806334b9acd3146104255780633af32abf1461044e5761027d565b806306fdde0314610282578063070fad74146102ad578063095ea7b3146102d65780630c9be46d1461031357806313c9dd021461033c5761027d565b3661027d57005b600080fd5b34801561028e57600080fd5b50610297610a39565b6040516102a491906151e7565b60405180910390f35b3480156102b957600080fd5b506102d460048036038101906102cf9190614de8565b610acb565b005b3480156102e257600080fd5b506102fd60048036038101906102f89190614d42565b610b6a565b60405161030a91906151cc565b60405180910390f35b34801561031f57600080fd5b5061033a60048036038101906103359190614c3a565b610b88565b005b34801561034857600080fd5b50610351610cb9565b60405161035e91906151cc565b60405180910390f35b34801561037357600080fd5b5061037c610d66565b6040516103899190615349565b60405180910390f35b34801561039e57600080fd5b506103b960048036038101906103b49190614c9f565b610d77565b6040516103c691906151cc565b60405180910390f35b3480156103db57600080fd5b506103e4610e50565b6040516103f19190615349565b60405180910390f35b34801561040657600080fd5b5061040f610e5a565b60405161041c91906153be565b60405180910390f35b34801561043157600080fd5b5061044c60048036038101906104479190614d7e565b610e71565b005b34801561045a57600080fd5b5061047560048036038101906104709190614be8565b610f72565b60405161048291906151cc565b60405180910390f35b34801561049757600080fd5b506104b260048036038101906104ad9190614be8565b610fc8565b6040516104bf91906151cc565b60405180910390f35b3480156104d457600080fd5b506104ef60048036038101906104ea9190614be8565b61101e565b005b3480156104fd57600080fd5b5061051860048036038101906105139190614de8565b61110e565b005b34801561052657600080fd5b50610541600480360381019061053c9190614be8565b611210565b005b34801561054f57600080fd5b5061056a60048036038101906105659190614be8565b61131a565b005b34801561057857600080fd5b50610593600480360381019061058e9190614de8565b6113f9565b005b3480156105a157600080fd5b506105aa6114ad565b6040516105b79190615349565b60405180910390f35b3480156105cc57600080fd5b506105e760048036038101906105e29190614be8565b6114dc565b6040516105f491906151cc565b60405180910390f35b34801561060957600080fd5b50610624600480360381019061061f9190614be8565b611543565b6040516106319190615349565b60405180910390f35b34801561064657600080fd5b50610661600480360381019061065c9190614c63565b61158c565b60405161066e91906151e7565b60405180910390f35b34801561068357600080fd5b5061069e60048036038101906106999190614be8565b61169e565b005b3480156106ac57600080fd5b506106c760048036038101906106c29190614be8565b61178e565b6040516106d491906151cc565b60405180910390f35b3480156106e957600080fd5b5061070460048036038101906106ff9190614de8565b6117e4565b005b34801561071257600080fd5b5061072d60048036038101906107289190614be8565b611892565b005b34801561073b57600080fd5b50610744611982565b6040516107519190615349565b60405180910390f35b34801561076657600080fd5b5061076f611a20565b60405161077c91906150c7565b60405180910390f35b34801561079157600080fd5b5061079a611a49565b6040516107a791906151e7565b60405180910390f35b3480156107bc57600080fd5b506107d760048036038101906107d29190614d42565b611adb565b6040516107e491906151cc565b60405180910390f35b3480156107f957600080fd5b50610814600480360381019061080f9190614de8565b611af9565b005b34801561082257600080fd5b5061083d60048036038101906108389190614c3a565b611ba7565b005b34801561084b57600080fd5b50610854611cd8565b005b34801561086257600080fd5b5061087d60048036038101906108789190614be8565b611d8a565b005b34801561088b57600080fd5b50610894611e7a565b005b3480156108a257600080fd5b506108bd60048036038101906108b89190614cee565b611f5c565b005b3480156108cb57600080fd5b506108e660048036038101906108e19190614be8565b612018565b005b3480156108f457600080fd5b506108fd612108565b005b34801561090b57600080fd5b5061092660048036038101906109219190614c63565b6121ba565b6040516109339190615349565b60405180910390f35b34801561094857600080fd5b50610951612241565b005b34801561095f57600080fd5b50610968612940565b005b34801561097657600080fd5b50610991600480360381019061098c9190614be8565b6129f2565b005b34801561099f57600080fd5b506109ba60048036038101906109b59190614be8565b612b44565b005b3480156109c857600080fd5b506109d1612c34565b6040516109de9190615349565b60405180910390f35b3480156109f357600080fd5b50610a0e6004803603810190610a099190614d7e565b612c3e565b005b348015610a1c57600080fd5b50610a376004803603810190610a329190614be8565b612d3f565b005b606060018054610a4890615680565b80601f0160208091040260200160405190810160405280929190818152602001828054610a7490615680565b8015610ac15780601f10610a9657610100808354040283529160200191610ac1565b820191906000526020600020905b815481529060010190602001808311610aa457829003601f168201915b5050505050905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b0a612ec4565b73ffffffffffffffffffffffffffffffffffffffff1614610b60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b57906152a9565b60405180910390fd5b80600e8190555050565b6000610b7e610b77612ec4565b8484612ecc565b6001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bc7612ec4565b73ffffffffffffffffffffffffffffffffffffffff1614610c1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c14906152a9565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610cfb612ec4565b73ffffffffffffffffffffffffffffffffffffffff1614610d51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d48906152a9565b60405180910390fd5b600d60159054906101000a900460ff16905090565b6000683635c9adc5dea00000905090565b6000610d84848484613097565b610e4584610d90612ec4565b610e4085604051806060016040528060288152602001615afa60289139601660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610df6612ec4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136549092919063ffffffff16565b612ecc565b600190509392505050565b6000600e54905090565b6000600360009054906101000a900460ff16905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610eb0612ec4565b73ffffffffffffffffffffffffffffffffffffffff1614610f06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efd906152a9565b60405180910390fd5b60005b8151811015610f6e57610f5b828281518110610f4e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151612d3f565b8080610f66906156e3565b915050610f09565b5050565b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661105d612ec4565b73ffffffffffffffffffffffffffffffffffffffff16146110b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110aa906152a9565b60405180910390fd5b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661114d612ec4565b73ffffffffffffffffffffffffffffffffffffffff16146111a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119a906152a9565b60405180910390fd5b6000633b9aca00826111b59190615537565b90506111d56103e8683635c9adc5dea000006136b890919063ffffffff16565b81116111e057600080fd5b806005819055506005546006819055506112066004600654612e4990919063ffffffff16565b6007819055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661124f612ec4565b73ffffffffffffffffffffffffffffffffffffffff16146112a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129c906152a9565b60405180910390fd5b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460008282546113109190615591565b9250508190555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611359612ec4565b73ffffffffffffffffffffffffffffffffffffffff16146113af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a6906152a9565b60405180910390fd5b600081905080601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611438612ec4565b73ffffffffffffffffffffffffffffffffffffffff161461148e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611485906152a9565b60405180910390fd5b6000633b9aca00826114a09190615537565b905080600a819055505050565b600060011515600d60189054906101000a900460ff16151514156114d457600190506114d9565b600090505b90565b60008060009050601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561153a57600190505b80915050919050565b6000601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805461161890615680565b80601f016020809104026020016040519081016040528092919081815260200182805461164490615680565b80156116915780601f1061166657610100808354040283529160200191611691565b820191906000526020600020905b81548152906001019060200180831161167457829003601f168201915b5050505050905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166116dd612ec4565b73ffffffffffffffffffffffffffffffffffffffff1614611733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172a906152a9565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611823612ec4565b73ffffffffffffffffffffffffffffffffffffffff1614611879576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611870906152a9565b60405180910390fd5b6101f481111561188857600080fd5b8060098190555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166118d1612ec4565b73ffffffffffffffffffffffffffffffffffffffff1614611927576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191e906152a9565b60405180910390fd5b6001601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166119c4612ec4565b73ffffffffffffffffffffffffffffffffffffffff1614611a1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a11906152a9565b60405180910390fd5b47905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060028054611a5890615680565b80601f0160208091040260200160405190810160405280929190818152602001828054611a8490615680565b8015611ad15780601f10611aa657610100808354040283529160200191611ad1565b820191906000526020600020905b815481529060010190602001808311611ab457829003601f168201915b5050505050905090565b6000611aef611ae8612ec4565b8484613097565b6001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611b38612ec4565b73ffffffffffffffffffffffffffffffffffffffff1614611b8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b85906152a9565b60405180910390fd5b6101f4811115611b9d57600080fd5b8060088190555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611be6612ec4565b73ffffffffffffffffffffffffffffffffffffffff1614611c3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c33906152a9565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611d17612ec4565b73ffffffffffffffffffffffffffffffffffffffff1614611d6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d64906152a9565b60405180910390fd5b6001600d60186101000a81548160ff021916908315150217905550565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611dc9612ec4565b73ffffffffffffffffffffffffffffffffffffffff1614611e1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e16906152a9565b60405180910390fd5b6000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611eb9612ec4565b73ffffffffffffffffffffffffffffffffffffffff1614611f0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f06906152a9565b60405180910390fd5b6007546005819055506007546006819055507f1509687539547b95d9002029c1b24fbfdd2e99b914fabbbc629867062a4ff3cc600554604051611f529190615349565b60405180910390a1565b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000611fa9612ec4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209080519060200190611ff69291906149c9565b50600064b4e8cf1a00905061201361200c612ec4565b8483613702565b505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612057612ec4565b73ffffffffffffffffffffffffffffffffffffffff16146120ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a4906152a9565b60405180910390fd5b6001601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612147612ec4565b73ffffffffffffffffffffffffffffffffffffffff161461219d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612194906152a9565b60405180910390fd5b6001600d60156101000a81548160ff021916908315150217905550565b6000601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612280612ec4565b73ffffffffffffffffffffffffffffffffffffffff16146122d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cd906152a9565b60405180910390fd5b600d60149054906101000a900460ff1615612326576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231d90615329565b60405180910390fd5b600160106000612334612ec4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160106000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061248f30601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16683635c9adc5dea00000612ecc565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156124d557600080fd5b505afa1580156124e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061250d9190614c11565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561256f57600080fd5b505afa158015612583573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a79190614c11565b6040518363ffffffff1660e01b81526004016125c49291906150e2565b602060405180830381600087803b1580156125de57600080fd5b505af11580156125f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126169190614c11565b600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160106000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160126000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061279330611543565b60008061279e611a20565b426040518863ffffffff1660e01b81526004016127c09695949392919061516b565b6060604051808303818588803b1580156127d957600080fd5b505af11580156127ed573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906128129190614e11565b5050506001600d60176101000a81548160ff0219169083151502179055506001600d60146101000a81548160ff021916908315150217905550600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016128ea929190615142565b602060405180830381600087803b15801561290457600080fd5b505af1158015612918573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061293c9190614dbf565b5050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661297f612ec4565b73ffffffffffffffffffffffffffffffffffffffff16146129d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129cc906152a9565b60405180910390fd5b6000600d60186101000a81548160ff021916908315150217905550565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612a31612ec4565b73ffffffffffffffffffffffffffffffffffffffff1614612a87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a7e906152a9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612b83612ec4565b73ffffffffffffffffffffffffffffffffffffffff1614612bd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bd0906152a9565b60405180910390fd5b6001601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600454905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612c7d612ec4565b73ffffffffffffffffffffffffffffffffffffffff1614612cd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cca906152a9565b60405180910390fd5b60005b8151811015612d3b57612d28828281518110612d1b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151612b44565b8080612d33906156e3565b915050612cd6565b5050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612d7e612ec4565b73ffffffffffffffffffffffffffffffffffffffff1614612dd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dcb906152a9565b60405180910390fd5b6001601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000828254612e3f91906154b0565b9250508190555050565b600080831415612e5c5760009050612ebe565b60008284612e6a9190615537565b9050828482612e799190615506565b14612eb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eb090615289565b60405180910390fd5b809150505b92915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612f3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3390615309565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612fac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fa390615249565b60405180910390fd5b80601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161308a9190615349565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613107576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130fe906152e9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613177576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161316e90615209565b60405180910390fd5b600081116131ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131b1906152c9565b60405180910390fd5b600d60159054906101000a900460ff1661322557601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661322457600080fd5b5b61322e82613b84565b156132625760006132508261324285611543565b613c3990919063ffffffff16565b9050600754811061326057600080fd5b505b600d60189054906101000a900460ff161561334157613282828432613c97565b61328b83613fdb565b80156132a35750600d60149054906101000a900460ff165b1561333c5760001515601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151461333b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161333290615229565b60405180910390fd5b5b613567565b600d60149054906101000a900460ff16156135665761335f83613fdb565b156134b05760001515601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146133f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133ee90615229565b60405180910390fd5b6000600e5411156134ab5742600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061344d57600080fd5b6001600e5461345c9190615537565b4261346791906154b0565b600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b613565565b6000600e5411156135645742600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061350657600080fd5b6001600e546135159190615537565b4261352091906154b0565b600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b5b5b6135718383614037565b1561359f5760055481111561358557600080fd5b61358f83836140cf565b1561359e5761359d8361417a565b5b5b6135aa838383613702565b600d60189054906101000a900460ff161561364f57601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b25d625984846040518363ffffffff1660e01b815260040161361c9291906150e2565b600060405180830381600087803b15801561363657600080fd5b505af115801561364a573d6000803e3d6000fd5b505050505b505050565b600083831115829061369c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161369391906151e7565b60405180910390fd5b50600083856136ab9190615591565b9050809150509392505050565b60006136fa83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506141bf565b905092915050565b61370c83836140cf565b156139ef57600061371d8484614222565b9050600061374861271061373a8486612e4990919063ffffffff16565b6136b890919063ffffffff16565b9050600061375f82856142e590919063ffffffff16565b9050600061376d878761432f565b9050600061379861271061378a8489612e4990919063ffffffff16565b6136b890919063ffffffff16565b90506137ad81846142e590919063ffffffff16565b925061380186601560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546142e590919063ffffffff16565b601560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061389683601560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c3990919063ffffffff16565b601560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061393d8161392f86601560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c3990919063ffffffff16565b613c3990919063ffffffff16565b601560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516139dd9190615349565b60405180910390a35050505050613b7f565b613a4181601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546142e590919063ffffffff16565b601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613ad681601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c3990919063ffffffff16565b601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613b769190615349565b60405180910390a35b505050565b6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015613c325750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b9050919050565b6000808284613c4891906154b0565b905083811015613c8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c8490615269565b60405180910390fd5b8091505092915050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480613d405750600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b8015613d585750600d60149054906101000a900460ff165b15613fd6576000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312bdf42385600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856040518463ffffffff1660e01b8152600401613de09392919061510b565b602060405180830381600087803b158015613dfa57600080fd5b505af1158015613e0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e329190614dbf565b8015613e445750613e42846143f2565b155b90506000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312bdf42385600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866040518463ffffffff1660e01b8152600401613ec99392919061510b565b602060405180830381600087803b158015613ee357600080fd5b505af1158015613ef7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f1b9190614dbf565b8015613f2d5750613f2b846143f2565b155b90508115613f8157613f3e85614448565b613f4783614448565b7f9a7289cf5e3a6716dd5e9f62deae04d4bc9df473808bf34bcdbcf224594243928584604051613f789291906150e2565b60405180910390a15b8015613fd357613f9084614448565b613f9983614448565b7f9a7289cf5e3a6716dd5e9f62deae04d4bc9df473808bf34bcdbcf224594243928484604051613fca9291906150e2565b60405180910390a15b50505b505050565b6000801515601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515149050919050565b6000614041611a20565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156140af575061407f611a20565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156140c75750600d60149054906101000a900460ff165b905092915050565b6000601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806141725750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b905092915050565b600061418530611543565b90506000600a54821015905061419a8361450f565b80156141a35750805b156141ba576141b18261459b565b6141b9614895565b5b505050565b60008083118290614206576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016141fd91906151e7565b60405180910390fd5b50600083856142159190615506565b9050809150509392505050565b600080601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806142c65750601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b159050806142d85760009150506142df565b6008549150505b92915050565b600061432783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613654565b905092915050565b600080601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806143d35750601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b159050806143e55760009150506143ec565b6009549150505b92915050565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166144b4576001600460008282546144ac91906154b0565b925050819055505b6001601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600d60169054906101000a900460ff1615801561457c5750600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156145945750600d60179054906101000a900460ff165b9050919050565b6001600d60166101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156145f9577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156146275781602001602082028036833780820191505090505b5090503081600081518110614665577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561470757600080fd5b505afa15801561471b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061473f9190614c11565b81600181518110614779577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506147e030601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612ecc565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401614844959493929190615364565b600060405180830381600087803b15801561485e57600080fd5b505af1158015614872573d6000803e3d6000fd5b50505050506000600d60166101000a81548160ff02191690831515021790555050565b600047905060006148b3600854600954613c3990919063ffffffff16565b905060006148de826148d085600954612e4990919063ffffffff16565b6136b890919063ffffffff16565b9050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015614948573d6000803e3d6000fd5b50600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc61499883866142e590919063ffffffff16565b9081150290604051600060405180830381858888f193505050501580156149c3573d6000803e3d6000fd5b50505050565b8280546149d590615680565b90600052602060002090601f0160209004810192826149f75760008555614a3e565b82601f10614a1057805160ff1916838001178555614a3e565b82800160010185558215614a3e579182015b82811115614a3d578251825591602001919060010190614a22565b5b509050614a4b9190614a4f565b5090565b5b80821115614a68576000816000905550600101614a50565b5090565b6000614a7f614a7a846153fe565b6153d9565b90508083825260208201905082856020860282011115614a9e57600080fd5b60005b85811015614ace5781614ab48882614b16565b845260208401935060208301925050600181019050614aa1565b5050509392505050565b6000614aeb614ae68461542a565b6153d9565b905082815260208101848484011115614b0357600080fd5b614b0e84828561563e565b509392505050565b600081359050614b2581615a9d565b92915050565b600081519050614b3a81615a9d565b92915050565b600081359050614b4f81615ab4565b92915050565b600082601f830112614b6657600080fd5b8135614b76848260208601614a6c565b91505092915050565b600081519050614b8e81615acb565b92915050565b600082601f830112614ba557600080fd5b8135614bb5848260208601614ad8565b91505092915050565b600081359050614bcd81615ae2565b92915050565b600081519050614be281615ae2565b92915050565b600060208284031215614bfa57600080fd5b6000614c0884828501614b16565b91505092915050565b600060208284031215614c2357600080fd5b6000614c3184828501614b2b565b91505092915050565b600060208284031215614c4c57600080fd5b6000614c5a84828501614b40565b91505092915050565b60008060408385031215614c7657600080fd5b6000614c8485828601614b16565b9250506020614c9585828601614b16565b9150509250929050565b600080600060608486031215614cb457600080fd5b6000614cc286828701614b16565b9350506020614cd386828701614b16565b9250506040614ce486828701614bbe565b9150509250925092565b60008060408385031215614d0157600080fd5b6000614d0f85828601614b16565b925050602083013567ffffffffffffffff811115614d2c57600080fd5b614d3885828601614b94565b9150509250929050565b60008060408385031215614d5557600080fd5b6000614d6385828601614b16565b9250506020614d7485828601614bbe565b9150509250929050565b600060208284031215614d9057600080fd5b600082013567ffffffffffffffff811115614daa57600080fd5b614db684828501614b55565b91505092915050565b600060208284031215614dd157600080fd5b6000614ddf84828501614b7f565b91505092915050565b600060208284031215614dfa57600080fd5b6000614e0884828501614bbe565b91505092915050565b600080600060608486031215614e2657600080fd5b6000614e3486828701614bd3565b9350506020614e4586828701614bd3565b9250506040614e5686828701614bd3565b9150509250925092565b6000614e6c8383614e78565b60208301905092915050565b614e81816155c5565b82525050565b614e90816155c5565b82525050565b6000614ea18261546b565b614eab818561548e565b9350614eb68361545b565b8060005b83811015614ee7578151614ece8882614e60565b9750614ed983615481565b925050600181019050614eba565b5085935050505092915050565b614efd816155e9565b82525050565b614f0c8161562c565b82525050565b6000614f1d82615476565b614f27818561549f565b9350614f3781856020860161564d565b614f40816157e8565b840191505092915050565b6000614f5860238361549f565b9150614f63826157f9565b604082019050919050565b6000614f7b60358361549f565b9150614f8682615848565b604082019050919050565b6000614f9e60228361549f565b9150614fa982615897565b604082019050919050565b6000614fc1601b8361549f565b9150614fcc826158e6565b602082019050919050565b6000614fe460218361549f565b9150614fef8261590f565b604082019050919050565b600061500760208361549f565b91506150128261595e565b602082019050919050565b600061502a60298361549f565b915061503582615987565b604082019050919050565b600061504d60258361549f565b9150615058826159d6565b604082019050919050565b600061507060248361549f565b915061507b82615a25565b604082019050919050565b600061509360178361549f565b915061509e82615a74565b602082019050919050565b6150b281615615565b82525050565b6150c18161561f565b82525050565b60006020820190506150dc6000830184614e87565b92915050565b60006040820190506150f76000830185614e87565b6151046020830184614e87565b9392505050565b60006060820190506151206000830186614e87565b61512d6020830185614e87565b61513a6040830184614e87565b949350505050565b60006040820190506151576000830185614e87565b61516460208301846150a9565b9392505050565b600060c0820190506151806000830189614e87565b61518d60208301886150a9565b61519a6040830187614f03565b6151a76060830186614f03565b6151b46080830185614e87565b6151c160a08301846150a9565b979650505050505050565b60006020820190506151e16000830184614ef4565b92915050565b600060208201905081810360008301526152018184614f12565b905092915050565b6000602082019050818103600083015261522281614f4b565b9050919050565b6000602082019050818103600083015261524281614f6e565b9050919050565b6000602082019050818103600083015261526281614f91565b9050919050565b6000602082019050818103600083015261528281614fb4565b9050919050565b600060208201905081810360008301526152a281614fd7565b9050919050565b600060208201905081810360008301526152c281614ffa565b9050919050565b600060208201905081810360008301526152e28161501d565b9050919050565b6000602082019050818103600083015261530281615040565b9050919050565b6000602082019050818103600083015261532281615063565b9050919050565b6000602082019050818103600083015261534281615086565b9050919050565b600060208201905061535e60008301846150a9565b92915050565b600060a08201905061537960008301886150a9565b6153866020830187614f03565b81810360408301526153988186614e96565b90506153a76060830185614e87565b6153b460808301846150a9565b9695505050505050565b60006020820190506153d360008301846150b8565b92915050565b60006153e36153f4565b90506153ef82826156b2565b919050565b6000604051905090565b600067ffffffffffffffff821115615419576154186157b9565b5b602082029050602081019050919050565b600067ffffffffffffffff821115615445576154446157b9565b5b61544e826157e8565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006154bb82615615565b91506154c683615615565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156154fb576154fa61572c565b5b828201905092915050565b600061551182615615565b915061551c83615615565b92508261552c5761552b61575b565b5b828204905092915050565b600061554282615615565b915061554d83615615565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156155865761558561572c565b5b828202905092915050565b600061559c82615615565b91506155a783615615565b9250828210156155ba576155b961572c565b5b828203905092915050565b60006155d0826155f5565b9050919050565b60006155e2826155f5565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061563782615615565b9050919050565b82818337600083830152505050565b60005b8381101561566b578082015181840152602081019050615650565b8381111561567a576000848401525b50505050565b6000600282049050600182168061569857607f821691505b602082108114156156ac576156ab61578a565b5b50919050565b6156bb826157e8565b810181811067ffffffffffffffff821117156156da576156d96157b9565b5b80604052505050565b60006156ee82615615565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156157215761572061572c565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f54686973206265617220646f65736e2774206c696b6520796f752e204c6f6f6b60008201527f20666f7220686f6e657920656c736577686572652e0000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b615aa6816155c5565b8114615ab157600080fd5b50565b615abd816155d7565b8114615ac857600080fd5b50565b615ad4816155e9565b8114615adf57600080fd5b50565b615aeb81615615565b8114615af657600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220575e934216531a2a7072554e1debb73d45d7fd002950d911d30a958be691a9f564736f6c63430008040033

Deployed ByteCode Sourcemap

4698:18754:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7107:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20957:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8040:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21601:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22338:119;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7467:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8213:323;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21097:103;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7295:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20634:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17219:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17473:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23090:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18653:368;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20830:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21806:233;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19385:231;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17004:207;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16735:257;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7575:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20434:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22787:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17348:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19200:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23215:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21212:188;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3149:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7199:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7705:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19033:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21412:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22051:80;;;;;;;;;;;;;:::i;:::-;;23336:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19628:201;;;;;;;;;;;;;:::i;:::-;;20148:274;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22973:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22233:97;;;;;;;;;;;;;:::i;:::-;;7884:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17684:957;;;;;;;;;;;;;:::i;:::-;;22143:82;;;;;;;;;;;;;:::i;:::-;;3241:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22465:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16635:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22583:196;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19841:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7107:84;7144:13;7177:6;7170:13;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7107:84;:::o;20957:128::-;3467:7;;;;;;;;;;3451:23;;:12;:10;:12::i;:::-;:23;;;3443:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21062:15:::1;21042:17;:35;;;;20957:128:::0;:::o;8040:165::-;8117:4;8134:41;8143:12;:10;:12::i;:::-;8157:8;8167:7;8134:8;:41::i;:::-;8193:4;8186:11;;8040:165;;;;:::o;21601:193::-;3467:7;;;;;;;;;;3451:23;;:12;:10;:12::i;:::-;:23;;;3443:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21713:15:::1;21694:16;;:34;;;;;;;;;;;;;;;;;;21782:4;21743:19;:36;21763:15;21743:36;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;21601:193:::0;:::o;22338:119::-;22404:4;3467:7;;;;;;;;;;;3451:23;;:12;:10;:12::i;:::-;:23;;;3443:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22428:21:::1;;;;;;;;;;;22421:28;;22338:119:::0;:::o;7467:100::-;7520:7;4833:21;7540:19;;7467:100;:::o;8213:323::-;8314:4;8331:39;8341:7;8350:10;8362:7;8331:9;:39::i;:::-;8381:125;8390:7;8399:12;:10;:12::i;:::-;8413:92;8453:7;8413:92;;;;;;;;;;;;;;;;;:12;:21;8426:7;8413:21;;;;;;;;;;;;;;;:35;8435:12;:10;:12::i;:::-;8413:35;;;;;;;;;;;;;;;;:39;;:92;;;;;:::i;:::-;8381:8;:125::i;:::-;8524:4;8517:11;;8213:323;;;;;:::o;21097:103::-;21148:7;21175:17;;21168:24;;21097:103;:::o;7295:84::-;7336:5;7361:10;;;;;;;;;;;7354:17;;7295:84;:::o;20634:184::-;3467:7;;;;;;;;;;3451:23;;:12;:10;:12::i;:::-;:23;;;3443:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20720:9:::1;20715:96;20739:10;:17;20735:1;:21;20715:96;;;20778:21;20785:10;20796:1;20785:13;;;;;;;;;;;;;;;;;;;;;;20778:6;:21::i;:::-;20758:3;;;;;:::i;:::-;;;;20715:96;;;;20634:184:::0;:::o;17219:117::-;17283:4;17307:11;:21;17319:8;17307:21;;;;;;;;;;;;;;;;;;;;;;;;;17300:28;;17219:117;;;:::o;17473:120::-;17541:4;17565:10;:20;17576:8;17565:20;;;;;;;;;;;;;;;;;;;;;;;;;17558:27;;17473:120;;;:::o;23090:113::-;3467:7;;;;;;;;;;3451:23;;:12;:10;:12::i;:::-;:23;;;3443:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23190:5:::1;23167:10;:20;23178:8;23167:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;23090:113:::0;:::o;18653:368::-;3467:7;;;;;;;;;;3451:23;;:12;:10;:12::i;:::-;:23;;;3443:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18722:18:::1;18754:5;18744:7;:15;;;;:::i;:::-;18722:37;;18830:22;18847:4;4833:21;18830:16;;:22;;;;:::i;:::-;18817:10;:35;18809:44;;;::::0;::::1;;18919:10;18907:9;:22;;;;18957:9;;18940:13;:26;;;;18993:20;19011:1;18993:13;;:17;;:20;;;;:::i;:::-;18977:13;:36;;;;3522:1;18653:368:::0;:::o;20830:115::-;3467:7;;;;;;;;;;3451:23;;:12;:10;:12::i;:::-;:23;;;3443:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20906:5:::1;20893:6;:10;20900:2;20893:10;;;;;;;;;;;;;;;;:18;;;;;;;;;;;;;;;;;;20936:1;20922:10;;:15;;;;;;;:::i;:::-;;;;;;;;20830:115:::0;:::o;21806:233::-;3467:7;;;;;;;;;;3451:23;;:12;:10;:12::i;:::-;:23;;;3443:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21943:19:::1;21976:8;21943:42;;22023:8;22013:7;;:18;;;;;;;;;;;;;;;;;;3522:1;21806:233:::0;:::o;19385:231::-;3467:7;;;;;;;;;;3451:23;;:12;:10;:12::i;:::-;:23;;;3443:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19468:27:::1;19508:5;19499:6;:14;;;;:::i;:::-;19468:45;;19589:19;19563:23;:45;;;;3522:1;19385:231:::0;:::o;17004:207::-;17048:7;17139:4;17126:17;;:9;;;;;;;;;;;:17;;;17122:81;;;17165:1;17158:8;;;;17122:81;17202:1;17195:8;;17004:207;;:::o;16735:257::-;16799:4;16877:13;16893:5;16877:21;;16912:6;:16;16919:8;16912:16;;;;;;;;;;;;;;;;;;;;;;;;;16909:49;;;16954:4;16943:15;;16909:49;16976:8;16969:15;;;16735:257;;;:::o;7575:122::-;7642:7;7669:10;:20;7680:8;7669:20;;;;;;;;;;;;;;;;7662:27;;7575:122;;;:::o;20434:188::-;20531:13;20564:6;:25;20571:17;20564:25;;;;;;;;;;;;;;;:35;;:50;20600:13;20564:50;;;;;;;;;;;;;;;20557:57;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20434:188;;;;:::o;22787:112::-;3467:7;;;;;;;;;;3451:23;;:12;:10;:12::i;:::-;:23;;;3443:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22886:5:::1;22862:11;:21;22874:8;22862:21;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;22787:112:::0;:::o;17348:113::-;17409:4;17433:10;:20;17444:8;17433:20;;;;;;;;;;;;;;;;;;;;;;;;;17426:27;;17348:113;;;:::o;19200:173::-;3467:7;;;;;;;;;;3451:23;;:12;:10;:12::i;:::-;:23;;;3443:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19299:3:::1;19288:7;:14;;19280:23;;;::::0;::::1;;19358:7;19346:9;:19;;;;19200:173:::0;:::o;23215:113::-;3467:7;;;;;;;;;;3451:23;;:12;:10;:12::i;:::-;:23;;;3443:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23316:4:::1;23293:10;:20;23304:8;23293:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;23215:113:::0;:::o;21212:188::-;21274:7;3467;;;;;;;;;;;3451:23;;:12;:10;:12::i;:::-;:23;;;3443:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21371:21:::1;21364:28;;21212:188:::0;:::o;3149:80::-;3187:7;3214;;;;;;;;;;;3207:14;;3149:80;:::o;7199:88::-;7238:13;7271:8;7264:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7199:88;:::o;7705:171::-;7785:4;7802:44;7812:12;:10;:12::i;:::-;7826:10;7838:7;7802:9;:44::i;:::-;7864:4;7857:11;;7705:171;;;;:::o;19033:155::-;3467:7;;;;;;;;;;3451:23;;:12;:10;:12::i;:::-;:23;;;3443:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19123:3:::1;19115:4;:11;;19107:20;;;::::0;::::1;;19176:4;19167:6;:13;;;;19033:155:::0;:::o;21412:177::-;3467:7;;;;;;;;;;3451:23;;:12;:10;:12::i;:::-;:23;;;3443:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21514:12:::1;21498:13;;:28;;;;;;;;;;;;;;;;;;21577:4;21541:19;:33;21561:12;21541:33;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;21412:177:::0;:::o;22051:80::-;3467:7;;;;;;;;;;3451:23;;:12;:10;:12::i;:::-;:23;;;3443:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22119:4:::1;22107:9;;:16;;;;;;;;;;;;;;;;;;22051:80::o:0;23336:113::-;3467:7;;;;;;;;;;3451:23;;:12;:10;:12::i;:::-;:23;;;3443:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23436:5:::1;23413:10;:20;23424:8;23413:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;23336:113:::0;:::o;19628:201::-;3467:7;;;;;;;;;;3451:23;;:12;:10;:12::i;:::-;:23;;;3443:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19728:13:::1;;19716:9;:25;;;;19768:13;;19752;:29;;;;19797:24;19811:9;;19797:24;;;;;;:::i;:::-;;;;;;;;19628:201::o:0;20148:274::-;20284:7;20236:6;:21;20243:13;20236:21;;;;;;;;;;;;;;;:31;;:45;20268:12;:10;:12::i;:::-;20236:45;;;;;;;;;;;;;;;:55;;;;;;;;;;;;:::i;:::-;;20302:15;20320:12;20302:30;;20343:53;20359:12;:10;:12::i;:::-;20373:13;20388:7;20343:15;:53::i;:::-;20148:274;;;:::o;22973:109::-;3467:7;;;;;;;;;;3451:23;;:12;:10;:12::i;:::-;:23;;;3443:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23070:4:::1;23047:10;:20;23058:8;23047:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;22973:109:::0;:::o;22233:97::-;3467:7;;;;;;;;;;3451:23;;:12;:10;:12::i;:::-;:23;;;3443:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22318:4:::1;22294:21;;:28;;;;;;;;;;;;;;;;;;22233:97::o:0;7884:148::-;7967:7;7994:12;:20;8007:6;7994:20;;;;;;;;;;;;;;;:30;8015:8;7994:30;;;;;;;;;;;;;;;;7987:37;;7884:148;;;;:::o;17684:957::-;3467:7;;;;;;;;;;3451:23;;:12;:10;:12::i;:::-;:23;;;3443:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17749:15:::1;;;;;;;;;;;17748:16;17740:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;17830:4;17802:11;:25;17814:12;:10;:12::i;:::-;17802:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;17845:35;17902:42;17845:100;;17976:16;17956:17;;:36;;;;;;;;;;;;;;;;;;18045:4;18003:11;:39;18023:17;;;;;;;;;;;18003:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;18060:65;18077:4;18092:17;;;;;;;;;;;4833:21;18060:8;:65::i;:::-;18172:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18154:56;;;18219:4;18226:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18154:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18136:15;;:114;;;;;;;;;;;;;;;;;;18292:4;18261:11;:28;18273:15;;;;;;;;;;;18261:28;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;18337:4;18307:10;:27;18318:15;;;;;;;;;;;18307:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;18352:17;;;;;;;;;;;:33;;;18393:21;18424:4;18430:24;18448:4;18430:9;:24::i;:::-;18455:1;18457::::0;18459:7:::1;:5;:7::i;:::-;18467:15;18352:131;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;18510:4;18494:13;;:20;;;;;;;;;;;;;;;;;;18543:4;18525:15;;:22;;;;;;;;;;;;;;;;;;18565:15;;;;;;;;;;;18558:31;;;18598:17;;;;;;;;;;;18618:14;18558:75;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3522:1;17684:957::o:0;22143:82::-;3467:7;;;;;;;;;;3451:23;;:12;:10;:12::i;:::-;:23;;;3443:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22212:5:::1;22200:9;;:17;;;;;;;;;;;;;;;;;;22143:82::o:0;3241:162::-;3467:7;;;;;;;;;;3451:23;;:12;:10;:12::i;:::-;:23;;;3443:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3357:8:::1;3327:39;;3348:7;::::0;::::1;;;;;;;;3327:39;;;;;;;;;;;;3387:8;3377:7;::::0;:18:::1;;;;;;;;;;;;;;;;;;3241:162:::0;:::o;22465:106::-;3467:7;;;;;;;;;;3451:23;;:12;:10;:12::i;:::-;:23;;;3443:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22559:4:::1;22535:11;:21;22547:8;22535:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;22465:106:::0;:::o;16635:88::-;16678:7;16705:10;;16698:17;;16635:88;:::o;22583:196::-;3467:7;;;;;;;;;;3451:23;;:12;:10;:12::i;:::-;:23;;;3443:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22675:9:::1;22670:102;22694:10;:17;22690:1;:21;22670:102;;;22733:27;22746:10;22757:1;22746:13;;;;;;;;;;;;;;;;;;;;;;22733:12;:27::i;:::-;22713:3;;;;;:::i;:::-;;;;22670:102;;;;22583:196:::0;:::o;19841:109::-;3467:7;;;;;;;;;;3451:23;;:12;:10;:12::i;:::-;:23;;;3443:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19912:4:::1;19899:6;:10;19906:2;19899:10;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;;;;;;19941:1;19927:10;;:15;;;;;;;:::i;:::-;;;;;;;;19841:109:::0;:::o;2239:246::-;2297:7;2326:1;2321;:6;2317:47;;;2351:1;2344:8;;;;2317:47;2374:9;2390:1;2386;:5;;;;:::i;:::-;2374:17;;2419:1;2414;2410;:5;;;;:::i;:::-;:10;2402:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2476:1;2469:8;;;2239:246;;;;;:::o;904:98::-;957:7;984:10;977:17;;904:98;:::o;9780:347::-;9894:1;9876:20;;:6;:20;;;;9868:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;9976:1;9956:22;;:8;:22;;;;9948:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;10061:7;10028:12;:20;10041:6;10028:20;;;;;;;;;;;;;;;:30;10049:8;10028:30;;;;;;;;;;;;;;;:40;;;;10101:8;10084:35;;10093:6;10084:35;;;10111:7;10084:35;;;;;;:::i;:::-;;;;;;;;9780:347;;;:::o;11138:2460::-;11257:1;11238:21;;:7;:21;;;;11230:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;11342:1;11320:24;;:10;:24;;;;11312:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;11413:1;11403:7;:11;11395:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;11478:21;;;;;;;;;;;11473:73;;11522:11;:23;11534:10;11522:23;;;;;;;;;;;;;;;;;;;;;;;;;11514:32;;;;;;11473:73;11562:25;11576:10;11562:13;:25::i;:::-;11559:221;;;11604:19;11626:34;11652:7;11626:21;11636:10;11626:9;:21::i;:::-;:25;;:34;;;;:::i;:::-;11604:56;;11697:13;;11683:11;:27;11675:36;;;;;;11559:221;;11813:9;;;;;;;;;;;11810:1091;;;11839:41;11849:10;11861:7;11870:9;11839;:41::i;:::-;11926:27;11945:7;11926:18;:27::i;:::-;:46;;;;;11957:15;;;;;;;;;;;11926:46;11923:187;;;12031:5;12012:24;;:6;:15;12019:7;12012:15;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;12004:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;11923:187;11810:1091;;;12146:15;;;;;;;;;;;12142:748;;;12185:27;12204:7;12185:18;:27::i;:::-;12182:693;;;12264:5;12245:24;;:6;:15;12252:7;12245:15;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;12237:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;12375:1;12354:17;;:22;12350:226;;;12435:15;12413:10;:19;12424:7;12413:19;;;;;;;;;;;;;;;;:37;12405:46;;;;;;12541:9;12520:17;;:31;;;;:::i;:::-;12500:15;:52;;;;:::i;:::-;12478:10;:19;12489:7;12478:19;;;;;;;;;;;;;;;:74;;;;12350:226;12182:693;;;12649:1;12628:17;;:22;12624:232;;;12712:15;12687:10;:22;12698:10;12687:22;;;;;;;;;;;;;;;;:40;12679:49;;;;;;12821:9;12800:17;;:31;;;;:::i;:::-;12780:15;:52;;;;:::i;:::-;12755:10;:22;12766:10;12755:22;;;;;;;;;;;;;;;:77;;;;12624:232;12182:693;12142:748;11810:1091;12925:28;12933:7;12942:10;12925:7;:28::i;:::-;12921:401;;;13039:9;;13028:7;:20;;13020:29;;;;;;13068:40;13088:7;13097:10;13068:19;:40::i;:::-;13064:132;;;13179:17;13188:7;13179:8;:17::i;:::-;13064:132;12921:401;13334:45;13350:7;13359:10;13371:7;13334:15;:45::i;:::-;13421:9;;;;;;;;;;;13418:137;;;13513:7;;;;;;;;;;;:21;;;13535:7;13544:10;13513:42;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13418:137;11138:2460;;;:::o;2041:190::-;2127:7;2160:1;2155;:6;;2163:12;2147:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2187:9;2203:1;2199;:5;;;;:::i;:::-;2187:17;;2222:1;2215:8;;;2041:190;;;;;:::o;2493:132::-;2551:7;2578:39;2582:1;2585;2578:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2571:46;;2493:132;;;;:::o;13606:1205::-;13708:40;13728:7;13737:10;13708:19;:40::i;:::-;13704:1100;;;13765:24;13792:40;13812:7;13821:10;13792:19;:40::i;:::-;13765:67;;13847:19;13869:40;13903:5;13869:29;13881:16;13869:7;:11;;:29;;;;:::i;:::-;:33;;:40;;;;:::i;:::-;13847:62;;13924:18;13945:24;13957:11;13945:7;:11;;:24;;;;:::i;:::-;13924:45;;13986:27;14016:43;14039:7;14048:10;14016:22;:43::i;:::-;13986:73;;14074:22;14099:43;14136:5;14099:32;14111:19;14099:7;:11;;:32;;;;:::i;:::-;:36;;:43;;;;:::i;:::-;14074:68;;14170:30;14185:14;14170:10;:14;;:30;;;;:::i;:::-;14157:43;;14251:32;14275:7;14251:10;:19;14262:7;14251:19;;;;;;;;;;;;;;;;:23;;:32;;;;:::i;:::-;14229:10;:19;14240:7;14229:19;;;;;;;;;;;;;;;:54;;;;14323:38;14350:10;14323;:22;14334:10;14323:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;14298:10;:22;14309:10;14298:22;;;;;;;;;;;;;;;:63;;;;14404:62;14451:14;14404:42;14434:11;14404:10;:25;14423:4;14404:25;;;;;;;;;;;;;;;;:29;;:42;;;;:::i;:::-;:46;;:62;;;;:::i;:::-;14376:10;:25;14395:4;14376:25;;;;;;;;;;;;;;;:90;;;;14549:10;14531:41;;14540:7;14531:41;;;14561:10;14531:41;;;;;;:::i;:::-;;;;;;;;13704:1100;;;;;;;;14627:32;14651:7;14627:10;:19;14638:7;14627:19;;;;;;;;;;;;;;;;:23;;:32;;;;:::i;:::-;14605:10;:19;14616:7;14605:19;;;;;;;;;;;;;;;:54;;;;14699:35;14726:7;14699:10;:22;14710:10;14699:22;;;;;;;;;;;;;;;;:26;;:35;;;;:::i;:::-;14674:10;:22;14685:10;14674:22;;;;;;;;;;;;;;;:60;;;;14772:10;14754:38;;14763:7;14754:38;;;14784:7;14754:38;;;;;;:::i;:::-;;;;;;;;13704:1100;13606:1205;;;:::o;9309:169::-;9373:4;9411:15;;;;;;;;;;;9397:29;;:10;:29;;;;:73;;;;;9452:17;;;;;;;;;;;9430:40;;:10;:40;;;;9397:73;9390:80;;9309:169;;;:::o;1710:179::-;1768:7;1788:9;1804:1;1800;:5;;;;:::i;:::-;1788:17;;1829:1;1824;:6;;1816:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1880:1;1873:8;;;1710:179;;;;:::o;10136:837::-;10246:15;;;;;;;;;;;10232:29;;:10;:29;;;:59;;;;10276:15;;;;;;;;;;;10265:26;;:7;:26;;;10232:59;10231:80;;;;;10296:15;;;;;;;;;;;10231:80;10228:738;;;10327:21;10351:7;;;;;;;;;;;:19;;;10371:10;10383:15;;;;;;;;;;;10400:7;10351:57;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:85;;;;;10413:23;10425:10;10413:11;:23::i;:::-;10412:24;10351:85;10327:109;;10473:18;10494:7;;;;;;;;;;;:19;;;10514:7;10523:15;;;;;;;;;;;10540:7;10494:54;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:79;;;;;10553:20;10565:7;10553:11;:20::i;:::-;10552:21;10494:79;10473:100;;10613:16;10610:170;;;10649:22;10660:10;10649;:22::i;:::-;10690:19;10701:7;10690:10;:19::i;:::-;10733:31;10744:10;10756:7;10733:31;;;;;;;:::i;:::-;;;;;;;;10610:170;10797:13;10794:161;;;10830:19;10841:7;10830:10;:19::i;:::-;10868;10879:7;10868:10;:19::i;:::-;10911:28;10922:7;10931;10911:28;;;;;;;:::i;:::-;;;;;;;;10794:161;10228:738;;;10136:837;;;:::o;8954:126::-;9020:4;9067:5;9044:28;;:10;:19;9055:7;9044:19;;;;;;;;;;;;;;;;;;;;;;;;;:28;;;9037:35;;8954:126;;;:::o;8777:169::-;8852:4;8887:7;:5;:7::i;:::-;8876:18;;:7;:18;;;;:43;;;;;8912:7;:5;:7::i;:::-;8898:21;;:10;:21;;;;8876:43;:62;;;;;8923:15;;;;;;;;;;;8876:62;8869:69;;8777:169;;;;:::o;9486:165::-;9574:4;9598:10;:19;9609:7;9598:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;9621:10;:22;9632:10;9621:22;;;;;;;;;;;;;;;;;;;;;;;;;9598:45;9591:52;;9486:165;;;;:::o;15339:374::-;15393:21;15417:24;15435:4;15417:9;:24::i;:::-;15393:48;;15462:38;15520:23;;15503:13;:40;;15462:81;;15558:21;15571:7;15558:12;:21::i;:::-;:58;;;;;15583:33;15558:58;15554:152;;;15633:32;15651:13;15633:17;:32::i;:::-;15680:14;:12;:14::i;:::-;15554:152;15339:374;;;:::o;2633:189::-;2719:7;2751:1;2747;:5;2754:12;2739:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2778:9;2794:1;2790;:5;;;;:::i;:::-;2778:17;;2813:1;2806:8;;;2633:189;;;;;:::o;14820:249::-;14908:7;14928:10;14943:19;:28;14963:7;14943:28;;;;;;;;;;;;;;;;;;;;;;;;;:63;;;;14975:19;:31;14995:10;14975:31;;;;;;;;;;;;;;;;;;;;;;;;;14943:63;14941:66;14928:79;;15022:5;15018:19;;15036:1;15029:8;;;;;15018:19;15055:6;;15048:13;;;14820:249;;;;;:::o;1897:136::-;1955:7;1982:43;1986:1;1989;1982:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1975:50;;1897:136;;;;:::o;15075:255::-;15166:7;15186:10;15201:19;:28;15221:7;15201:28;;;;;;;;;;;;;;;;;;;;;;;;;:63;;;;15233:19;:31;15253:10;15233:31;;;;;;;;;;;;;;;;;;;;;;;;;15201:63;15199:66;15186:79;;15280:5;15276:19;;15294:1;15287:8;;;;;15276:19;15313:9;;15306:16;;;15075:255;;;;;:::o;9659:113::-;9720:4;9744:10;:20;9755:8;9744:20;;;;;;;;;;;;;;;;;;;;;;;;;9737:27;;9659:113;;;:::o;10981:149::-;11042:6;:16;11049:8;11042:16;;;;;;;;;;;;;;;;;;;;;;;;;11038:50;;11087:1;11073:10;;:15;;;;;;;:::i;:::-;;;;;;;;11038:50;11118:4;11099:6;:16;11106:8;11099:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;10981:149;:::o;8621:148::-;8681:4;8706:8;;;;;;;;;;;8705:9;:39;;;;;8729:15;;;;;;;;;;;8718:26;;:7;:26;;;;8705:39;:56;;;;;8748:13;;;;;;;;;;;8705:56;8698:63;;8621:148;;;:::o;15725:482::-;6553:4;6542:8;;:15;;;;;;;;;;;;;;;;;;15800:22:::1;15839:1;15825:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15800:41;;15871:4;15852:5;15858:1;15852:8;;;;;;;;;;;;;;;;;;;;;:24;;;;;;;;;::::0;::::1;15898:17;;;;;;;;;;;:22;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15887:5;15893:1;15887:8;;;;;;;;;;;;;;;;;;;;;:35;;;;;;;;;::::0;::::1;15933:60;15950:4;15965:17;;;;;;;;;;;15985:7;15933:8;:60::i;:::-;16004:17;;;;;;;;;;;:68;;;16087:7;16109:1;16125:5;16153:4;16173:15;16004:195;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;6568:1;6591:5:::0;6580:8;;:16;;;;;;;;;;;;;;;;;;15725:482;:::o;16219:317::-;16262:19;16284:21;16262:43;;16316:14;16333:21;16347:6;;16333:9;;:13;;:21;;;;:::i;:::-;16316:38;;16365:16;16384:38;16415:6;16384:26;16398:11;16384:9;;:13;;:26;;;;:::i;:::-;:30;;:38;;;;:::i;:::-;16365:57;;16433:16;;;;;;;;;;;:25;;:35;16459:8;16433:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16479:13;;;;;;;;;;;:22;;:49;16502:25;16518:8;16502:11;:15;;:25;;;;:::i;:::-;16479:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16219:317;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;24:655:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:2;;;414:1;411;404:12;350:2;450:1;435:238;460:6;457:1;454:13;435:238;;;528:3;557:37;590:3;578:10;557:37;:::i;:::-;552:3;545:50;624:4;619:3;615:14;608:21;;658:4;653:3;649:14;642:21;;495:178;482:1;479;475:9;470:14;;435:238;;;439:14;126:553;;;;;;;:::o;685:345::-;763:5;788:66;804:49;846:6;804:49;:::i;:::-;788:66;:::i;:::-;779:75;;877:6;870:5;863:21;915:4;908:5;904:16;953:3;944:6;939:3;935:16;932:25;929:2;;;970:1;967;960:12;929:2;983:41;1017:6;1012:3;1007;983:41;:::i;:::-;769:261;;;;;;:::o;1036:139::-;1082:5;1120:6;1107:20;1098:29;;1136:33;1163:5;1136:33;:::i;:::-;1088:87;;;;:::o;1181:143::-;1238:5;1269:6;1263:13;1254:22;;1285:33;1312:5;1285:33;:::i;:::-;1244:80;;;;:::o;1330:155::-;1384:5;1422:6;1409:20;1400:29;;1438:41;1473:5;1438:41;:::i;:::-;1390:95;;;;:::o;1508:303::-;1579:5;1628:3;1621:4;1613:6;1609:17;1605:27;1595:2;;1646:1;1643;1636:12;1595:2;1686:6;1673:20;1711:94;1801:3;1793:6;1786:4;1778:6;1774:17;1711:94;:::i;:::-;1702:103;;1585:226;;;;;:::o;1817:137::-;1871:5;1902:6;1896:13;1887:22;;1918:30;1942:5;1918:30;:::i;:::-;1877:77;;;;:::o;1974:273::-;2030:5;2079:3;2072:4;2064:6;2060:17;2056:27;2046:2;;2097:1;2094;2087:12;2046:2;2137:6;2124:20;2162:79;2237:3;2229:6;2222:4;2214:6;2210:17;2162:79;:::i;:::-;2153:88;;2036:211;;;;;:::o;2253:139::-;2299:5;2337:6;2324:20;2315:29;;2353:33;2380:5;2353:33;:::i;:::-;2305:87;;;;:::o;2398:143::-;2455:5;2486:6;2480:13;2471:22;;2502:33;2529:5;2502:33;:::i;:::-;2461:80;;;;:::o;2547:262::-;2606:6;2655:2;2643:9;2634:7;2630:23;2626:32;2623:2;;;2671:1;2668;2661:12;2623:2;2714:1;2739:53;2784:7;2775:6;2764:9;2760:22;2739:53;:::i;:::-;2729:63;;2685:117;2613:196;;;;:::o;2815:284::-;2885:6;2934:2;2922:9;2913:7;2909:23;2905:32;2902:2;;;2950:1;2947;2940:12;2902:2;2993:1;3018:64;3074:7;3065:6;3054:9;3050:22;3018:64;:::i;:::-;3008:74;;2964:128;2892:207;;;;:::o;3105:278::-;3172:6;3221:2;3209:9;3200:7;3196:23;3192:32;3189:2;;;3237:1;3234;3227:12;3189:2;3280:1;3305:61;3358:7;3349:6;3338:9;3334:22;3305:61;:::i;:::-;3295:71;;3251:125;3179:204;;;;:::o;3389:407::-;3457:6;3465;3514:2;3502:9;3493:7;3489:23;3485:32;3482:2;;;3530:1;3527;3520:12;3482:2;3573:1;3598:53;3643:7;3634:6;3623:9;3619:22;3598:53;:::i;:::-;3588:63;;3544:117;3700:2;3726:53;3771:7;3762:6;3751:9;3747:22;3726:53;:::i;:::-;3716:63;;3671:118;3472:324;;;;;:::o;3802:552::-;3879:6;3887;3895;3944:2;3932:9;3923:7;3919:23;3915:32;3912:2;;;3960:1;3957;3950:12;3912:2;4003:1;4028:53;4073:7;4064:6;4053:9;4049:22;4028:53;:::i;:::-;4018:63;;3974:117;4130:2;4156:53;4201:7;4192:6;4181:9;4177:22;4156:53;:::i;:::-;4146:63;;4101:118;4258:2;4284:53;4329:7;4320:6;4309:9;4305:22;4284:53;:::i;:::-;4274:63;;4229:118;3902:452;;;;;:::o;4360:520::-;4438:6;4446;4495:2;4483:9;4474:7;4470:23;4466:32;4463:2;;;4511:1;4508;4501:12;4463:2;4554:1;4579:53;4624:7;4615:6;4604:9;4600:22;4579:53;:::i;:::-;4569:63;;4525:117;4709:2;4698:9;4694:18;4681:32;4740:18;4732:6;4729:30;4726:2;;;4772:1;4769;4762:12;4726:2;4800:63;4855:7;4846:6;4835:9;4831:22;4800:63;:::i;:::-;4790:73;;4652:221;4453:427;;;;;:::o;4886:407::-;4954:6;4962;5011:2;4999:9;4990:7;4986:23;4982:32;4979:2;;;5027:1;5024;5017:12;4979:2;5070:1;5095:53;5140:7;5131:6;5120:9;5116:22;5095:53;:::i;:::-;5085:63;;5041:117;5197:2;5223:53;5268:7;5259:6;5248:9;5244:22;5223:53;:::i;:::-;5213:63;;5168:118;4969:324;;;;;:::o;5299:405::-;5383:6;5432:2;5420:9;5411:7;5407:23;5403:32;5400:2;;;5448:1;5445;5438:12;5400:2;5519:1;5508:9;5504:17;5491:31;5549:18;5541:6;5538:30;5535:2;;;5581:1;5578;5571:12;5535:2;5609:78;5679:7;5670:6;5659:9;5655:22;5609:78;:::i;:::-;5599:88;;5462:235;5390:314;;;;:::o;5710:278::-;5777:6;5826:2;5814:9;5805:7;5801:23;5797:32;5794:2;;;5842:1;5839;5832:12;5794:2;5885:1;5910:61;5963:7;5954:6;5943:9;5939:22;5910:61;:::i;:::-;5900:71;;5856:125;5784:204;;;;:::o;5994:262::-;6053:6;6102:2;6090:9;6081:7;6077:23;6073:32;6070:2;;;6118:1;6115;6108:12;6070:2;6161:1;6186:53;6231:7;6222:6;6211:9;6207:22;6186:53;:::i;:::-;6176:63;;6132:117;6060:196;;;;:::o;6262:596::-;6350:6;6358;6366;6415:2;6403:9;6394:7;6390:23;6386:32;6383:2;;;6431:1;6428;6421:12;6383:2;6474:1;6499:64;6555:7;6546:6;6535:9;6531:22;6499:64;:::i;:::-;6489:74;;6445:128;6612:2;6638:64;6694:7;6685:6;6674:9;6670:22;6638:64;:::i;:::-;6628:74;;6583:129;6751:2;6777:64;6833:7;6824:6;6813:9;6809:22;6777:64;:::i;:::-;6767:74;;6722:129;6373:485;;;;;:::o;6864:179::-;6933:10;6954:46;6996:3;6988:6;6954:46;:::i;:::-;7032:4;7027:3;7023:14;7009:28;;6944:99;;;;:::o;7049:108::-;7126:24;7144:5;7126:24;:::i;:::-;7121:3;7114:37;7104:53;;:::o;7163:118::-;7250:24;7268:5;7250:24;:::i;:::-;7245:3;7238:37;7228:53;;:::o;7317:732::-;7436:3;7465:54;7513:5;7465:54;:::i;:::-;7535:86;7614:6;7609:3;7535:86;:::i;:::-;7528:93;;7645:56;7695:5;7645:56;:::i;:::-;7724:7;7755:1;7740:284;7765:6;7762:1;7759:13;7740:284;;;7841:6;7835:13;7868:63;7927:3;7912:13;7868:63;:::i;:::-;7861:70;;7954:60;8007:6;7954:60;:::i;:::-;7944:70;;7800:224;7787:1;7784;7780:9;7775:14;;7740:284;;;7744:14;8040:3;8033:10;;7441:608;;;;;;;:::o;8055:109::-;8136:21;8151:5;8136:21;:::i;:::-;8131:3;8124:34;8114:50;;:::o;8170:147::-;8265:45;8304:5;8265:45;:::i;:::-;8260:3;8253:58;8243:74;;:::o;8323:364::-;8411:3;8439:39;8472:5;8439:39;:::i;:::-;8494:71;8558:6;8553:3;8494:71;:::i;:::-;8487:78;;8574:52;8619:6;8614:3;8607:4;8600:5;8596:16;8574:52;:::i;:::-;8651:29;8673:6;8651:29;:::i;:::-;8646:3;8642:39;8635:46;;8415:272;;;;;:::o;8693:366::-;8835:3;8856:67;8920:2;8915:3;8856:67;:::i;:::-;8849:74;;8932:93;9021:3;8932:93;:::i;:::-;9050:2;9045:3;9041:12;9034:19;;8839:220;;;:::o;9065:366::-;9207:3;9228:67;9292:2;9287:3;9228:67;:::i;:::-;9221:74;;9304:93;9393:3;9304:93;:::i;:::-;9422:2;9417:3;9413:12;9406:19;;9211:220;;;:::o;9437:366::-;9579:3;9600:67;9664:2;9659:3;9600:67;:::i;:::-;9593:74;;9676:93;9765:3;9676:93;:::i;:::-;9794:2;9789:3;9785:12;9778:19;;9583:220;;;:::o;9809:366::-;9951:3;9972:67;10036:2;10031:3;9972:67;:::i;:::-;9965:74;;10048:93;10137:3;10048:93;:::i;:::-;10166:2;10161:3;10157:12;10150:19;;9955:220;;;:::o;10181:366::-;10323:3;10344:67;10408:2;10403:3;10344:67;:::i;:::-;10337:74;;10420:93;10509:3;10420:93;:::i;:::-;10538:2;10533:3;10529:12;10522:19;;10327:220;;;:::o;10553:366::-;10695:3;10716:67;10780:2;10775:3;10716:67;:::i;:::-;10709:74;;10792:93;10881:3;10792:93;:::i;:::-;10910:2;10905:3;10901:12;10894:19;;10699:220;;;:::o;10925:366::-;11067:3;11088:67;11152:2;11147:3;11088:67;:::i;:::-;11081:74;;11164:93;11253:3;11164:93;:::i;:::-;11282:2;11277:3;11273:12;11266:19;;11071:220;;;:::o;11297:366::-;11439:3;11460:67;11524:2;11519:3;11460:67;:::i;:::-;11453:74;;11536:93;11625:3;11536:93;:::i;:::-;11654:2;11649:3;11645:12;11638:19;;11443:220;;;:::o;11669:366::-;11811:3;11832:67;11896:2;11891:3;11832:67;:::i;:::-;11825:74;;11908:93;11997:3;11908:93;:::i;:::-;12026:2;12021:3;12017:12;12010:19;;11815:220;;;:::o;12041:366::-;12183:3;12204:67;12268:2;12263:3;12204:67;:::i;:::-;12197:74;;12280:93;12369:3;12280:93;:::i;:::-;12398:2;12393:3;12389:12;12382:19;;12187:220;;;:::o;12413:118::-;12500:24;12518:5;12500:24;:::i;:::-;12495:3;12488:37;12478:53;;:::o;12537:112::-;12620:22;12636:5;12620:22;:::i;:::-;12615:3;12608:35;12598:51;;:::o;12655:222::-;12748:4;12786:2;12775:9;12771:18;12763:26;;12799:71;12867:1;12856:9;12852:17;12843:6;12799:71;:::i;:::-;12753:124;;;;:::o;12883:332::-;13004:4;13042:2;13031:9;13027:18;13019:26;;13055:71;13123:1;13112:9;13108:17;13099:6;13055:71;:::i;:::-;13136:72;13204:2;13193:9;13189:18;13180:6;13136:72;:::i;:::-;13009:206;;;;;:::o;13221:442::-;13370:4;13408:2;13397:9;13393:18;13385:26;;13421:71;13489:1;13478:9;13474:17;13465:6;13421:71;:::i;:::-;13502:72;13570:2;13559:9;13555:18;13546:6;13502:72;:::i;:::-;13584;13652:2;13641:9;13637:18;13628:6;13584:72;:::i;:::-;13375:288;;;;;;:::o;13669:332::-;13790:4;13828:2;13817:9;13813:18;13805:26;;13841:71;13909:1;13898:9;13894:17;13885:6;13841:71;:::i;:::-;13922:72;13990:2;13979:9;13975:18;13966:6;13922:72;:::i;:::-;13795:206;;;;;:::o;14007:807::-;14256:4;14294:3;14283:9;14279:19;14271:27;;14308:71;14376:1;14365:9;14361:17;14352:6;14308:71;:::i;:::-;14389:72;14457:2;14446:9;14442:18;14433:6;14389:72;:::i;:::-;14471:80;14547:2;14536:9;14532:18;14523:6;14471:80;:::i;:::-;14561;14637:2;14626:9;14622:18;14613:6;14561:80;:::i;:::-;14651:73;14719:3;14708:9;14704:19;14695:6;14651:73;:::i;:::-;14734;14802:3;14791:9;14787:19;14778:6;14734:73;:::i;:::-;14261:553;;;;;;;;;:::o;14820:210::-;14907:4;14945:2;14934:9;14930:18;14922:26;;14958:65;15020:1;15009:9;15005:17;14996:6;14958:65;:::i;:::-;14912:118;;;;:::o;15036:313::-;15149:4;15187:2;15176:9;15172:18;15164:26;;15236:9;15230:4;15226:20;15222:1;15211:9;15207:17;15200:47;15264:78;15337:4;15328:6;15264:78;:::i;:::-;15256:86;;15154:195;;;;:::o;15355:419::-;15521:4;15559:2;15548:9;15544:18;15536:26;;15608:9;15602:4;15598:20;15594:1;15583:9;15579:17;15572:47;15636:131;15762:4;15636:131;:::i;:::-;15628:139;;15526:248;;;:::o;15780:419::-;15946:4;15984:2;15973:9;15969:18;15961:26;;16033:9;16027:4;16023:20;16019:1;16008:9;16004:17;15997:47;16061:131;16187:4;16061:131;:::i;:::-;16053:139;;15951:248;;;:::o;16205:419::-;16371:4;16409:2;16398:9;16394:18;16386:26;;16458:9;16452:4;16448:20;16444:1;16433:9;16429:17;16422:47;16486:131;16612:4;16486:131;:::i;:::-;16478:139;;16376:248;;;:::o;16630:419::-;16796:4;16834:2;16823:9;16819:18;16811:26;;16883:9;16877:4;16873:20;16869:1;16858:9;16854:17;16847:47;16911:131;17037:4;16911:131;:::i;:::-;16903:139;;16801:248;;;:::o;17055:419::-;17221:4;17259:2;17248:9;17244:18;17236:26;;17308:9;17302:4;17298:20;17294:1;17283:9;17279:17;17272:47;17336:131;17462:4;17336:131;:::i;:::-;17328:139;;17226:248;;;:::o;17480:419::-;17646:4;17684:2;17673:9;17669:18;17661:26;;17733:9;17727:4;17723:20;17719:1;17708:9;17704:17;17697:47;17761:131;17887:4;17761:131;:::i;:::-;17753:139;;17651:248;;;:::o;17905:419::-;18071:4;18109:2;18098:9;18094:18;18086:26;;18158:9;18152:4;18148:20;18144:1;18133:9;18129:17;18122:47;18186:131;18312:4;18186:131;:::i;:::-;18178:139;;18076:248;;;:::o;18330:419::-;18496:4;18534:2;18523:9;18519:18;18511:26;;18583:9;18577:4;18573:20;18569:1;18558:9;18554:17;18547:47;18611:131;18737:4;18611:131;:::i;:::-;18603:139;;18501:248;;;:::o;18755:419::-;18921:4;18959:2;18948:9;18944:18;18936:26;;19008:9;19002:4;18998:20;18994:1;18983:9;18979:17;18972:47;19036:131;19162:4;19036:131;:::i;:::-;19028:139;;18926:248;;;:::o;19180:419::-;19346:4;19384:2;19373:9;19369:18;19361:26;;19433:9;19427:4;19423:20;19419:1;19408:9;19404:17;19397:47;19461:131;19587:4;19461:131;:::i;:::-;19453:139;;19351:248;;;:::o;19605:222::-;19698:4;19736:2;19725:9;19721:18;19713:26;;19749:71;19817:1;19806:9;19802:17;19793:6;19749:71;:::i;:::-;19703:124;;;;:::o;19833:831::-;20096:4;20134:3;20123:9;20119:19;20111:27;;20148:71;20216:1;20205:9;20201:17;20192:6;20148:71;:::i;:::-;20229:80;20305:2;20294:9;20290:18;20281:6;20229:80;:::i;:::-;20356:9;20350:4;20346:20;20341:2;20330:9;20326:18;20319:48;20384:108;20487:4;20478:6;20384:108;:::i;:::-;20376:116;;20502:72;20570:2;20559:9;20555:18;20546:6;20502:72;:::i;:::-;20584:73;20652:3;20641:9;20637:19;20628:6;20584:73;:::i;:::-;20101:563;;;;;;;;:::o;20670:214::-;20759:4;20797:2;20786:9;20782:18;20774:26;;20810:67;20874:1;20863:9;20859:17;20850:6;20810:67;:::i;:::-;20764:120;;;;:::o;20890:129::-;20924:6;20951:20;;:::i;:::-;20941:30;;20980:33;21008:4;21000:6;20980:33;:::i;:::-;20931:88;;;:::o;21025:75::-;21058:6;21091:2;21085:9;21075:19;;21065:35;:::o;21106:311::-;21183:4;21273:18;21265:6;21262:30;21259:2;;;21295:18;;:::i;:::-;21259:2;21345:4;21337:6;21333:17;21325:25;;21405:4;21399;21395:15;21387:23;;21188:229;;;:::o;21423:308::-;21485:4;21575:18;21567:6;21564:30;21561:2;;;21597:18;;:::i;:::-;21561:2;21635:29;21657:6;21635:29;:::i;:::-;21627:37;;21719:4;21713;21709:15;21701:23;;21490:241;;;:::o;21737:132::-;21804:4;21827:3;21819:11;;21857:4;21852:3;21848:14;21840:22;;21809:60;;;:::o;21875:114::-;21942:6;21976:5;21970:12;21960:22;;21949:40;;;:::o;21995:99::-;22047:6;22081:5;22075:12;22065:22;;22054:40;;;:::o;22100:113::-;22170:4;22202;22197:3;22193:14;22185:22;;22175:38;;;:::o;22219:184::-;22318:11;22352:6;22347:3;22340:19;22392:4;22387:3;22383:14;22368:29;;22330:73;;;;:::o;22409:169::-;22493:11;22527:6;22522:3;22515:19;22567:4;22562:3;22558:14;22543:29;;22505:73;;;;:::o;22584:305::-;22624:3;22643:20;22661:1;22643:20;:::i;:::-;22638:25;;22677:20;22695:1;22677:20;:::i;:::-;22672:25;;22831:1;22763:66;22759:74;22756:1;22753:81;22750:2;;;22837:18;;:::i;:::-;22750:2;22881:1;22878;22874:9;22867:16;;22628:261;;;;:::o;22895:185::-;22935:1;22952:20;22970:1;22952:20;:::i;:::-;22947:25;;22986:20;23004:1;22986:20;:::i;:::-;22981:25;;23025:1;23015:2;;23030:18;;:::i;:::-;23015:2;23072:1;23069;23065:9;23060:14;;22937:143;;;;:::o;23086:348::-;23126:7;23149:20;23167:1;23149:20;:::i;:::-;23144:25;;23183:20;23201:1;23183:20;:::i;:::-;23178:25;;23371:1;23303:66;23299:74;23296:1;23293:81;23288:1;23281:9;23274:17;23270:105;23267:2;;;23378:18;;:::i;:::-;23267:2;23426:1;23423;23419:9;23408:20;;23134:300;;;;:::o;23440:191::-;23480:4;23500:20;23518:1;23500:20;:::i;:::-;23495:25;;23534:20;23552:1;23534:20;:::i;:::-;23529:25;;23573:1;23570;23567:8;23564:2;;;23578:18;;:::i;:::-;23564:2;23623:1;23620;23616:9;23608:17;;23485:146;;;;:::o;23637:96::-;23674:7;23703:24;23721:5;23703:24;:::i;:::-;23692:35;;23682:51;;;:::o;23739:104::-;23784:7;23813:24;23831:5;23813:24;:::i;:::-;23802:35;;23792:51;;;:::o;23849:90::-;23883:7;23926:5;23919:13;23912:21;23901:32;;23891:48;;;:::o;23945:126::-;23982:7;24022:42;24015:5;24011:54;24000:65;;23990:81;;;:::o;24077:77::-;24114:7;24143:5;24132:16;;24122:32;;;:::o;24160:86::-;24195:7;24235:4;24228:5;24224:16;24213:27;;24203:43;;;:::o;24252:121::-;24310:9;24343:24;24361:5;24343:24;:::i;:::-;24330:37;;24320:53;;;:::o;24379:154::-;24463:6;24458:3;24453;24440:30;24525:1;24516:6;24511:3;24507:16;24500:27;24430:103;;;:::o;24539:307::-;24607:1;24617:113;24631:6;24628:1;24625:13;24617:113;;;24716:1;24711:3;24707:11;24701:18;24697:1;24692:3;24688:11;24681:39;24653:2;24650:1;24646:10;24641:15;;24617:113;;;24748:6;24745:1;24742:13;24739:2;;;24828:1;24819:6;24814:3;24810:16;24803:27;24739:2;24588:258;;;;:::o;24852:320::-;24896:6;24933:1;24927:4;24923:12;24913:22;;24980:1;24974:4;24970:12;25001:18;24991:2;;25057:4;25049:6;25045:17;25035:27;;24991:2;25119;25111:6;25108:14;25088:18;25085:38;25082:2;;;25138:18;;:::i;:::-;25082:2;24903:269;;;;:::o;25178:281::-;25261:27;25283:4;25261:27;:::i;:::-;25253:6;25249:40;25391:6;25379:10;25376:22;25355:18;25343:10;25340:34;25337:62;25334:2;;;25402:18;;:::i;:::-;25334:2;25442:10;25438:2;25431:22;25221:238;;;:::o;25465:233::-;25504:3;25527:24;25545:5;25527:24;:::i;:::-;25518:33;;25573:66;25566:5;25563:77;25560:2;;;25643:18;;:::i;:::-;25560:2;25690:1;25683:5;25679:13;25672:20;;25508:190;;;:::o;25704:180::-;25752:77;25749:1;25742:88;25849:4;25846:1;25839:15;25873:4;25870:1;25863:15;25890:180;25938:77;25935:1;25928:88;26035:4;26032:1;26025:15;26059:4;26056:1;26049:15;26076:180;26124:77;26121:1;26114:88;26221:4;26218:1;26211:15;26245:4;26242:1;26235:15;26262:180;26310:77;26307:1;26300:88;26407:4;26404:1;26397:15;26431:4;26428:1;26421:15;26448:102;26489:6;26540:2;26536:7;26531:2;26524:5;26520:14;26516:28;26506:38;;26496:54;;;:::o;26556:222::-;26696:34;26692:1;26684:6;26680:14;26673:58;26765:5;26760:2;26752:6;26748:15;26741:30;26662:116;:::o;26784:240::-;26924:34;26920:1;26912:6;26908:14;26901:58;26993:23;26988:2;26980:6;26976:15;26969:48;26890:134;:::o;27030:221::-;27170:34;27166:1;27158:6;27154:14;27147:58;27239:4;27234:2;27226:6;27222:15;27215:29;27136:115;:::o;27257:177::-;27397:29;27393:1;27385:6;27381:14;27374:53;27363:71;:::o;27440:220::-;27580:34;27576:1;27568:6;27564:14;27557:58;27649:3;27644:2;27636:6;27632:15;27625:28;27546:114;:::o;27666:182::-;27806:34;27802:1;27794:6;27790:14;27783:58;27772:76;:::o;27854:228::-;27994:34;27990:1;27982:6;27978:14;27971:58;28063:11;28058:2;28050:6;28046:15;28039:36;27960:122;:::o;28088:224::-;28228:34;28224:1;28216:6;28212:14;28205:58;28297:7;28292:2;28284:6;28280:15;28273:32;28194:118;:::o;28318:223::-;28458:34;28454:1;28446:6;28442:14;28435:58;28527:6;28522:2;28514:6;28510:15;28503:31;28424:117;:::o;28547:173::-;28687:25;28683:1;28675:6;28671:14;28664:49;28653:67;:::o;28726:122::-;28799:24;28817:5;28799:24;:::i;:::-;28792:5;28789:35;28779:2;;28838:1;28835;28828:12;28779:2;28769:79;:::o;28854:138::-;28935:32;28961:5;28935:32;:::i;:::-;28928:5;28925:43;28915:2;;28982:1;28979;28972:12;28915:2;28905:87;:::o;28998:116::-;29068:21;29083:5;29068:21;:::i;:::-;29061:5;29058:32;29048:2;;29104:1;29101;29094:12;29048:2;29038:76;:::o;29120:122::-;29193:24;29211:5;29193:24;:::i;:::-;29186:5;29183:35;29173:2;;29232:1;29229;29222:12;29173:2;29163:79;:::o

Swarm Source

ipfs://575e934216531a2a7072554e1debb73d45d7fd002950d911d30a958be691a9f5

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.

Validator Index Block Amount
View All Withdrawals

Txn Hash Block Value Eth2 PubKey Valid
View All Deposits
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.