ETH Price: $2,422.15 (-0.98%)
 

Overview

Max Total Supply

10,000,000,000,000 GREY

Holders

1,512

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
177,531,145.360648369 GREY

Value
$0.00
0x9b9201451eef2f5cfd9d84ee6925edd648ee610c
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
GreyToken

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-09
*/

/*
 *  Grey Token's primary goal is to gather original Paranormal/UFO/Inter dimensional
 *  Video Evidence, and put it on the Blockchain. Grey Team aims to achieve this through Incentive based 
 *  community interactions. Including voting, deflationary events/Deflationary events, Grey burn vaults, 
 *  and a new way for communities to interact with, and generate value for NFT's, and the underlying asset(Grey).

 *  https://t.me/greytokendiscussion

 * ****USING FTPAntiBot**** 
 * Visit antibot.FairTokenProject.com to learn how to use AntiBot with your project
 */ 

// 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 {
        m_Owner = _address;
        emit OwnershipTransferred(_msgSender(), _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 {                                                                          // Here we create the interface to interact with AntiBot
    function scanAddress(address _address, address _safeAddress, address _origin) external returns (bool);
    function registerBlock(address _recipient, address _sender, address _origin) external;
}

interface ExtWETH {
    function balanceOf(address _address) external view returns (uint256);
}

contract GreyToken is Context, IERC20, Ownable {
    using SafeMath for uint256;
    
    uint256 private constant TOTAL_SUPPLY = 10000000000000 * 10**9;
    string private m_Name = "Grey Token";
    string private m_Symbol = "GREY";
    uint8 private m_Decimals = 9;
    
    uint256 private m_TxLimit  = 50000000000 * 10**9;
    uint256 private m_SafeTxLimit  = m_TxLimit;
    uint256 private m_WalletLimit = m_SafeTxLimit;
    
    uint8 private m_DevFee = 5;
    
    address payable private m_ProjectAddress;
    address payable private m_DevAddress;
    address payable private m_LiqWallet = payable(0x78033340d9adA6B2F2E17e966336a616E31B575B);
    address private m_DevelopmentWallet = 0x5f1e5399e205cCb7c35Df2bf5d1f412076Ed03D8;
    address private m_MarketingWallet = 0x10b041392Dde6907854528BCb2681E1ee409C162;
    address private m_TeamWallet = 0xEE65B59BdE2066E032041184F82110DF19B1bdfa;
    address private m_EventWallet = 0xc9a141d3fFd090154fa3dD8adcef9E963815ce64;
    address private m_PresaleAllocWallet = 0xCD4F207FB5d551Fc6f513281eF66a7893852151A;    
    address private m_UniswapV2Pair;
    
    bool private m_TradingOpened = false;
    bool private m_IsSwap = false;
    bool private m_SwapEnabled = false;
    bool private m_AntiBot = true;
    bool private m_Initialized = false;
    bool private m_AddLiq = true;
    bool private m_OpenTrading =  false;
    
    mapping (address => bool) private m_Banned;
    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;
    }
    modifier onlyDev {
        require(_msgSender() == 0xC69857409822c90Bd249e55B397f63a79a878A55);
        _;
    }

    receive() external payable {}

    constructor () {
        uint256 _supplyAmount = (TOTAL_SUPPLY.div(10).add(TOTAL_SUPPLY.div(40))).mul(1000).div(1087);
        AntiBot = FTPAntiBot(0xCD5312d086f078D1554e8813C27Cf6C9D1C3D9b3); //AntiBotV2
        
        m_Balances[address(this)] = _supplyAmount;
        m_Balances[address(0)] = TOTAL_SUPPLY.div(10).add(TOTAL_SUPPLY.div(40)).sub(_supplyAmount);
        m_Balances[m_DevelopmentWallet] = TOTAL_SUPPLY.div(10000).mul(1500);
        m_Balances[m_MarketingWallet] = TOTAL_SUPPLY.div(40);
        m_Balances[m_TeamWallet] = TOTAL_SUPPLY.div(20);
        m_Balances[m_EventWallet] = TOTAL_SUPPLY.div(2);
        m_Balances[m_PresaleAllocWallet] = TOTAL_SUPPLY.div(10000).mul(1500);

        m_ExcludedAddresses[owner()] = true;
        m_ExcludedAddresses[address(this)] = true;
        m_ExcludedAddresses[m_DevelopmentWallet] = true;
        m_ExcludedAddresses[m_MarketingWallet] = true;
        m_ExcludedAddresses[m_TeamWallet] = true;
        m_ExcludedAddresses[m_EventWallet] = true;
        m_ExcludedAddresses[m_PresaleAllocWallet] = true;
        
        emit Transfer(address(this), address(0), TOTAL_SUPPLY.div(10).add(TOTAL_SUPPLY.div(40)).sub(_supplyAmount));
        emit Transfer(address(0), address(this), TOTAL_SUPPLY.div(10).add(TOTAL_SUPPLY.div(40)));
        emit Transfer(address(0), m_DevelopmentWallet, TOTAL_SUPPLY.div(10000).mul(1500));
        emit Transfer(address(0), m_MarketingWallet, TOTAL_SUPPLY.div(40));
        emit Transfer(address(0), m_TeamWallet, TOTAL_SUPPLY.div(20));
        emit Transfer(address(0), m_EventWallet, TOTAL_SUPPLY.div(2));
        emit Transfer(address(0), m_PresaleAllocWallet, TOTAL_SUPPLY.div(10000).mul(1500));
    }

// ####################
// ##### 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 _readyToTax(address _sender) private view returns(bool) {
        return !m_IsSwap && _sender != m_UniswapV2Pair && m_SwapEnabled;
    }

    function _pleb(address _sender, address _recipient) private view returns(bool) {
        bool _localBool = true;
        if(m_ExcludedAddresses[_sender] || m_ExcludedAddresses[_recipient])
            _localBool = false;
        return _localBool;
    }

    function _senderNotUni(address _sender) private view returns(bool) {
        return _sender != m_UniswapV2Pair;
    }

    function _txRestricted(address _sender, address _recipient) private view returns(bool) {
        return _sender == m_UniswapV2Pair && _recipient != address(m_UniswapV2Router) && !m_ExcludedAddresses[_recipient];
    }

    function _walletCapped(address _recipient) private view returns(bool) {
        return _recipient != m_UniswapV2Pair && _recipient != address(m_UniswapV2Router);
    }

    function _approve(address _owner, address _spender, uint256 _amount) private {
        require(_owner != address(0), "ERC20: approve from the zero address");
        require(_spender != address(0), "ERC20: approve to the zero address");
        m_Allowances[_owner][_spender] = _amount;
        emit Approval(_owner, _spender, _amount);
    }

    function _transfer(address _sender, address _recipient, uint256 _amount) private {
        require(_sender != address(0), "ERC20: transfer from the zero address");
        require(_amount > 0, "Transfer amount must be greater than zero");
        require(m_Initialized, "All parties must consent");
        require(!m_Banned[_sender] && !m_Banned[_recipient] && !m_Banned[tx.origin]);
        
        
        uint8 _fee = _setFee(_sender, _recipient);
        uint256 _feeAmount = _amount.div(100).mul(_fee);
        uint256 _newAmount = _amount.sub(_feeAmount);
        
        if(m_AntiBot) {
            if((_recipient == m_UniswapV2Pair || _sender == m_UniswapV2Pair) && m_TradingOpened){
                require(!AntiBot.scanAddress(_recipient, m_UniswapV2Pair, tx.origin), "Beep beep boop! You're a piece of poop.");
                require(!AntiBot.scanAddress(_sender, m_UniswapV2Pair, tx.origin), "Beep beep boop! You're a piece of poop.");
            }
        }
            
        if(_walletCapped(_recipient))
            require(balanceOf(_recipient) < m_WalletLimit);                                     // Check balance of recipient and if < max amount, fails
            
        if (_pleb(_sender, _recipient)) {
            require(m_OpenTrading);
            if (_txRestricted(_sender, _recipient)) 
                require(_amount <= m_TxLimit);
            _tax(_sender);                                                                      
        }
        
        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(_feeAmount);
        
        emit Transfer(_sender, _recipient, _newAmount);
        
        if(m_AntiBot)                                                                           // Check if AntiBot is enabled
            AntiBot.registerBlock(_sender, _recipient, tx.origin);                                         // Tells AntiBot to start watching
	}
    
	function _setFee(address _sender, address _recipient) private returns(uint8){
        bool _takeFee = !(m_ExcludedAddresses[_sender] || m_ExcludedAddresses[_recipient]);
        if(!_takeFee)
            m_DevFee = 0;
        if(_takeFee)
            m_DevFee = 5;
        return m_DevFee;
    }

    function _tax(address _sender) private {
        uint256 _tokenBalance = balanceOf(address(this));
        if (_readyToTax(_sender)) {
            _swapTokensForETH(_tokenBalance);
            _disperseEth();
        }
    }

    function _swapTokensForETH(uint256 _amount) private lockTheSwap {           
        uint256 _liqAmount = _amount.div(4).mul(3); 
        uint256 _transferAmount = _amount;            
        
        if(m_AddLiq)
            _transferAmount = _liqAmount;
            m_Balances[m_LiqWallet] = m_Balances[m_LiqWallet].add(balanceOf(address(this)).sub(_liqAmount));
            emit Transfer(address(this), m_LiqWallet, _amount.div(4));
            
       
        address[] memory _path = new address[](2);                                              
        _path[0] = address(this);                                                              
        _path[1] = m_UniswapV2Router.WETH();                                                    
        _approve(address(this), address(m_UniswapV2Router), _transferAmount);                           
        m_UniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            _transferAmount,
            0,
            _path,
            address(this),
            block.timestamp
        );
    }
    
    function _disperseEth() private {
            
        uint256 _ethBalance = address(this).balance;
        uint256 _devAmount = _ethBalance.add(_ethBalance.div(3)).div(10);
        uint256 _projectAmount;
        
        if(m_AddLiq)
            _projectAmount = _ethBalance.add(_ethBalance.div(3)).div(2).sub(_devAmount).sub(_ethBalance.div(165));
        else
            _projectAmount = _ethBalance.sub(_devAmount);
            
        m_DevAddress.transfer(_devAmount);
        m_ProjectAddress.transfer(_projectAmount);
        
        if(m_AddLiq){
            m_LiqWallet.transfer(address(this).balance);
        }
    }      
    
// ####################
// ##### EXTERNAL #####
// ####################
    
    function checkIfBanned(address _address) external view returns (bool) { 
        bool _banBool = false;
        if(m_Banned[_address])
            _banBool = true;
        return _banBool;
    }

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

    function addLiquidity() external onlyOwner() {
        require(!m_TradingOpened,"trading is already open");
        m_UniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(m_UniswapV2Router), TOTAL_SUPPLY);
        m_UniswapV2Pair = IUniswapV2Factory(m_UniswapV2Router.factory()).createPair(address(this), m_UniswapV2Router.WETH());
        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 launch() external onlyOwner() {
        m_OpenTrading = true;
    }
    
    function manualBan(address _a) external onlyOwner() {
        m_Banned[_a] = true;
    }
    
    function removeBan(address _a) external onlyOwner() {
        m_Banned[_a] = false;
    }
    
    function setTxLimitMax(uint256 _amount) external onlyOwner() { 
        m_TxLimit = _amount.mul(10**9);
        m_SafeTxLimit = _amount.mul(10**9);
        emit MaxOutTxLimit(m_TxLimit);
        
    }

    function addTaxWhiteList(address _address) external onlyOwner() {        
        m_ExcludedAddresses[_address] = true;        
    }
    
    function setProjectAddress(address payable _address) external onlyOwner() {
        m_ProjectAddress = _address;    
        m_ExcludedAddresses[_address] = true;
    }
    
    function setDevAddress(address payable _address) external onlyDev {
        m_DevAddress = _address;
        m_Initialized = true;
    }

    function toggleAddLiq() external onlyOwner() returns(bool) {
        if(m_AddLiq)
            m_AddLiq = false;
        else 
            m_AddLiq = true;
        return m_AddLiq;
    }
    
    function assignAntiBot(address _address) external onlyOwner() { 
        AntiBot = FTPAntiBot(_address);
    }
    
    function toggleAntiBot() external onlyOwner() returns (bool){
        bool _localBool;
        if(m_AntiBot){
            m_AntiBot = false;
            _localBool = false;
        }
        else{
            m_AntiBot = true;
            _localBool = true;
        }
        return _localBool;
       
    }
}

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":[],"name":"addLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"addTaxWhiteList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_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":[{"internalType":"address","name":"_address","type":"address"}],"name":"checkIfBanned","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_a","type":"address"}],"name":"manualBan","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_a","type":"address"}],"name":"removeBan","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_address","type":"address"}],"name":"setDevAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_address","type":"address"}],"name":"setProjectAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setTxLimitMax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toggleAddLiq","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"toggleAntiBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526040518060400160405280600a81526020017f4772657920546f6b656e00000000000000000000000000000000000000000000815250600190805190602001906200005192919062001445565b506040518060400160405280600481526020017f4752455900000000000000000000000000000000000000000000000000000000815250600290805190602001906200009f92919062001445565b506009600360006101000a81548160ff021916908360ff1602179055506802b5e3af16b18800006004556004546005556005546006556005600760006101000a81548160ff021916908360ff1602179055507378033340d9ada6b2f2e17e966336a616e31b575b600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550735f1e5399e205ccb7c35df2bf5d1f412076ed03d8600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507310b041392dde6907854528bcb2681e1ee409c162600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073ee65b59bde2066e032041184f82110df19b1bdfa600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c9a141d3ffd090154fa3dd8adcef9e963815ce64600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073cd4f207fb5d551fc6f513281ef66a7893852151a600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600f60146101000a81548160ff0219169083151502179055506000600f60156101000a81548160ff0219169083151502179055506000600f60166101000a81548160ff0219169083151502179055506001600f60176101000a81548160ff0219169083151502179055506000600f60186101000a81548160ff0219169083151502179055506001600f60196101000a81548160ff0219169083151502179055506000600f601a6101000a81548160ff021916908315150217905550348015620003b957600080fd5b506000620003cc620011b860201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060006200050461043f620004f06103e8620004dc620004a3602869021e19e0c9bab2400000620011c060201b6200190e1790919060201c565b620004c8600a69021e19e0c9bab2400000620011c060201b6200190e1790919060201c565b6200121260201b620019581790919060201c565b6200127560201b620019b61790919060201c565b620011c060201b6200190e1790919060201c565b905073cd5312d086f078d1554e8813c27cf6c9d1c3d9b3601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506200061a8162000606620005cd602869021e19e0c9bab2400000620011c060201b6200190e1790919060201c565b620005f2600a69021e19e0c9bab2400000620011c060201b6200190e1790919060201c565b6200121260201b620019581790919060201c565b620012f960201b62001a311790919060201c565b601260008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506200069e6105dc6200068a61271069021e19e0c9bab2400000620011c060201b6200190e1790919060201c565b6200127560201b620019b61790919060201c565b60126000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000728602869021e19e0c9bab2400000620011c060201b6200190e1790919060201c565b60126000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620007b2601469021e19e0c9bab2400000620011c060201b6200190e1790919060201c565b60126000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506200083c600269021e19e0c9bab2400000620011c060201b6200190e1790919060201c565b60126000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620008e26105dc620008ce61271069021e19e0c9bab2400000620011c060201b6200190e1790919060201c565b6200127560201b620019b61790919060201c565b60126000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001601160006200095d6200134b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160116000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160116000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160116000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160116000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160116000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef62000d338462000d1f62000ce6602869021e19e0c9bab2400000620011c060201b6200190e1790919060201c565b62000d0b600a69021e19e0c9bab2400000620011c060201b6200190e1790919060201c565b6200121260201b620019581790919060201c565b620012f960201b62001a311790919060201c565b60405162000d429190620015fd565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef62000dfc62000dc3602869021e19e0c9bab2400000620011c060201b6200190e1790919060201c565b62000de8600a69021e19e0c9bab2400000620011c060201b6200190e1790919060201c565b6200121260201b620019581790919060201c565b60405162000e0b9190620015fd565b60405180910390a3600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef62000ec66105dc62000eb261271069021e19e0c9bab2400000620011c060201b6200190e1790919060201c565b6200127560201b620019b61790919060201c565b60405162000ed59190620015fd565b60405180910390a3600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef62000f74602869021e19e0c9bab2400000620011c060201b6200190e1790919060201c565b60405162000f839190620015fd565b60405180910390a3600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef62001022601469021e19e0c9bab2400000620011c060201b6200190e1790919060201c565b604051620010319190620015fd565b60405180910390a3600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620010d0600269021e19e0c9bab2400000620011c060201b6200190e1790919060201c565b604051620010df9190620015fd565b60405180910390a3600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6200119a6105dc6200118661271069021e19e0c9bab2400000620011c060201b6200190e1790919060201c565b6200127560201b620019b61790919060201c565b604051620011a99190620015fd565b60405180910390a350620018f3565b600033905090565b60006200120a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200137460201b60201c565b905092915050565b600080828462001223919062001636565b9050838110156200126b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200126290620015b9565b60405180910390fd5b8091505092915050565b6000808314156200128a5760009050620012f3565b600082846200129a9190620016cb565b9050828482620012ab919062001693565b14620012ee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620012e590620015db565b60405180910390fd5b809150505b92915050565b60006200134383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250620013dc60201b60201c565b905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008083118290620013be576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620013b5919062001595565b60405180910390fd5b5060008385620013cf919062001693565b9050809150509392505050565b600083831115829062001427576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200141e919062001595565b60405180910390fd5b50600083856200143891906200172c565b9050809150509392505050565b8280546200145390620017a7565b90600052602060002090601f016020900481019282620014775760008555620014c3565b82601f106200149257805160ff1916838001178555620014c3565b82800160010185558215620014c3579182015b82811115620014c2578251825591602001919060010190620014a5565b5b509050620014d29190620014d6565b5090565b5b80821115620014f1576000816000905550600101620014d7565b5090565b600062001502826200161a565b6200150e818562001625565b93506200152081856020860162001771565b6200152b816200186a565b840191505092915050565b600062001545601b8362001625565b915062001552826200187b565b602082019050919050565b60006200156c60218362001625565b91506200157982620018a4565b604082019050919050565b6200158f8162001767565b82525050565b60006020820190508181036000830152620015b18184620014f5565b905092915050565b60006020820190508181036000830152620015d48162001536565b9050919050565b60006020820190508181036000830152620015f6816200155d565b9050919050565b600060208201905062001614600083018462001584565b92915050565b600081519050919050565b600082825260208201905092915050565b6000620016438262001767565b9150620016508362001767565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620016885762001687620017dd565b5b828201905092915050565b6000620016a08262001767565b9150620016ad8362001767565b925082620016c057620016bf6200180c565b5b828204905092915050565b6000620016d88262001767565b9150620016e58362001767565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620017215762001720620017dd565b5b828202905092915050565b6000620017398262001767565b9150620017468362001767565b9250828210156200175c576200175b620017dd565b5b828203905092915050565b6000819050919050565b60005b838110156200179157808201518184015260208101905062001774565b83811115620017a1576000848401525b50505050565b60006002820490506001821680620017c057607f821691505b60208210811415620017d757620017d66200183b565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b613efc80620019036000396000f3fe6080604052600436106101445760003560e01c8063700542ec116100b6578063d0d41fe11161006f578063d0d41fe114610467578063dd62ed3e14610490578063e8078d94146104cd578063ec10af9a146104e4578063f2fde38b1461050f578063fce0f928146105385761014b565b8063700542ec1461032f57806370a082311461036c5780638da5cb5b146103a957806395d89b41146103d4578063a9059cbb146103ff578063af74ff5b1461043c5761014b565b806323b872dd1161010857806323b872dd14610223578063290dc70c14610260578063313ce5671461028957806334052789146102b45780633908cfd2146102dd57806362caa704146103065761014b565b806301339c211461015057806306fdde0314610167578063095ea7b31461019257806318160ddd146101cf578063228e7a91146101fa5761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b50610165610561565b005b34801561017357600080fd5b5061017c610613565b60405161018991906136ec565b60405180910390f35b34801561019e57600080fd5b506101b960048036038101906101b49190613288565b6106a5565b6040516101c691906136d1565b60405180910390f35b3480156101db57600080fd5b506101e46106c3565b6040516101f1919061384e565b60405180910390f35b34801561020657600080fd5b50610221600480360381019061021c9190613182565b6106d5565b005b34801561022f57600080fd5b5061024a60048036038101906102459190613239565b6107c5565b60405161025791906136d1565b60405180910390f35b34801561026c57600080fd5b5061028760048036038101906102829190613182565b61089e565b005b34801561029557600080fd5b5061029e61098e565b6040516102ab91906138c3565b60405180910390f35b3480156102c057600080fd5b506102db60048036038101906102d691906132ed565b6109a5565b005b3480156102e957600080fd5b5061030460048036038101906102ff9190613182565b610ab0565b005b34801561031257600080fd5b5061032d60048036038101906103289190613182565b610ba0565b005b34801561033b57600080fd5b5061035660048036038101906103519190613182565b610c79565b60405161036391906136d1565b60405180910390f35b34801561037857600080fd5b50610393600480360381019061038e9190613182565b610ce0565b6040516103a0919061384e565b60405180910390f35b3480156103b557600080fd5b506103be610d29565b6040516103cb91906135cc565b60405180910390f35b3480156103e057600080fd5b506103e9610d52565b6040516103f691906136ec565b60405180910390f35b34801561040b57600080fd5b5061042660048036038101906104219190613288565b610de4565b60405161043391906136d1565b60405180910390f35b34801561044857600080fd5b50610451610e02565b60405161045e91906136d1565b60405180910390f35b34801561047357600080fd5b5061048e600480360381019061048991906131d4565b610efc565b005b34801561049c57600080fd5b506104b760048036038101906104b291906131fd565b610fae565b6040516104c4919061384e565b60405180910390f35b3480156104d957600080fd5b506104e2611035565b005b3480156104f057600080fd5b506104f96115a6565b60405161050691906136d1565b60405180910390f35b34801561051b57600080fd5b5061053660048036038101906105319190613182565b6116a4565b005b34801561054457600080fd5b5061055f600480360381019061055a91906131d4565b6117dd565b005b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166105a0611a7b565b73ffffffffffffffffffffffffffffffffffffffff16146105f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ed906137ae565b60405180910390fd5b6001600f601a6101000a81548160ff021916908315150217905550565b60606001805461062290613af4565b80601f016020809104026020016040519081016040528092919081815260200182805461064e90613af4565b801561069b5780601f106106705761010080835404028352916020019161069b565b820191906000526020600020905b81548152906001019060200180831161067e57829003601f168201915b5050505050905090565b60006106b96106b2611a7b565b8484611a83565b6001905092915050565b600069021e19e0c9bab2400000905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610714611a7b565b73ffffffffffffffffffffffffffffffffffffffff161461076a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610761906137ae565b60405180910390fd5b6001601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006107d2848484611c4e565b610893846107de611a7b565b61088e85604051806060016040528060288152602001613e9f60289139601360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610844611a7b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124f19092919063ffffffff16565b611a83565b600190509392505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108dd611a7b565b73ffffffffffffffffffffffffffffffffffffffff1614610933576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092a906137ae565b60405180910390fd5b6001601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600360009054906101000a900460ff16905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109e4611a7b565b73ffffffffffffffffffffffffffffffffffffffff1614610a3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a31906137ae565b60405180910390fd5b610a51633b9aca00826119b690919063ffffffff16565b600481905550610a6e633b9aca00826119b690919063ffffffff16565b6005819055507f1509687539547b95d9002029c1b24fbfdd2e99b914fabbbc629867062a4ff3cc600454604051610aa5919061384e565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610aef611a7b565b73ffffffffffffffffffffffffffffffffffffffff1614610b45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3c906137ae565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bdf611a7b565b73ffffffffffffffffffffffffffffffffffffffff1614610c35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2c906137ae565b60405180910390fd5b80601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009050601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610cd757600190505b80915050919050565b6000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060028054610d6190613af4565b80601f0160208091040260200160405190810160405280929190818152602001828054610d8d90613af4565b8015610dda5780601f10610daf57610100808354040283529160200191610dda565b820191906000526020600020905b815481529060010190602001808311610dbd57829003601f168201915b5050505050905090565b6000610df8610df1611a7b565b8484611c4e565b6001905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e44611a7b565b73ffffffffffffffffffffffffffffffffffffffff1614610e9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e91906137ae565b60405180910390fd5b6000600f60179054906101000a900460ff1615610ed5576000600f60176101000a81548160ff02191690831515021790555060009050610ef5565b6001600f60176101000a81548160ff021916908315150217905550600190505b8091505090565b73c69857409822c90bd249e55b397f63a79a878a5573ffffffffffffffffffffffffffffffffffffffff16610f2f611a7b565b73ffffffffffffffffffffffffffffffffffffffff1614610f4f57600080fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600f60186101000a81548160ff02191690831515021790555050565b6000601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611074611a7b565b73ffffffffffffffffffffffffffffffffffffffff16146110ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c1906137ae565b60405180910390fd5b600f60149054906101000a900460ff161561111a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111119061382e565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506111a630601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1669021e19e0c9bab2400000611a83565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561120e57600080fd5b505afa158015611222573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124691906131ab565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156112ca57600080fd5b505afa1580156112de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130291906131ab565b6040518363ffffffff1660e01b815260040161131f9291906135e7565b602060405180830381600087803b15801561133957600080fd5b505af115801561134d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137191906131ab565b600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306113fa30610ce0565b600080611405610d29565b426040518863ffffffff1660e01b815260040161142796959493929190613670565b6060604051808303818588803b15801561144057600080fd5b505af1158015611454573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906114799190613316565b5050506001600f60166101000a81548160ff0219169083151502179055506001600f60146101000a81548160ff021916908315150217905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611551929190613647565b602060405180830381600087803b15801561156b57600080fd5b505af115801561157f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a391906132c4565b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166115e8611a7b565b73ffffffffffffffffffffffffffffffffffffffff161461163e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611635906137ae565b60405180910390fd5b600f60199054906101000a900460ff1615611673576000600f60196101000a81548160ff02191690831515021790555061168f565b6001600f60196101000a81548160ff0219169083151502179055505b600f60199054906101000a900460ff16905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166116e3611a7b565b73ffffffffffffffffffffffffffffffffffffffff1614611739576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611730906137ae565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16611798611a7b565b73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661181c611a7b565b73ffffffffffffffffffffffffffffffffffffffff1614611872576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611869906137ae565b60405180910390fd5b80600760016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600061195083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612555565b905092915050565b60008082846119679190613933565b9050838110156119ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a39061372e565b60405180910390fd5b8091505092915050565b6000808314156119c95760009050611a2b565b600082846119d791906139ba565b90508284826119e69190613989565b14611a26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1d9061376e565b60405180910390fd5b809150505b92915050565b6000611a7383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506124f1565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611af3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aea9061380e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5a9061370e565b60405180910390fd5b80601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c41919061384e565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611cbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb5906137ee565b60405180910390fd5b60008111611d01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf8906137ce565b60405180910390fd5b600f60189054906101000a900460ff16611d50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d479061378e565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611df45750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611e4a5750601060003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611e5357600080fd5b6000611e5f84846125b8565b90506000611e8c8260ff16611e7e60648661190e90919063ffffffff16565b6119b690919063ffffffff16565b90506000611ea38285611a3190919063ffffffff16565b9050600f60179054906101000a900460ff16156121a857600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480611f635750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b8015611f7b5750600f60149054906101000a900460ff165b156121a757601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312bdf42386600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16326040518463ffffffff1660e01b815260040161200193929190613610565b602060405180830381600087803b15801561201b57600080fd5b505af115801561202f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061205391906132c4565b15612093576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208a9061374e565b60405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312bdf42387600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16326040518463ffffffff1660e01b815260040161211493929190613610565b602060405180830381600087803b15801561212e57600080fd5b505af1158015612142573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216691906132c4565b156121a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219d9061374e565b60405180910390fd5b5b5b6121b1856126bd565b156121cd576006546121c286610ce0565b106121cc57600080fd5b5b6121d78686612772565b1561221e57600f601a9054906101000a900460ff166121f557600080fd5b6121ff868661282e565b156122145760045484111561221357600080fd5b5b61221d86612939565b5b61227084601260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a3190919063ffffffff16565b601260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061230581601260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461195890919063ffffffff16565b601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061239a82601260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461195890919063ffffffff16565b601260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161243a919061384e565b60405180910390a3600f60179054906101000a900460ff16156124e957601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663155d0ed98787326040518463ffffffff1660e01b81526004016124b693929190613610565b600060405180830381600087803b1580156124d057600080fd5b505af11580156124e4573d6000803e3d6000fd5b505050505b505050505050565b6000838311158290612539576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253091906136ec565b60405180910390fd5b50600083856125489190613a14565b9050809150509392505050565b6000808311829061259c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259391906136ec565b60405180910390fd5b50600083856125ab9190613989565b9050809150509392505050565b600080601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061265c5750601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15905080612681576000600760006101000a81548160ff021916908360ff1602179055505b80156126a4576005600760006101000a81548160ff021916908360ff1602179055505b600760009054906101000a900460ff1691505092915050565b6000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561276b5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b9050919050565b60008060019050601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061281a5750601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561282457600090505b8091505092915050565b6000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156128db5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129315750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b600061294430610ce0565b905061294f8261296a565b156129665761295d816129f6565b612965612ec8565b5b5050565b6000600f60159054906101000a900460ff161580156129d75750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129ef5750600f60169054906101000a900460ff165b9050919050565b6001600f60156101000a81548160ff0219169083151502179055506000612a3a6003612a2c60048561190e90919063ffffffff16565b6119b690919063ffffffff16565b90506000829050600f60199054906101000a900460ff1615612a5a578190505b612ae8612a7883612a6a30610ce0565b611a3190919063ffffffff16565b60126000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461195890919063ffffffff16565b60126000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef612bd260048761190e90919063ffffffff16565b604051612bdf919061384e565b60405180910390a36000600267ffffffffffffffff811115612c2a577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015612c585781602001602082028036833780820191505090505b5090503081600081518110612c96577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612d3857600080fd5b505afa158015612d4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d7091906131ab565b81600181518110612daa577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612e1130601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611a83565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612e75959493929190613869565b600060405180830381600087803b158015612e8f57600080fd5b505af1158015612ea3573d6000803e3d6000fd5b505050505050506000600f60156101000a81548160ff02191690831515021790555050565b60004790506000612f08600a612efa612eeb60038661190e90919063ffffffff16565b8561195890919063ffffffff16565b61190e90919063ffffffff16565b90506000600f60199054906101000a900460ff1615612f9857612f91612f3860a58561190e90919063ffffffff16565b612f8384612f756002612f67612f5860038b61190e90919063ffffffff16565b8a61195890919063ffffffff16565b61190e90919063ffffffff16565b611a3190919063ffffffff16565b611a3190919063ffffffff16565b9050612fae565b612fab8284611a3190919063ffffffff16565b90505b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015613016573d6000803e3d6000fd5b50600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561307f573d6000803e3d6000fd5b50600f60199054906101000a900460ff16156130ff57600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156130fd573d6000803e3d6000fd5b505b505050565b60008135905061311381613e42565b92915050565b60008151905061312881613e42565b92915050565b60008135905061313d81613e59565b92915050565b60008151905061315281613e70565b92915050565b60008135905061316781613e87565b92915050565b60008151905061317c81613e87565b92915050565b60006020828403121561319457600080fd5b60006131a284828501613104565b91505092915050565b6000602082840312156131bd57600080fd5b60006131cb84828501613119565b91505092915050565b6000602082840312156131e657600080fd5b60006131f48482850161312e565b91505092915050565b6000806040838503121561321057600080fd5b600061321e85828601613104565b925050602061322f85828601613104565b9150509250929050565b60008060006060848603121561324e57600080fd5b600061325c86828701613104565b935050602061326d86828701613104565b925050604061327e86828701613158565b9150509250925092565b6000806040838503121561329b57600080fd5b60006132a985828601613104565b92505060206132ba85828601613158565b9150509250929050565b6000602082840312156132d657600080fd5b60006132e484828501613143565b91505092915050565b6000602082840312156132ff57600080fd5b600061330d84828501613158565b91505092915050565b60008060006060848603121561332b57600080fd5b60006133398682870161316d565b935050602061334a8682870161316d565b925050604061335b8682870161316d565b9150509250925092565b6000613371838361337d565b60208301905092915050565b61338681613a48565b82525050565b61339581613a48565b82525050565b60006133a6826138ee565b6133b08185613911565b93506133bb836138de565b8060005b838110156133ec5781516133d38882613365565b97506133de83613904565b9250506001810190506133bf565b5085935050505092915050565b61340281613a6c565b82525050565b61341181613aaf565b82525050565b6000613422826138f9565b61342c8185613922565b935061343c818560208601613ac1565b61344581613bb3565b840191505092915050565b600061345d602283613922565b915061346882613bc4565b604082019050919050565b6000613480601b83613922565b915061348b82613c13565b602082019050919050565b60006134a3602783613922565b91506134ae82613c3c565b604082019050919050565b60006134c6602183613922565b91506134d182613c8b565b604082019050919050565b60006134e9601883613922565b91506134f482613cda565b602082019050919050565b600061350c602083613922565b915061351782613d03565b602082019050919050565b600061352f602983613922565b915061353a82613d2c565b604082019050919050565b6000613552602583613922565b915061355d82613d7b565b604082019050919050565b6000613575602483613922565b915061358082613dca565b604082019050919050565b6000613598601783613922565b91506135a382613e19565b602082019050919050565b6135b781613a98565b82525050565b6135c681613aa2565b82525050565b60006020820190506135e1600083018461338c565b92915050565b60006040820190506135fc600083018561338c565b613609602083018461338c565b9392505050565b6000606082019050613625600083018661338c565b613632602083018561338c565b61363f604083018461338c565b949350505050565b600060408201905061365c600083018561338c565b61366960208301846135ae565b9392505050565b600060c082019050613685600083018961338c565b61369260208301886135ae565b61369f6040830187613408565b6136ac6060830186613408565b6136b9608083018561338c565b6136c660a08301846135ae565b979650505050505050565b60006020820190506136e660008301846133f9565b92915050565b600060208201905081810360008301526137068184613417565b905092915050565b6000602082019050818103600083015261372781613450565b9050919050565b6000602082019050818103600083015261374781613473565b9050919050565b6000602082019050818103600083015261376781613496565b9050919050565b60006020820190508181036000830152613787816134b9565b9050919050565b600060208201905081810360008301526137a7816134dc565b9050919050565b600060208201905081810360008301526137c7816134ff565b9050919050565b600060208201905081810360008301526137e781613522565b9050919050565b6000602082019050818103600083015261380781613545565b9050919050565b6000602082019050818103600083015261382781613568565b9050919050565b600060208201905081810360008301526138478161358b565b9050919050565b600060208201905061386360008301846135ae565b92915050565b600060a08201905061387e60008301886135ae565b61388b6020830187613408565b818103604083015261389d818661339b565b90506138ac606083018561338c565b6138b960808301846135ae565b9695505050505050565b60006020820190506138d860008301846135bd565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061393e82613a98565b915061394983613a98565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561397e5761397d613b26565b5b828201905092915050565b600061399482613a98565b915061399f83613a98565b9250826139af576139ae613b55565b5b828204905092915050565b60006139c582613a98565b91506139d083613a98565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613a0957613a08613b26565b5b828202905092915050565b6000613a1f82613a98565b9150613a2a83613a98565b925082821015613a3d57613a3c613b26565b5b828203905092915050565b6000613a5382613a78565b9050919050565b6000613a6582613a78565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000613aba82613a98565b9050919050565b60005b83811015613adf578082015181840152602081019050613ac4565b83811115613aee576000848401525b50505050565b60006002820490506001821680613b0c57607f821691505b60208210811415613b2057613b1f613b84565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f42656570206265657020626f6f702120596f752772652061207069656365206f60008201527f6620706f6f702e00000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f416c6c2070617274696573206d75737420636f6e73656e740000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b613e4b81613a48565b8114613e5657600080fd5b50565b613e6281613a5a565b8114613e6d57600080fd5b50565b613e7981613a6c565b8114613e8457600080fd5b50565b613e9081613a98565b8114613e9b57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220d9b471e60a857aa61d48865a0b67cc7a43bd9018f608e92708f126f0d1af3fb764736f6c63430008040033

Deployed Bytecode

0x6080604052600436106101445760003560e01c8063700542ec116100b6578063d0d41fe11161006f578063d0d41fe114610467578063dd62ed3e14610490578063e8078d94146104cd578063ec10af9a146104e4578063f2fde38b1461050f578063fce0f928146105385761014b565b8063700542ec1461032f57806370a082311461036c5780638da5cb5b146103a957806395d89b41146103d4578063a9059cbb146103ff578063af74ff5b1461043c5761014b565b806323b872dd1161010857806323b872dd14610223578063290dc70c14610260578063313ce5671461028957806334052789146102b45780633908cfd2146102dd57806362caa704146103065761014b565b806301339c211461015057806306fdde0314610167578063095ea7b31461019257806318160ddd146101cf578063228e7a91146101fa5761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b50610165610561565b005b34801561017357600080fd5b5061017c610613565b60405161018991906136ec565b60405180910390f35b34801561019e57600080fd5b506101b960048036038101906101b49190613288565b6106a5565b6040516101c691906136d1565b60405180910390f35b3480156101db57600080fd5b506101e46106c3565b6040516101f1919061384e565b60405180910390f35b34801561020657600080fd5b50610221600480360381019061021c9190613182565b6106d5565b005b34801561022f57600080fd5b5061024a60048036038101906102459190613239565b6107c5565b60405161025791906136d1565b60405180910390f35b34801561026c57600080fd5b5061028760048036038101906102829190613182565b61089e565b005b34801561029557600080fd5b5061029e61098e565b6040516102ab91906138c3565b60405180910390f35b3480156102c057600080fd5b506102db60048036038101906102d691906132ed565b6109a5565b005b3480156102e957600080fd5b5061030460048036038101906102ff9190613182565b610ab0565b005b34801561031257600080fd5b5061032d60048036038101906103289190613182565b610ba0565b005b34801561033b57600080fd5b5061035660048036038101906103519190613182565b610c79565b60405161036391906136d1565b60405180910390f35b34801561037857600080fd5b50610393600480360381019061038e9190613182565b610ce0565b6040516103a0919061384e565b60405180910390f35b3480156103b557600080fd5b506103be610d29565b6040516103cb91906135cc565b60405180910390f35b3480156103e057600080fd5b506103e9610d52565b6040516103f691906136ec565b60405180910390f35b34801561040b57600080fd5b5061042660048036038101906104219190613288565b610de4565b60405161043391906136d1565b60405180910390f35b34801561044857600080fd5b50610451610e02565b60405161045e91906136d1565b60405180910390f35b34801561047357600080fd5b5061048e600480360381019061048991906131d4565b610efc565b005b34801561049c57600080fd5b506104b760048036038101906104b291906131fd565b610fae565b6040516104c4919061384e565b60405180910390f35b3480156104d957600080fd5b506104e2611035565b005b3480156104f057600080fd5b506104f96115a6565b60405161050691906136d1565b60405180910390f35b34801561051b57600080fd5b5061053660048036038101906105319190613182565b6116a4565b005b34801561054457600080fd5b5061055f600480360381019061055a91906131d4565b6117dd565b005b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166105a0611a7b565b73ffffffffffffffffffffffffffffffffffffffff16146105f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ed906137ae565b60405180910390fd5b6001600f601a6101000a81548160ff021916908315150217905550565b60606001805461062290613af4565b80601f016020809104026020016040519081016040528092919081815260200182805461064e90613af4565b801561069b5780601f106106705761010080835404028352916020019161069b565b820191906000526020600020905b81548152906001019060200180831161067e57829003601f168201915b5050505050905090565b60006106b96106b2611a7b565b8484611a83565b6001905092915050565b600069021e19e0c9bab2400000905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610714611a7b565b73ffffffffffffffffffffffffffffffffffffffff161461076a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610761906137ae565b60405180910390fd5b6001601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006107d2848484611c4e565b610893846107de611a7b565b61088e85604051806060016040528060288152602001613e9f60289139601360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610844611a7b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124f19092919063ffffffff16565b611a83565b600190509392505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108dd611a7b565b73ffffffffffffffffffffffffffffffffffffffff1614610933576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092a906137ae565b60405180910390fd5b6001601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600360009054906101000a900460ff16905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109e4611a7b565b73ffffffffffffffffffffffffffffffffffffffff1614610a3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a31906137ae565b60405180910390fd5b610a51633b9aca00826119b690919063ffffffff16565b600481905550610a6e633b9aca00826119b690919063ffffffff16565b6005819055507f1509687539547b95d9002029c1b24fbfdd2e99b914fabbbc629867062a4ff3cc600454604051610aa5919061384e565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610aef611a7b565b73ffffffffffffffffffffffffffffffffffffffff1614610b45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3c906137ae565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bdf611a7b565b73ffffffffffffffffffffffffffffffffffffffff1614610c35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2c906137ae565b60405180910390fd5b80601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009050601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610cd757600190505b80915050919050565b6000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060028054610d6190613af4565b80601f0160208091040260200160405190810160405280929190818152602001828054610d8d90613af4565b8015610dda5780601f10610daf57610100808354040283529160200191610dda565b820191906000526020600020905b815481529060010190602001808311610dbd57829003601f168201915b5050505050905090565b6000610df8610df1611a7b565b8484611c4e565b6001905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e44611a7b565b73ffffffffffffffffffffffffffffffffffffffff1614610e9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e91906137ae565b60405180910390fd5b6000600f60179054906101000a900460ff1615610ed5576000600f60176101000a81548160ff02191690831515021790555060009050610ef5565b6001600f60176101000a81548160ff021916908315150217905550600190505b8091505090565b73c69857409822c90bd249e55b397f63a79a878a5573ffffffffffffffffffffffffffffffffffffffff16610f2f611a7b565b73ffffffffffffffffffffffffffffffffffffffff1614610f4f57600080fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600f60186101000a81548160ff02191690831515021790555050565b6000601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611074611a7b565b73ffffffffffffffffffffffffffffffffffffffff16146110ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c1906137ae565b60405180910390fd5b600f60149054906101000a900460ff161561111a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111119061382e565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506111a630601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1669021e19e0c9bab2400000611a83565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561120e57600080fd5b505afa158015611222573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124691906131ab565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156112ca57600080fd5b505afa1580156112de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130291906131ab565b6040518363ffffffff1660e01b815260040161131f9291906135e7565b602060405180830381600087803b15801561133957600080fd5b505af115801561134d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137191906131ab565b600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306113fa30610ce0565b600080611405610d29565b426040518863ffffffff1660e01b815260040161142796959493929190613670565b6060604051808303818588803b15801561144057600080fd5b505af1158015611454573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906114799190613316565b5050506001600f60166101000a81548160ff0219169083151502179055506001600f60146101000a81548160ff021916908315150217905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611551929190613647565b602060405180830381600087803b15801561156b57600080fd5b505af115801561157f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a391906132c4565b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166115e8611a7b565b73ffffffffffffffffffffffffffffffffffffffff161461163e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611635906137ae565b60405180910390fd5b600f60199054906101000a900460ff1615611673576000600f60196101000a81548160ff02191690831515021790555061168f565b6001600f60196101000a81548160ff0219169083151502179055505b600f60199054906101000a900460ff16905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166116e3611a7b565b73ffffffffffffffffffffffffffffffffffffffff1614611739576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611730906137ae565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16611798611a7b565b73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661181c611a7b565b73ffffffffffffffffffffffffffffffffffffffff1614611872576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611869906137ae565b60405180910390fd5b80600760016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600061195083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612555565b905092915050565b60008082846119679190613933565b9050838110156119ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a39061372e565b60405180910390fd5b8091505092915050565b6000808314156119c95760009050611a2b565b600082846119d791906139ba565b90508284826119e69190613989565b14611a26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1d9061376e565b60405180910390fd5b809150505b92915050565b6000611a7383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506124f1565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611af3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aea9061380e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5a9061370e565b60405180910390fd5b80601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c41919061384e565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611cbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb5906137ee565b60405180910390fd5b60008111611d01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf8906137ce565b60405180910390fd5b600f60189054906101000a900460ff16611d50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d479061378e565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611df45750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611e4a5750601060003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611e5357600080fd5b6000611e5f84846125b8565b90506000611e8c8260ff16611e7e60648661190e90919063ffffffff16565b6119b690919063ffffffff16565b90506000611ea38285611a3190919063ffffffff16565b9050600f60179054906101000a900460ff16156121a857600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480611f635750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b8015611f7b5750600f60149054906101000a900460ff165b156121a757601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312bdf42386600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16326040518463ffffffff1660e01b815260040161200193929190613610565b602060405180830381600087803b15801561201b57600080fd5b505af115801561202f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061205391906132c4565b15612093576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208a9061374e565b60405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312bdf42387600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16326040518463ffffffff1660e01b815260040161211493929190613610565b602060405180830381600087803b15801561212e57600080fd5b505af1158015612142573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216691906132c4565b156121a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219d9061374e565b60405180910390fd5b5b5b6121b1856126bd565b156121cd576006546121c286610ce0565b106121cc57600080fd5b5b6121d78686612772565b1561221e57600f601a9054906101000a900460ff166121f557600080fd5b6121ff868661282e565b156122145760045484111561221357600080fd5b5b61221d86612939565b5b61227084601260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a3190919063ffffffff16565b601260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061230581601260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461195890919063ffffffff16565b601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061239a82601260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461195890919063ffffffff16565b601260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161243a919061384e565b60405180910390a3600f60179054906101000a900460ff16156124e957601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663155d0ed98787326040518463ffffffff1660e01b81526004016124b693929190613610565b600060405180830381600087803b1580156124d057600080fd5b505af11580156124e4573d6000803e3d6000fd5b505050505b505050505050565b6000838311158290612539576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253091906136ec565b60405180910390fd5b50600083856125489190613a14565b9050809150509392505050565b6000808311829061259c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259391906136ec565b60405180910390fd5b50600083856125ab9190613989565b9050809150509392505050565b600080601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061265c5750601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15905080612681576000600760006101000a81548160ff021916908360ff1602179055505b80156126a4576005600760006101000a81548160ff021916908360ff1602179055505b600760009054906101000a900460ff1691505092915050565b6000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561276b5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b9050919050565b60008060019050601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061281a5750601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561282457600090505b8091505092915050565b6000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156128db5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129315750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b600061294430610ce0565b905061294f8261296a565b156129665761295d816129f6565b612965612ec8565b5b5050565b6000600f60159054906101000a900460ff161580156129d75750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129ef5750600f60169054906101000a900460ff165b9050919050565b6001600f60156101000a81548160ff0219169083151502179055506000612a3a6003612a2c60048561190e90919063ffffffff16565b6119b690919063ffffffff16565b90506000829050600f60199054906101000a900460ff1615612a5a578190505b612ae8612a7883612a6a30610ce0565b611a3190919063ffffffff16565b60126000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461195890919063ffffffff16565b60126000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef612bd260048761190e90919063ffffffff16565b604051612bdf919061384e565b60405180910390a36000600267ffffffffffffffff811115612c2a577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015612c585781602001602082028036833780820191505090505b5090503081600081518110612c96577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612d3857600080fd5b505afa158015612d4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d7091906131ab565b81600181518110612daa577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612e1130601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611a83565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612e75959493929190613869565b600060405180830381600087803b158015612e8f57600080fd5b505af1158015612ea3573d6000803e3d6000fd5b505050505050506000600f60156101000a81548160ff02191690831515021790555050565b60004790506000612f08600a612efa612eeb60038661190e90919063ffffffff16565b8561195890919063ffffffff16565b61190e90919063ffffffff16565b90506000600f60199054906101000a900460ff1615612f9857612f91612f3860a58561190e90919063ffffffff16565b612f8384612f756002612f67612f5860038b61190e90919063ffffffff16565b8a61195890919063ffffffff16565b61190e90919063ffffffff16565b611a3190919063ffffffff16565b611a3190919063ffffffff16565b9050612fae565b612fab8284611a3190919063ffffffff16565b90505b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015613016573d6000803e3d6000fd5b50600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561307f573d6000803e3d6000fd5b50600f60199054906101000a900460ff16156130ff57600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156130fd573d6000803e3d6000fd5b505b505050565b60008135905061311381613e42565b92915050565b60008151905061312881613e42565b92915050565b60008135905061313d81613e59565b92915050565b60008151905061315281613e70565b92915050565b60008135905061316781613e87565b92915050565b60008151905061317c81613e87565b92915050565b60006020828403121561319457600080fd5b60006131a284828501613104565b91505092915050565b6000602082840312156131bd57600080fd5b60006131cb84828501613119565b91505092915050565b6000602082840312156131e657600080fd5b60006131f48482850161312e565b91505092915050565b6000806040838503121561321057600080fd5b600061321e85828601613104565b925050602061322f85828601613104565b9150509250929050565b60008060006060848603121561324e57600080fd5b600061325c86828701613104565b935050602061326d86828701613104565b925050604061327e86828701613158565b9150509250925092565b6000806040838503121561329b57600080fd5b60006132a985828601613104565b92505060206132ba85828601613158565b9150509250929050565b6000602082840312156132d657600080fd5b60006132e484828501613143565b91505092915050565b6000602082840312156132ff57600080fd5b600061330d84828501613158565b91505092915050565b60008060006060848603121561332b57600080fd5b60006133398682870161316d565b935050602061334a8682870161316d565b925050604061335b8682870161316d565b9150509250925092565b6000613371838361337d565b60208301905092915050565b61338681613a48565b82525050565b61339581613a48565b82525050565b60006133a6826138ee565b6133b08185613911565b93506133bb836138de565b8060005b838110156133ec5781516133d38882613365565b97506133de83613904565b9250506001810190506133bf565b5085935050505092915050565b61340281613a6c565b82525050565b61341181613aaf565b82525050565b6000613422826138f9565b61342c8185613922565b935061343c818560208601613ac1565b61344581613bb3565b840191505092915050565b600061345d602283613922565b915061346882613bc4565b604082019050919050565b6000613480601b83613922565b915061348b82613c13565b602082019050919050565b60006134a3602783613922565b91506134ae82613c3c565b604082019050919050565b60006134c6602183613922565b91506134d182613c8b565b604082019050919050565b60006134e9601883613922565b91506134f482613cda565b602082019050919050565b600061350c602083613922565b915061351782613d03565b602082019050919050565b600061352f602983613922565b915061353a82613d2c565b604082019050919050565b6000613552602583613922565b915061355d82613d7b565b604082019050919050565b6000613575602483613922565b915061358082613dca565b604082019050919050565b6000613598601783613922565b91506135a382613e19565b602082019050919050565b6135b781613a98565b82525050565b6135c681613aa2565b82525050565b60006020820190506135e1600083018461338c565b92915050565b60006040820190506135fc600083018561338c565b613609602083018461338c565b9392505050565b6000606082019050613625600083018661338c565b613632602083018561338c565b61363f604083018461338c565b949350505050565b600060408201905061365c600083018561338c565b61366960208301846135ae565b9392505050565b600060c082019050613685600083018961338c565b61369260208301886135ae565b61369f6040830187613408565b6136ac6060830186613408565b6136b9608083018561338c565b6136c660a08301846135ae565b979650505050505050565b60006020820190506136e660008301846133f9565b92915050565b600060208201905081810360008301526137068184613417565b905092915050565b6000602082019050818103600083015261372781613450565b9050919050565b6000602082019050818103600083015261374781613473565b9050919050565b6000602082019050818103600083015261376781613496565b9050919050565b60006020820190508181036000830152613787816134b9565b9050919050565b600060208201905081810360008301526137a7816134dc565b9050919050565b600060208201905081810360008301526137c7816134ff565b9050919050565b600060208201905081810360008301526137e781613522565b9050919050565b6000602082019050818103600083015261380781613545565b9050919050565b6000602082019050818103600083015261382781613568565b9050919050565b600060208201905081810360008301526138478161358b565b9050919050565b600060208201905061386360008301846135ae565b92915050565b600060a08201905061387e60008301886135ae565b61388b6020830187613408565b818103604083015261389d818661339b565b90506138ac606083018561338c565b6138b960808301846135ae565b9695505050505050565b60006020820190506138d860008301846135bd565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061393e82613a98565b915061394983613a98565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561397e5761397d613b26565b5b828201905092915050565b600061399482613a98565b915061399f83613a98565b9250826139af576139ae613b55565b5b828204905092915050565b60006139c582613a98565b91506139d083613a98565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613a0957613a08613b26565b5b828202905092915050565b6000613a1f82613a98565b9150613a2a83613a98565b925082821015613a3d57613a3c613b26565b5b828203905092915050565b6000613a5382613a78565b9050919050565b6000613a6582613a78565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000613aba82613a98565b9050919050565b60005b83811015613adf578082015181840152602081019050613ac4565b83811115613aee576000848401525b50505050565b60006002820490506001821680613b0c57607f821691505b60208210811415613b2057613b1f613b84565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f42656570206265657020626f6f702120596f752772652061207069656365206f60008201527f6620706f6f702e00000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f416c6c2070617274696573206d75737420636f6e73656e740000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b613e4b81613a48565b8114613e5657600080fd5b50565b613e6281613a5a565b8114613e6d57600080fd5b50565b613e7981613a6c565b8114613e8457600080fd5b50565b613e9081613a98565b8114613e9b57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220d9b471e60a857aa61d48865a0b67cc7a43bd9018f608e92708f126f0d1af3fb764736f6c63430008040033

Deployed Bytecode Sourcemap

4889:13874:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17127:78;;;;;;;;;;;;;:::i;:::-;;8817:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9750:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9177:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17217:90;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9923:323;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17636:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9005:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17422:206;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17319:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18316:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16126:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9285:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2927:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8909:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9415:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18440:320;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17966:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9594:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16416:703;;;;;;;;;;;;;:::i;:::-;;18113:191;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3019:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17783:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17127:78;3250:7;;;;;;;;;;3234:23;;:12;:10;:12::i;:::-;:23;;;3226:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17193:4:::1;17177:13;;:20;;;;;;;;;;;;;;;;;;17127:78::o:0;8817:84::-;8854:13;8887:6;8880:13;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8817:84;:::o;9750:165::-;9827:4;9844:41;9853:12;:10;:12::i;:::-;9867:8;9877:7;9844:8;:41::i;:::-;9903:4;9896:11;;9750:165;;;;:::o;9177:100::-;9230:7;5022:22;9250:19;;9177:100;:::o;17217:90::-;3250:7;;;;;;;;;;3234:23;;:12;:10;:12::i;:::-;:23;;;3226:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17295:4:::1;17280:8;:12;17289:2;17280:12;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;17217:90:::0;:::o;9923:323::-;10024:4;10041:39;10051:7;10060:10;10072:7;10041:9;:39::i;:::-;10091:125;10100:7;10109:12;:10;:12::i;:::-;10123:92;10163:7;10123:92;;;;;;;;;;;;;;;;;:12;:21;10136:7;10123:21;;;;;;;;;;;;;;;:35;10145:12;:10;:12::i;:::-;10123:35;;;;;;;;;;;;;;;;:39;;:92;;;;;:::i;:::-;10091:8;:125::i;:::-;10234:4;10227:11;;9923:323;;;;;:::o;17636:135::-;3250:7;;;;;;;;;;3234:23;;:12;:10;:12::i;:::-;:23;;;3226:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17751:4:::1;17719:19;:29;17739:8;17719:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;17636:135:::0;:::o;9005:84::-;9046:5;9071:10;;;;;;;;;;;9064:17;;9005:84;:::o;17422:206::-;3250:7;;;;;;;;;;3234:23;;:12;:10;:12::i;:::-;:23;;;3226:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17507:18:::1;17519:5;17507:7;:11;;:18;;;;:::i;:::-;17495:9;:30;;;;17552:18;17564:5;17552:7;:11;;:18;;;;:::i;:::-;17536:13;:34;;;;17586:24;17600:9;;17586:24;;;;;;:::i;:::-;;;;;;;;17422:206:::0;:::o;17319:91::-;3250:7;;;;;;;;;;3234:23;;:12;:10;:12::i;:::-;:23;;;3226:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17397:5:::1;17382:8;:12;17391:2;17382:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;17319:91:::0;:::o;18316:112::-;3250:7;;;;;;;;;;3234:23;;:12;:10;:12::i;:::-;:23;;;3226:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18411:8:::1;18390:7;;:30;;;;;;;;;;;;;;;;;;18316:112:::0;:::o;16126:199::-;16190:4;16208:13;16224:5;16208:21;;16243:8;:18;16252:8;16243:18;;;;;;;;;;;;;;;;;;;;;;;;;16240:51;;;16287:4;16276:15;;16240:51;16309:8;16302:15;;;16126:199;;;:::o;9285:122::-;9352:7;9379:10;:20;9390:8;9379:20;;;;;;;;;;;;;;;;9372:27;;9285:122;;;:::o;2927:80::-;2965:7;2992;;;;;;;;;;;2985:14;;2927:80;:::o;8909:88::-;8948:13;8981:8;8974:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8909:88;:::o;9415:171::-;9495:4;9512:44;9522:12;:10;:12::i;:::-;9536:10;9548:7;9512:9;:44::i;:::-;9574:4;9567:11;;9415:171;;;;:::o;18440:320::-;18495:4;3250:7;;;;;;;;;;;3234:23;;:12;:10;:12::i;:::-;:23;;;3226:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18511:15:::1;18540:9;;;;;;;;;;;18537:179;;;18577:5;18565:9;;:17;;;;;;;;;;;;;;;;;;18610:5;18597:18;;18537:179;;;18668:4;18656:9;;:16;;;;;;;;;;;;;;;;;;18700:4;18687:17;;18537:179;18733:10;18726:17;;;18440:320:::0;:::o;17966:139::-;6903:42;6887:58;;:12;:10;:12::i;:::-;:58;;;6879:67;;;;;;18058:8:::1;18043:12;;:23;;;;;;;;;;;;;;;;;;18093:4;18077:13;;:20;;;;;;;;;;;;;;;;;;17966:139:::0;:::o;9594:148::-;9677:7;9704:12;:20;9717:6;9704:20;;;;;;;;;;;;;;;:30;9725:8;9704:30;;;;;;;;;;;;;;;;9697:37;;9594:148;;;;:::o;16416:703::-;3250:7;;;;;;;;;;3234:23;;:12;:10;:12::i;:::-;:23;;;3226:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16481:15:::1;;;;;;;;;;;16480:16;16472:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;16573:42;16534:17;;:82;;;;;;;;;;;;;;;;;;16627:65;16644:4;16659:17;;;;;;;;;;;5022:22;16627:8;:65::i;:::-;16739:17;;;;;;;;;;;:25;;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16721:57;;;16787:4;16794:17;;;;;;;;;;;:22;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16721:98;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16703:15;;:116;;;;;;;;;;;;;;;;;;16830:17;;;;;;;;;;;:33;;;16871:21;16902:4;16908:24;16926:4;16908:9;:24::i;:::-;16933:1;16935::::0;16937:7:::1;:5;:7::i;:::-;16945:15;16830:131;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;16988:4;16972:13;;:20;;;;;;;;;;;;;;;;;;17021:4;17003:15;;:22;;;;;;;;;;;;;;;;;;17043:15;;;;;;;;;;;17036:31;;;17076:17;;;;;;;;;;;17096:14;17036:75;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16416:703::o:0;18113:191::-;18166:4;3250:7;;;;;;;;;;;3234:23;;:12;:10;:12::i;:::-;:23;;;3226:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18186:8:::1;;;;;;;;;;;18183:87;;;18220:5;18209:8;;:16;;;;;;;;;;;;;;;;;;18183:87;;;18266:4;18255:8;;:15;;;;;;;;;;;;;;;;;;18183:87;18288:8;;;;;;;;;;;18281:15;;18113:191:::0;:::o;3019:167::-;3250:7;;;;;;;;;;3234:23;;:12;:10;:12::i;:::-;:23;;;3226:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3110:8:::1;3100:7;::::0;:18:::1;;;;;;;;;;;;;;;;;;3169:8;3134:44;;3155:12;:10;:12::i;:::-;3134:44;;;;;;;;;;;;3019:167:::0;:::o;17783:171::-;3250:7;;;;;;;;;;3234:23;;:12;:10;:12::i;:::-;:23;;;3226:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17887:8:::1;17868:16;;:27;;;;;;;;;;;;;;;;;;17942:4;17910:19;:29;17930:8;17910:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;17783:171:::0;:::o;2268:132::-;2326:7;2353:39;2357:1;2360;2353:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2346:46;;2268:132;;;;:::o;1485:179::-;1543:7;1563:9;1579:1;1575;:5;;;;:::i;:::-;1563:17;;1604:1;1599;:6;;1591:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1655:1;1648:8;;;1485:179;;;;:::o;2014:246::-;2072:7;2101:1;2096;:6;2092:47;;;2126:1;2119:8;;;;2092:47;2149:9;2165:1;2161;:5;;;;:::i;:::-;2149:17;;2194:1;2189;2185;:5;;;;:::i;:::-;:10;2177:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2251:1;2244:8;;;2014:246;;;;;:::o;1672:136::-;1730:7;1757:43;1761:1;1764;1757:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1750:50;;1672:136;;;;:::o;679:98::-;732:7;759:10;752:17;;679:98;:::o;11283:347::-;11397:1;11379:20;;:6;:20;;;;11371:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;11479:1;11459:22;;:8;:22;;;;11451:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;11564:7;11531:12;:20;11544:6;11531:20;;;;;;;;;;;;;;;:30;11552:8;11531:30;;;;;;;;;;;;;;;:40;;;;11604:8;11587:35;;11596:6;11587:35;;;11614:7;11587:35;;;;;;:::i;:::-;;;;;;;;11283:347;;;:::o;11638:2085::-;11757:1;11738:21;;:7;:21;;;;11730:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;11830:1;11820:7;:11;11812:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;11896:13;;;;;;;;;;;11888:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;11958:8;:17;11967:7;11958:17;;;;;;;;;;;;;;;;;;;;;;;;;11957:18;:43;;;;;11980:8;:20;11989:10;11980:20;;;;;;;;;;;;;;;;;;;;;;;;;11979:21;11957:43;:67;;;;;12005:8;:19;12014:9;12005:19;;;;;;;;;;;;;;;;;;;;;;;;;12004:20;11957:67;11949:76;;;;;;12056:10;12069:28;12077:7;12086:10;12069:7;:28::i;:::-;12056:41;;12108:18;12129:26;12150:4;12129:26;;:16;12141:3;12129:7;:11;;:16;;;;:::i;:::-;:20;;:26;;;;:::i;:::-;12108:47;;12166:18;12187:23;12199:10;12187:7;:11;;:23;;;;:::i;:::-;12166:44;;12234:9;;;;;;;;;;;12231:399;;;12278:15;;;;;;;;;;;12264:29;;:10;:29;;;:59;;;;12308:15;;;;;;;;;;;12297:26;;:7;:26;;;12264:59;12263:80;;;;;12328:15;;;;;;;;;;;12263:80;12260:359;;;12372:7;;;;;;;;;;;:19;;;12392:10;12404:15;;;;;;;;;;;12421:9;12372:59;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12371:60;12363:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;12503:7;;;;;;;;;;;:19;;;12523:7;12532:15;;;;;;;;;;;12549:9;12503:56;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12502:57;12494:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;12260:359;12231:399;12657:25;12671:10;12657:13;:25::i;:::-;12654:89;;;12729:13;;12705:21;12715:10;12705:9;:21::i;:::-;:37;12697:46;;;;;;12654:89;12865:26;12871:7;12880:10;12865:5;:26::i;:::-;12861:281;;;12916:13;;;;;;;;;;;12908:22;;;;;;12949:34;12963:7;12972:10;12949:13;:34::i;:::-;12945:87;;;13022:9;;13011:7;:20;;13003:29;;;;;;12945:87;13047:13;13052:7;13047:4;:13::i;:::-;12861:281;13184:32;13208:7;13184:10;:19;13195:7;13184:19;;;;;;;;;;;;;;;;:23;;:32;;;;:::i;:::-;13162:10;:19;13173:7;13162:19;;;;;;;;;;;;;;;:54;;;;13252:38;13279:10;13252;:22;13263:10;13252:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;13227:10;:22;13238:10;13227:22;;;;;;;;;;;;;;;:63;;;;13329:41;13359:10;13329;:25;13348:4;13329:25;;;;;;;;;;;;;;;;:29;;:41;;;;:::i;:::-;13301:10;:25;13320:4;13301:25;;;;;;;;;;;;;;;:69;;;;13414:10;13396:41;;13405:7;13396:41;;;13426:10;13396:41;;;;;;:::i;:::-;;;;;;;;13461:9;;;;;;;;;;;13458:185;;;13590:7;;;;;;;;;;;:21;;;13612:7;13621:10;13633:9;13590:53;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13458:185;11638:2085;;;;;;:::o;1816:190::-;1902:7;1935:1;1930;:6;;1938:12;1922:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1962:9;1978:1;1974;:5;;;;:::i;:::-;1962:17;;1997:1;1990:8;;;1816:190;;;;;:::o;2408:189::-;2494:7;2526:1;2522;:5;2529:12;2514:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2553:9;2569:1;2565;:5;;;;:::i;:::-;2553:17;;2588:1;2581:8;;;2408:189;;;;;:::o;13732:302::-;13802:5;13819:13;13837:19;:28;13857:7;13837:28;;;;;;;;;;;;;;;;;;;;;;;;;:63;;;;13869:19;:31;13889:10;13869:31;;;;;;;;;;;;;;;;;;;;;;;;;13837:63;13835:66;13819:82;;13916:8;13912:39;;13950:1;13939:8;;:12;;;;;;;;;;;;;;;;;;13912:39;13965:8;13962:38;;;13999:1;13988:8;;:12;;;;;;;;;;;;;;;;;;13962:38;14018:8;;;;;;;;;;;14011:15;;;13732:302;;;;:::o;11106:169::-;11170:4;11208:15;;;;;;;;;;;11194:29;;:10;:29;;;;:73;;;;;11249:17;;;;;;;;;;;11227:40;;:10;:40;;;;11194:73;11187:80;;11106:169;;;:::o;10486:258::-;10559:4;10576:15;10594:4;10576:22;;10612:19;:28;10632:7;10612:28;;;;;;;;;;;;;;;;;;;;;;;;;:63;;;;10644:19;:31;10664:10;10644:31;;;;;;;;;;;;;;;;;;;;;;;;;10612:63;10609:99;;;10703:5;10690:18;;10609:99;10726:10;10719:17;;;10486:258;;;;:::o;10879:219::-;10960:4;10995:15;;;;;;;;;;;10984:26;;:7;:26;;;:70;;;;;11036:17;;;;;;;;;;;11014:40;;:10;:40;;;;10984:70;:106;;;;;11059:19;:31;11079:10;11059:31;;;;;;;;;;;;;;;;;;;;;;;;;11058:32;10984:106;10977:113;;10879:219;;;;:::o;14042:230::-;14092:21;14116:24;14134:4;14116:9;:24::i;:::-;14092:48;;14155:20;14167:7;14155:11;:20::i;:::-;14151:114;;;14192:32;14210:13;14192:17;:32::i;:::-;14239:14;:12;:14::i;:::-;14151:114;14042:230;;:::o;10331:147::-;10390:4;10415:8;;;;;;;;;;;10414:9;:39;;;;;10438:15;;;;;;;;;;;10427:26;;:7;:26;;;;10414:39;:56;;;;;10457:13;;;;;;;;;;;10414:56;10407:63;;10331:147;;;:::o;14280:1086::-;6794:4;6783:8;;:15;;;;;;;;;;;;;;;;;;14366:18:::1;14387:21;14406:1;14387:14;14399:1;14387:7;:11;;:14;;;;:::i;:::-;:18;;:21;;;;:::i;:::-;14366:42;;14420:23;14446:7;14420:33;;14489:8;;;;;;;;;;;14486:54;;;14530:10;14512:28;;14486:54;14581:69;14609:40;14638:10;14609:24;14627:4;14609:9;:24::i;:::-;:28;;:40;;;;:::i;:::-;14581:10;:23;14592:11;;;;;;;;;;;14581:23;;;;;;;;;;;;;;;;:27;;:69;;;;:::i;:::-;14555:10;:23;14566:11;;;;;;;;;;;14555:23;;;;;;;;;;;;;;;:95;;;;14694:11;;;;;;;;;;;14670:52;;14687:4;14670:52;;;14707:14;14719:1;14707:7;:11;;:14;;;;:::i;:::-;14670:52;;;;;;:::i;:::-;;;;;;;;14756:22;14795:1;14781:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14756:41;;14873:4;14854:5;14860:1;14854:8;;;;;;;;;;;;;;;;;;;;;:24;;;;;;;;;::::0;::::1;14962:17;;;;;;;;;;;:22;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14951:5;14957:1;14951:8;;;;;;;;;;;;;;;;;;;;;:35;;;;;;;;;::::0;::::1;15049:68;15066:4;15081:17;;;;;;;;;;;15101:15;15049:8;:68::i;:::-;15155:17;;;;;;;;;;;:68;;;15238:15;15268:1;15284:5;15312:4;15332:15;15155:203;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;6809:1;;;6832:5:::0;6821:8;;:16;;;;;;;;;;;;;;;;;;14280:1086;:::o;15378:649::-;15435:19;15457:21;15435:43;;15489:18;15510:43;15550:2;15510:35;15526:18;15542:1;15526:11;:15;;:18;;;;:::i;:::-;15510:11;:15;;:35;;;;:::i;:::-;:39;;:43;;;;:::i;:::-;15489:64;;15564:22;15610:8;;;;;;;;;;;15607:200;;;15650:84;15713:20;15729:3;15713:11;:15;;:20;;;;:::i;:::-;15650:58;15697:10;15650:42;15690:1;15650:35;15666:18;15682:1;15666:11;:15;;:18;;;;:::i;:::-;15650:11;:15;;:35;;;;:::i;:::-;:39;;:42;;;;:::i;:::-;:46;;:58;;;;:::i;:::-;:62;;:84;;;;:::i;:::-;15633:101;;15607:200;;;15780:27;15796:10;15780:11;:15;;:27;;;;:::i;:::-;15763:44;;15607:200;15832:12;;;;;;;;;;;:21;;:33;15854:10;15832:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15876:16;;;;;;;;;;;:25;;:41;15902:14;15876:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15941:8;;;;;;;;;;;15938:82;;;15965:11;;;;;;;;;;;:20;;:43;15986:21;15965:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15938:82;15378:649;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:155::-;355:5;393:6;380:20;371:29;;409:41;444:5;409:41;:::i;:::-;361:95;;;;:::o;462:137::-;516:5;547:6;541:13;532:22;;563:30;587:5;563:30;:::i;:::-;522:77;;;;:::o;605:139::-;651:5;689:6;676:20;667:29;;705:33;732:5;705:33;:::i;:::-;657:87;;;;:::o;750:143::-;807:5;838:6;832:13;823:22;;854:33;881:5;854:33;:::i;:::-;813:80;;;;:::o;899:262::-;958:6;1007:2;995:9;986:7;982:23;978:32;975:2;;;1023:1;1020;1013:12;975:2;1066:1;1091:53;1136:7;1127:6;1116:9;1112:22;1091:53;:::i;:::-;1081:63;;1037:117;965:196;;;;:::o;1167:284::-;1237:6;1286:2;1274:9;1265:7;1261:23;1257:32;1254:2;;;1302:1;1299;1292:12;1254:2;1345:1;1370:64;1426:7;1417:6;1406:9;1402:22;1370:64;:::i;:::-;1360:74;;1316:128;1244:207;;;;:::o;1457:278::-;1524:6;1573:2;1561:9;1552:7;1548:23;1544:32;1541:2;;;1589:1;1586;1579:12;1541:2;1632:1;1657:61;1710:7;1701:6;1690:9;1686:22;1657:61;:::i;:::-;1647:71;;1603:125;1531:204;;;;:::o;1741:407::-;1809:6;1817;1866:2;1854:9;1845:7;1841:23;1837:32;1834:2;;;1882:1;1879;1872:12;1834:2;1925:1;1950:53;1995:7;1986:6;1975:9;1971:22;1950:53;:::i;:::-;1940:63;;1896:117;2052:2;2078:53;2123:7;2114:6;2103:9;2099:22;2078:53;:::i;:::-;2068:63;;2023:118;1824:324;;;;;:::o;2154:552::-;2231:6;2239;2247;2296:2;2284:9;2275:7;2271:23;2267:32;2264:2;;;2312:1;2309;2302:12;2264:2;2355:1;2380:53;2425:7;2416:6;2405:9;2401:22;2380:53;:::i;:::-;2370:63;;2326:117;2482:2;2508:53;2553:7;2544:6;2533:9;2529:22;2508:53;:::i;:::-;2498:63;;2453:118;2610:2;2636:53;2681:7;2672:6;2661:9;2657:22;2636:53;:::i;:::-;2626:63;;2581:118;2254:452;;;;;:::o;2712:407::-;2780:6;2788;2837:2;2825:9;2816:7;2812:23;2808:32;2805:2;;;2853:1;2850;2843:12;2805:2;2896:1;2921:53;2966:7;2957:6;2946:9;2942:22;2921:53;:::i;:::-;2911:63;;2867:117;3023:2;3049:53;3094:7;3085:6;3074:9;3070:22;3049:53;:::i;:::-;3039:63;;2994:118;2795:324;;;;;:::o;3125:278::-;3192:6;3241:2;3229:9;3220:7;3216:23;3212:32;3209:2;;;3257:1;3254;3247:12;3209:2;3300:1;3325:61;3378:7;3369:6;3358:9;3354:22;3325:61;:::i;:::-;3315:71;;3271:125;3199:204;;;;:::o;3409:262::-;3468:6;3517:2;3505:9;3496:7;3492:23;3488:32;3485:2;;;3533:1;3530;3523:12;3485:2;3576:1;3601:53;3646:7;3637:6;3626:9;3622:22;3601:53;:::i;:::-;3591:63;;3547:117;3475:196;;;;:::o;3677:596::-;3765:6;3773;3781;3830:2;3818:9;3809:7;3805:23;3801:32;3798:2;;;3846:1;3843;3836:12;3798:2;3889:1;3914:64;3970:7;3961:6;3950:9;3946:22;3914:64;:::i;:::-;3904:74;;3860:128;4027:2;4053:64;4109:7;4100:6;4089:9;4085:22;4053:64;:::i;:::-;4043:74;;3998:129;4166:2;4192:64;4248:7;4239:6;4228:9;4224:22;4192:64;:::i;:::-;4182:74;;4137:129;3788:485;;;;;:::o;4279:179::-;4348:10;4369:46;4411:3;4403:6;4369:46;:::i;:::-;4447:4;4442:3;4438:14;4424:28;;4359:99;;;;:::o;4464:108::-;4541:24;4559:5;4541:24;:::i;:::-;4536:3;4529:37;4519:53;;:::o;4578:118::-;4665:24;4683:5;4665:24;:::i;:::-;4660:3;4653:37;4643:53;;:::o;4732:732::-;4851:3;4880:54;4928:5;4880:54;:::i;:::-;4950:86;5029:6;5024:3;4950:86;:::i;:::-;4943:93;;5060:56;5110:5;5060:56;:::i;:::-;5139:7;5170:1;5155:284;5180:6;5177:1;5174:13;5155:284;;;5256:6;5250:13;5283:63;5342:3;5327:13;5283:63;:::i;:::-;5276:70;;5369:60;5422:6;5369:60;:::i;:::-;5359:70;;5215:224;5202:1;5199;5195:9;5190:14;;5155:284;;;5159:14;5455:3;5448:10;;4856:608;;;;;;;:::o;5470:109::-;5551:21;5566:5;5551:21;:::i;:::-;5546:3;5539:34;5529:50;;:::o;5585:147::-;5680:45;5719:5;5680:45;:::i;:::-;5675:3;5668:58;5658:74;;:::o;5738:364::-;5826:3;5854:39;5887:5;5854:39;:::i;:::-;5909:71;5973:6;5968:3;5909:71;:::i;:::-;5902:78;;5989:52;6034:6;6029:3;6022:4;6015:5;6011:16;5989:52;:::i;:::-;6066:29;6088:6;6066:29;:::i;:::-;6061:3;6057:39;6050:46;;5830:272;;;;;:::o;6108:366::-;6250:3;6271:67;6335:2;6330:3;6271:67;:::i;:::-;6264:74;;6347:93;6436:3;6347:93;:::i;:::-;6465:2;6460:3;6456:12;6449:19;;6254:220;;;:::o;6480:366::-;6622:3;6643:67;6707:2;6702:3;6643:67;:::i;:::-;6636:74;;6719:93;6808:3;6719:93;:::i;:::-;6837:2;6832:3;6828:12;6821:19;;6626:220;;;:::o;6852:366::-;6994:3;7015:67;7079:2;7074:3;7015:67;:::i;:::-;7008:74;;7091:93;7180:3;7091:93;:::i;:::-;7209:2;7204:3;7200:12;7193:19;;6998:220;;;:::o;7224:366::-;7366:3;7387:67;7451:2;7446:3;7387:67;:::i;:::-;7380:74;;7463:93;7552:3;7463:93;:::i;:::-;7581:2;7576:3;7572:12;7565:19;;7370:220;;;:::o;7596:366::-;7738:3;7759:67;7823:2;7818:3;7759:67;:::i;:::-;7752:74;;7835:93;7924:3;7835:93;:::i;:::-;7953:2;7948:3;7944:12;7937:19;;7742:220;;;:::o;7968:366::-;8110:3;8131:67;8195:2;8190:3;8131:67;:::i;:::-;8124:74;;8207:93;8296:3;8207:93;:::i;:::-;8325:2;8320:3;8316:12;8309:19;;8114:220;;;:::o;8340:366::-;8482:3;8503:67;8567:2;8562:3;8503:67;:::i;:::-;8496:74;;8579:93;8668:3;8579:93;:::i;:::-;8697:2;8692:3;8688:12;8681:19;;8486:220;;;:::o;8712:366::-;8854:3;8875:67;8939:2;8934:3;8875:67;:::i;:::-;8868:74;;8951:93;9040:3;8951:93;:::i;:::-;9069:2;9064:3;9060:12;9053:19;;8858:220;;;:::o;9084:366::-;9226:3;9247:67;9311:2;9306:3;9247:67;:::i;:::-;9240:74;;9323:93;9412:3;9323:93;:::i;:::-;9441:2;9436:3;9432:12;9425:19;;9230:220;;;:::o;9456:366::-;9598:3;9619:67;9683:2;9678:3;9619:67;:::i;:::-;9612:74;;9695:93;9784:3;9695:93;:::i;:::-;9813:2;9808:3;9804:12;9797:19;;9602:220;;;:::o;9828:118::-;9915:24;9933:5;9915:24;:::i;:::-;9910:3;9903:37;9893:53;;:::o;9952:112::-;10035:22;10051:5;10035:22;:::i;:::-;10030:3;10023:35;10013:51;;:::o;10070:222::-;10163:4;10201:2;10190:9;10186:18;10178:26;;10214:71;10282:1;10271:9;10267:17;10258:6;10214:71;:::i;:::-;10168:124;;;;:::o;10298:332::-;10419:4;10457:2;10446:9;10442:18;10434:26;;10470:71;10538:1;10527:9;10523:17;10514:6;10470:71;:::i;:::-;10551:72;10619:2;10608:9;10604:18;10595:6;10551:72;:::i;:::-;10424:206;;;;;:::o;10636:442::-;10785:4;10823:2;10812:9;10808:18;10800:26;;10836:71;10904:1;10893:9;10889:17;10880:6;10836:71;:::i;:::-;10917:72;10985:2;10974:9;10970:18;10961:6;10917:72;:::i;:::-;10999;11067:2;11056:9;11052:18;11043:6;10999:72;:::i;:::-;10790:288;;;;;;:::o;11084:332::-;11205:4;11243:2;11232:9;11228:18;11220:26;;11256:71;11324:1;11313:9;11309:17;11300:6;11256:71;:::i;:::-;11337:72;11405:2;11394:9;11390:18;11381:6;11337:72;:::i;:::-;11210:206;;;;;:::o;11422:807::-;11671:4;11709:3;11698:9;11694:19;11686:27;;11723:71;11791:1;11780:9;11776:17;11767:6;11723:71;:::i;:::-;11804:72;11872:2;11861:9;11857:18;11848:6;11804:72;:::i;:::-;11886:80;11962:2;11951:9;11947:18;11938:6;11886:80;:::i;:::-;11976;12052:2;12041:9;12037:18;12028:6;11976:80;:::i;:::-;12066:73;12134:3;12123:9;12119:19;12110:6;12066:73;:::i;:::-;12149;12217:3;12206:9;12202:19;12193:6;12149:73;:::i;:::-;11676:553;;;;;;;;;:::o;12235:210::-;12322:4;12360:2;12349:9;12345:18;12337:26;;12373:65;12435:1;12424:9;12420:17;12411:6;12373:65;:::i;:::-;12327:118;;;;:::o;12451:313::-;12564:4;12602:2;12591:9;12587:18;12579:26;;12651:9;12645:4;12641:20;12637:1;12626:9;12622:17;12615:47;12679:78;12752:4;12743:6;12679:78;:::i;:::-;12671:86;;12569:195;;;;:::o;12770:419::-;12936:4;12974:2;12963:9;12959:18;12951:26;;13023:9;13017:4;13013:20;13009:1;12998:9;12994:17;12987:47;13051:131;13177:4;13051:131;:::i;:::-;13043:139;;12941:248;;;:::o;13195:419::-;13361:4;13399:2;13388:9;13384:18;13376:26;;13448:9;13442:4;13438:20;13434:1;13423:9;13419:17;13412:47;13476:131;13602:4;13476:131;:::i;:::-;13468:139;;13366:248;;;:::o;13620:419::-;13786:4;13824:2;13813:9;13809:18;13801:26;;13873:9;13867:4;13863:20;13859:1;13848:9;13844:17;13837:47;13901:131;14027:4;13901:131;:::i;:::-;13893:139;;13791:248;;;:::o;14045:419::-;14211:4;14249:2;14238:9;14234:18;14226:26;;14298:9;14292:4;14288:20;14284:1;14273:9;14269:17;14262:47;14326:131;14452:4;14326:131;:::i;:::-;14318:139;;14216:248;;;:::o;14470:419::-;14636:4;14674:2;14663:9;14659:18;14651:26;;14723:9;14717:4;14713:20;14709:1;14698:9;14694:17;14687:47;14751:131;14877:4;14751:131;:::i;:::-;14743:139;;14641:248;;;:::o;14895:419::-;15061:4;15099:2;15088:9;15084:18;15076:26;;15148:9;15142:4;15138:20;15134:1;15123:9;15119:17;15112:47;15176:131;15302:4;15176:131;:::i;:::-;15168:139;;15066:248;;;:::o;15320:419::-;15486:4;15524:2;15513:9;15509:18;15501:26;;15573:9;15567:4;15563:20;15559:1;15548:9;15544:17;15537:47;15601:131;15727:4;15601:131;:::i;:::-;15593:139;;15491:248;;;:::o;15745:419::-;15911:4;15949:2;15938:9;15934:18;15926:26;;15998:9;15992:4;15988:20;15984:1;15973:9;15969:17;15962:47;16026:131;16152:4;16026:131;:::i;:::-;16018:139;;15916:248;;;:::o;16170:419::-;16336:4;16374:2;16363:9;16359:18;16351:26;;16423:9;16417:4;16413:20;16409:1;16398:9;16394:17;16387:47;16451:131;16577:4;16451:131;:::i;:::-;16443:139;;16341:248;;;:::o;16595:419::-;16761:4;16799:2;16788:9;16784:18;16776:26;;16848:9;16842:4;16838:20;16834:1;16823:9;16819:17;16812:47;16876:131;17002:4;16876:131;:::i;:::-;16868:139;;16766:248;;;:::o;17020:222::-;17113:4;17151:2;17140:9;17136:18;17128:26;;17164:71;17232:1;17221:9;17217:17;17208:6;17164:71;:::i;:::-;17118:124;;;;:::o;17248:831::-;17511:4;17549:3;17538:9;17534:19;17526:27;;17563:71;17631:1;17620:9;17616:17;17607:6;17563:71;:::i;:::-;17644:80;17720:2;17709:9;17705:18;17696:6;17644:80;:::i;:::-;17771:9;17765:4;17761:20;17756:2;17745:9;17741:18;17734:48;17799:108;17902:4;17893:6;17799:108;:::i;:::-;17791:116;;17917:72;17985:2;17974:9;17970:18;17961:6;17917:72;:::i;:::-;17999:73;18067:3;18056:9;18052:19;18043:6;17999:73;:::i;:::-;17516:563;;;;;;;;:::o;18085:214::-;18174:4;18212:2;18201:9;18197:18;18189:26;;18225:67;18289:1;18278:9;18274:17;18265:6;18225:67;:::i;:::-;18179:120;;;;:::o;18305:132::-;18372:4;18395:3;18387:11;;18425:4;18420:3;18416:14;18408:22;;18377:60;;;:::o;18443:114::-;18510:6;18544:5;18538:12;18528:22;;18517:40;;;:::o;18563:99::-;18615:6;18649:5;18643:12;18633:22;;18622:40;;;:::o;18668:113::-;18738:4;18770;18765:3;18761:14;18753:22;;18743:38;;;:::o;18787:184::-;18886:11;18920:6;18915:3;18908:19;18960:4;18955:3;18951:14;18936:29;;18898:73;;;;:::o;18977:169::-;19061:11;19095:6;19090:3;19083:19;19135:4;19130:3;19126:14;19111:29;;19073:73;;;;:::o;19152:305::-;19192:3;19211:20;19229:1;19211:20;:::i;:::-;19206:25;;19245:20;19263:1;19245:20;:::i;:::-;19240:25;;19399:1;19331:66;19327:74;19324:1;19321:81;19318:2;;;19405:18;;:::i;:::-;19318:2;19449:1;19446;19442:9;19435:16;;19196:261;;;;:::o;19463:185::-;19503:1;19520:20;19538:1;19520:20;:::i;:::-;19515:25;;19554:20;19572:1;19554:20;:::i;:::-;19549:25;;19593:1;19583:2;;19598:18;;:::i;:::-;19583:2;19640:1;19637;19633:9;19628:14;;19505:143;;;;:::o;19654:348::-;19694:7;19717:20;19735:1;19717:20;:::i;:::-;19712:25;;19751:20;19769:1;19751:20;:::i;:::-;19746:25;;19939:1;19871:66;19867:74;19864:1;19861:81;19856:1;19849:9;19842:17;19838:105;19835:2;;;19946:18;;:::i;:::-;19835:2;19994:1;19991;19987:9;19976:20;;19702:300;;;;:::o;20008:191::-;20048:4;20068:20;20086:1;20068:20;:::i;:::-;20063:25;;20102:20;20120:1;20102:20;:::i;:::-;20097:25;;20141:1;20138;20135:8;20132:2;;;20146:18;;:::i;:::-;20132:2;20191:1;20188;20184:9;20176:17;;20053:146;;;;:::o;20205:96::-;20242:7;20271:24;20289:5;20271:24;:::i;:::-;20260:35;;20250:51;;;:::o;20307:104::-;20352:7;20381:24;20399:5;20381:24;:::i;:::-;20370:35;;20360:51;;;:::o;20417:90::-;20451:7;20494:5;20487:13;20480:21;20469:32;;20459:48;;;:::o;20513:126::-;20550:7;20590:42;20583:5;20579:54;20568:65;;20558:81;;;:::o;20645:77::-;20682:7;20711:5;20700:16;;20690:32;;;:::o;20728:86::-;20763:7;20803:4;20796:5;20792:16;20781:27;;20771:43;;;:::o;20820:121::-;20878:9;20911:24;20929:5;20911:24;:::i;:::-;20898:37;;20888:53;;;:::o;20947:307::-;21015:1;21025:113;21039:6;21036:1;21033:13;21025:113;;;21124:1;21119:3;21115:11;21109:18;21105:1;21100:3;21096:11;21089:39;21061:2;21058:1;21054:10;21049:15;;21025:113;;;21156:6;21153:1;21150:13;21147:2;;;21236:1;21227:6;21222:3;21218:16;21211:27;21147:2;20996:258;;;;:::o;21260:320::-;21304:6;21341:1;21335:4;21331:12;21321:22;;21388:1;21382:4;21378:12;21409:18;21399:2;;21465:4;21457:6;21453:17;21443:27;;21399:2;21527;21519:6;21516:14;21496:18;21493:38;21490:2;;;21546:18;;:::i;:::-;21490:2;21311:269;;;;:::o;21586:180::-;21634:77;21631:1;21624:88;21731:4;21728:1;21721:15;21755:4;21752:1;21745:15;21772:180;21820:77;21817:1;21810:88;21917:4;21914:1;21907:15;21941:4;21938:1;21931:15;21958:180;22006:77;22003:1;21996:88;22103:4;22100:1;22093:15;22127:4;22124:1;22117:15;22144:102;22185:6;22236:2;22232:7;22227:2;22220:5;22216:14;22212:28;22202:38;;22192:54;;;:::o;22252:221::-;22392:34;22388:1;22380:6;22376:14;22369:58;22461:4;22456:2;22448:6;22444:15;22437:29;22358:115;:::o;22479:177::-;22619:29;22615:1;22607:6;22603:14;22596:53;22585:71;:::o;22662:226::-;22802:34;22798:1;22790:6;22786:14;22779:58;22871:9;22866:2;22858:6;22854:15;22847:34;22768:120;:::o;22894:220::-;23034:34;23030:1;23022:6;23018:14;23011:58;23103:3;23098:2;23090:6;23086:15;23079:28;23000:114;:::o;23120:174::-;23260:26;23256:1;23248:6;23244:14;23237:50;23226:68;:::o;23300:182::-;23440:34;23436:1;23428:6;23424:14;23417:58;23406:76;:::o;23488:228::-;23628:34;23624:1;23616:6;23612:14;23605:58;23697:11;23692:2;23684:6;23680:15;23673:36;23594:122;:::o;23722:224::-;23862:34;23858:1;23850:6;23846:14;23839:58;23931:7;23926:2;23918:6;23914:15;23907:32;23828:118;:::o;23952:223::-;24092:34;24088:1;24080:6;24076:14;24069:58;24161:6;24156:2;24148:6;24144:15;24137:31;24058:117;:::o;24181:173::-;24321:25;24317:1;24309:6;24305:14;24298:49;24287:67;:::o;24360:122::-;24433:24;24451:5;24433:24;:::i;:::-;24426:5;24423:35;24413:2;;24472:1;24469;24462:12;24413:2;24403:79;:::o;24488:138::-;24569:32;24595:5;24569:32;:::i;:::-;24562:5;24559:43;24549:2;;24616:1;24613;24606:12;24549:2;24539:87;:::o;24632:116::-;24702:21;24717:5;24702:21;:::i;:::-;24695:5;24692:32;24682:2;;24738:1;24735;24728:12;24682:2;24672:76;:::o;24754:122::-;24827:24;24845:5;24827:24;:::i;:::-;24820:5;24817:35;24807:2;;24866:1;24863;24856:12;24807:2;24797:79;:::o

Swarm Source

ipfs://d9b471e60a857aa61d48865a0b67cc7a43bd9018f608e92708f126f0d1af3fb7
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.