ETH Price: $3,937.92 (+4.38%)

Token

ERC-20: Divine Moments of Truth (DMT)
 

Overview

Max Total Supply

100,000 DMT

Holders

46

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0 DMT

Value
$0.00
0xe73f712115ce7533f57adacf2a5afdd033b795ba
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:
DivineMomentsofTruth

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 2022-11-11
*/

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

/*

░█▀▄░▀█▀░█░█░▀█▀░█▀█░█▀▀░░░█▄█░█▀█░█▄█░█▀▀░█▀█░▀█▀░█▀▀░░░█▀█░█▀▀░░░▀█▀░█▀▄░█░█░▀█▀░█░█
░█░█░░█░░▀▄▀░░█░░█░█░█▀▀░░░█░█░█░█░█░█░█▀▀░█░█░░█░░▀▀█░░░█░█░█▀▀░░░░█░░█▀▄░█░█░░█░░█▀█
░▀▀░░▀▀▀░░▀░░▀▀▀░▀░▀░▀▀▀░░░▀░▀░▀▀▀░▀░▀░▀▀▀░▀░▀░░▀░░▀▀▀░░░▀▀▀░▀░░░░░░▀░░▀░▀░▀▀▀░░▀░░▀░▀

🔥 Telegram: https://t.me/DivineMomentsOfTruthPortal

🐦 Twitter: https://twitter.com/DMT_ERC20

    Linktree: https://linktr.ee/divinemomentsoftruth





          _____                    _____                _____          
         /\    \                  /\    \              /\    \         
        /::\    \                /::\____\            /::\    \        
       /::::\    \              /::::|   |            \:::\    \       
      /::::::\    \            /:::::|   |             \:::\    \      
     /:::/\:::\    \          /::::::|   |              \:::\    \     
    /:::/  \:::\    \        /:::/|::|   |               \:::\    \    
   /:::/    \:::\    \      /:::/ |::|   |               /::::\    \   
  /:::/    / \:::\    \    /:::/  |::|___|______        /::::::\    \  
 /:::/    /   \:::\ ___\  /:::/   |::::::::\    \      /:::/\:::\    \ 
/:::/____/     \:::|    |/:::/    |:::::::::\____\    /:::/  \:::\____\
\:::\    \     /:::|____|\::/    / ~~~~~/:::/    /   /:::/    \::/    /
 \:::\    \   /:::/    /  \/____/      /:::/    /   /:::/    / \/____/ 
  \:::\    \ /:::/    /               /:::/    /   /:::/    /          
   \:::\    /:::/    /               /:::/    /   /:::/    /           
    \:::\  /:::/    /               /:::/    /    \::/    /            
     \:::\/:::/    /               /:::/    /      \/____/             
      \::::::/    /               /:::/    /                           
       \::::/    /               /:::/    /                            
        \::/____/                \::/    /                             
         ~~                       \/____/                              
.     .       .  .   . .   .   . .    +  .
  .     .  :     .    .. :. .___---------___.
       .  .   .    .  :.:. _".^ .^ ^.  '.. :"-_. .
    .  :       .  .  .:../:            . .^  :.:\.
        .   . :: +. :.:/: .   .    .        . . .:\
 .  :    .     . _ :::/:               .  ^ .  . .:\
  .. . .   . - : :.:./.                        .  .:\
  .      .     . :..|:                    .  .  ^. .:|
    .       . : : ..||        .                . . !:|
  .     . . . ::. ::\(                           . :)/
 .   .     : . : .:.|. ######              .#######::|
  :.. .  :-  : .:  ::|.#######           ..########:|
 .  .  .  ..  .  .. :\ ########          :######## :/
  .        .+ :: : -.:\ ########       . ########.:/
    .  .+   . . . . :.:\. #######       #######..:/
      :: . . . . ::.:..:.\           .   .   ..:/
   .   .   .  .. :  -::::.\.       | |     . .:/
      .  :  .  .  .-:.":.::.\             ..:/
 .      -.   . . . .: .:::.:.\.           .:/
.   .   .  :      : ....::_:..:\   ___.  :/
   .   .  .   .:. .. .  .: :.:.:\       :/
     +   .   .   : . ::. :.:. .:.|\  .:/|
     .         +   .  .  ...:: ..|  --.:|
.      . . .   .  .  . ... :..:.."(  ..)"
 .   .       .      :  .   .: ::/  .  .::\DMT.

*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.4;

abstract contract Context {

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

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

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;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

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

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

contract Ownable is Context {
    address private _owner;

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

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }   
    
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0x000000000000000000000000000000000000dEaD));
        _owner = address(0x000000000000000000000000000000000000dEaD);
    }

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

}

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
    
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract DivineMomentsofTruth is Context, IERC20, Ownable {
    
    using SafeMath for uint256;
    
    string private _name = "Divine Moments of Truth";
    string private _symbol = "DMT";
    uint8 private _decimals = 18;

    address payable public marketingWallet = payable(0xE9cFc7F116FeC8962F1B109f85c269deC7Df526c);
    address payable public DeveloperWallet = payable(0xE9cFc7F116FeC8962F1B109f85c269deC7Df526c);
    
    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    address public immutable zeroAddress = 0x0000000000000000000000000000000000000000;

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    
    mapping (address => bool) public isExcludedFromFee;
    mapping (address => bool) public isMarketPair;
    mapping (address => bool) public blacklist;
    mapping (address => bool) public isWalletLimitExempt;
    mapping (address => bool) public isTxLimitExempt;

    uint256 public _buyLiquidityFee = 1;
    uint256 public _buyMarketingFee = 2;
    uint256 public _buyDeveloperFee = 2;
    
    uint256 public _sellLiquidityFee = 1;
    uint256 public _sellMarketingFee = 2;
    uint256 public _sellDeveloperFee = 2;

    uint256 public _totalTaxIfBuying;
    uint256 public _totalTaxIfSelling;

    uint256 private _totalSupply = 100000 * 10**_decimals;

    uint256 public minimumTokensBeforeSwap = _totalSupply.mul(1).div(100);   //0.001%

    uint256 public _maxTxAmount =  _totalSupply.mul(2).div(100);  //2%
    uint256 public _walletMax =   _totalSupply.mul(2).div(100);   //2%

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapPair;
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public swapAndLiquifyByLimitOnly = false;

    bool public checkWalletLimit = true;
    bool public EnableTransactionLimit = true;

    event SwapAndLiquifyEnabledUpdated(bool enabled);

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    
    event SwapETHForTokens(
        uint256 amountIn,
        address[] path
    );
    
    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    
    constructor () {
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); 
        
        uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        
        _allowances[address(this)][address(uniswapV2Router)] = ~uint256(0);

        isExcludedFromFee[owner()] = true;
        isExcludedFromFee[marketingWallet] = true;
        isExcludedFromFee[DeveloperWallet] = true;
        isExcludedFromFee[address(this)] = true;

        isWalletLimitExempt[owner()] = true;
        isWalletLimitExempt[marketingWallet] = true;
        isWalletLimitExempt[DeveloperWallet] = true;
        isWalletLimitExempt[address(uniswapPair)] = true;
        isWalletLimitExempt[address(this)] = true;
        
        isTxLimitExempt[owner()] = true;
        isTxLimitExempt[marketingWallet] = true;
        isTxLimitExempt[DeveloperWallet] = true;
        isTxLimitExempt[address(this)] = true;
        
        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyDeveloperFee);
        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellDeveloperFee);

        isMarketPair[address(uniswapPair)] = true;

        _balances[_msgSender()] = _totalSupply;
        emit Transfer(address(0), _msgSender(), _totalSupply);
    }

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

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

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

    function totalSupply() public view override returns (uint256) {
        return _totalSupply;
    }

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

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

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

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

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

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

    function setMarketPairStatus(address account, bool newValue) public onlyOwner {
        isMarketPair[account] = newValue;
    }

    function setIsExcludedFromFee(address account, bool newValue) public onlyOwner {
        isExcludedFromFee[account] = newValue;
    }

    function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner {
        isTxLimitExempt[holder] = exempt;
    }
    
    function setIsWalletLimitExempt(address holder, bool exempt) external onlyOwner {
        isWalletLimitExempt[holder] = exempt;
    }

    function enableTxLimit(bool _status) external onlyOwner {
        EnableTransactionLimit = _status;
    }

    function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
        _maxTxAmount = maxTxAmount;
    }

    function enableDisableWalletLimit(bool newValue) external onlyOwner {
       checkWalletLimit = newValue;
    }

    function setWalletLimit(uint256 newLimit) external onlyOwner {
        _walletMax  = newLimit;
    }

    function setNumTokensBeforeSwap(uint256 newLimit) external onlyOwner() {
        minimumTokensBeforeSwap = newLimit;
    }

    function setMarketingWalletAddress(address newAddress) external onlyOwner() {
        marketingWallet = payable(newAddress);
    }

    function setDeveloperWalletAddress(address newAddress) external onlyOwner() {
        DeveloperWallet = payable(newAddress);
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    function setSwapAndLiquifyByLimitOnly(bool newValue) public onlyOwner {
        swapAndLiquifyByLimitOnly = newValue;
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(deadAddress)).sub(balanceOf(zeroAddress));
    }

    function setBlacklist(address _adr, bool _status) external onlyOwner {
        blacklist[_adr] = _status;
    }

    function transferToAddressETH(address payable recipient, uint256 amount) private {
        recipient.transfer(amount);
    }
    
    function changeRouterVersion(address newRouterAddress) public onlyOwner returns(address newPairAddress) {

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(newRouterAddress); 

        newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory()).getPair(address(this), _uniswapV2Router.WETH());

        if(newPairAddress == address(0)) //Create If Doesnt exist
        {
            newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory())
                .createPair(address(this), _uniswapV2Router.WETH());
        }

        uniswapPair = newPairAddress; //Set new pair address
        uniswapV2Router = _uniswapV2Router; //Set new router address

        isMarketPair[address(uniswapPair)] = true;
    }

    function setBuyTaxes(uint _Liquidity, uint _Marketing , uint _Developer) public onlyOwner {
        _buyLiquidityFee = _Liquidity;
        _buyMarketingFee = _Marketing;
        _buyDeveloperFee = _Developer;
        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyDeveloperFee);
    }

    function setSellTaxes(uint _Liquidity, uint _Marketing , uint _Developer) public onlyOwner {
        _sellLiquidityFee = _Liquidity;
        _sellMarketingFee = _Marketing;
        _sellDeveloperFee = _Developer;
        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellDeveloperFee);
    }

     //to recieve ETH from uniswapV2Router when swaping
    receive() external payable {}

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

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

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

        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(!blacklist[sender] && !blacklist[recipient], "Bot Enemy address Restricted!");

        if(inSwapAndLiquify)
        { 
            return _basicTransfer(sender, recipient, amount); 
        }
        else
        {

            if(!isTxLimitExempt[sender] && !isTxLimitExempt[recipient] && EnableTransactionLimit) {
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= minimumTokensBeforeSwap;
            
            if (overMinimumTokenBalance && !inSwapAndLiquify && !isMarketPair[sender] && swapAndLiquifyEnabled) 
            {
                if(swapAndLiquifyByLimitOnly)
                    contractTokenBalance = minimumTokensBeforeSwap;
                swapAndLiquify(contractTokenBalance);    
            }

            _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

            uint256 finalAmount = (isExcludedFromFee[sender] || isExcludedFromFee[recipient]) ? 
                                         amount : takeFee(sender, recipient, amount);

            if(checkWalletLimit && !isWalletLimitExempt[recipient]) {
                require(balanceOf(recipient).add(finalAmount) <= _walletMax,"Amount Exceed From Max Wallet Limit!!");
            }

            _balances[recipient] = _balances[recipient].add(finalAmount);

            emit Transfer(sender, recipient, finalAmount);
            return true;
        }
        
    }

    function rescueStuckedToken(address _token, uint _amount) external onlyOwner {
        IERC20(_token).transfer(msg.sender,_amount);
    }

    function rescueFunds() external onlyOwner {
        (bool os,) = payable(msg.sender).call{value: address(this).balance}("");
        require(os);
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function swapAndLiquify(uint256 tAmount) private lockTheSwap {

        uint256 totalShares = _totalTaxIfBuying.add(_totalTaxIfSelling);

        uint256 liquidityShare = _buyLiquidityFee.add(_sellLiquidityFee);
        uint256 MarketingShare = _buyMarketingFee.add(_sellMarketingFee);
        // uint256 DeveloperShare = _buyDeveloperFee.add(_sellDeveloperFee);
        
        uint256 tokenForLp = tAmount.mul(liquidityShare).div(totalShares).div(2);
        uint256 tokenForSwap = tAmount.sub(tokenForLp);

        uint256 initialBalance =  address(this).balance;
        swapTokensForEth(tokenForSwap);
        uint256 recievedBalance =  address(this).balance.sub(initialBalance);

        uint256 totalETHFee = totalShares.sub(liquidityShare.div(2));

        uint256 amountETHLiquidity = recievedBalance.mul(liquidityShare).div(totalETHFee).div(2);
        uint256 amountETHMarketing = recievedBalance.mul(MarketingShare).div(totalETHFee);
        uint256 amountETHDeveloper = recievedBalance.sub(amountETHLiquidity).sub(amountETHMarketing);

        if(amountETHMarketing > 0) {
            payable(marketingWallet).transfer(amountETHMarketing);
        }

        if(amountETHDeveloper > 0) {
            payable(DeveloperWallet).transfer(amountETHDeveloper);
        }         

        if(amountETHLiquidity > 0 && tokenForLp > 0) {
            addLiquidity(tokenForLp, amountETHLiquidity);
        }
    }
    
    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        _approve(address(this), address(uniswapV2Router), tokenAmount);

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

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner(),
            block.timestamp
        );
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint256 feeAmount = 0;
        
        if(isMarketPair[sender]) {
            feeAmount = amount.mul(_totalTaxIfBuying).div(100);
        }
        else if(isMarketPair[recipient]) {
            feeAmount = amount.mul(_totalTaxIfSelling).div(100);
        }
        
        if(feeAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
        }

        return amount.sub(feeAmount);
    }

    /* AirDrop Function*/

    function airdrop(address[] calldata _address,uint[] calldata _tokens) external onlyOwner {
        address account = msg.sender;
        require(_address.length == _tokens.length,"Error: Mismatch Length");
        uint tokenCount;
        for(uint i = 0; i < _tokens.length; i++) {
            tokenCount += _tokens[i];
        }
        require(balanceOf(account) >= tokenCount,"Error: Insufficient Error!!");
        _balances[account] = _balances[account].sub(tokenCount); 
        for(uint j = 0; j < _address.length; j++) {
            _balances[_address[j]] = _balances[_address[j]].add(_tokens[j]);
            emit Transfer(account, _address[j], _tokens[j]);
        }

    }

    
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","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":"DeveloperWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EnableTransactionLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyDeveloperFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellDeveloperFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_address","type":"address[]"},{"internalType":"uint256[]","name":"_tokens","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newRouterAddress","type":"address"}],"name":"changeRouterVersion","outputs":[{"internalType":"address","name":"newPairAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"enableDisableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueStuckedToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_Liquidity","type":"uint256"},{"internalType":"uint256","name":"_Marketing","type":"uint256"},{"internalType":"uint256","name":"_Developer","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setDeveloperWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setIsExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsWalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setMarketPairStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMarketingWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_Liquidity","type":"uint256"},{"internalType":"uint256","name":"_Marketing","type":"uint256"},{"internalType":"uint256","name":"_Developer","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setSwapAndLiquifyByLimitOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"zeroAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526040518060400160405280601781526020017f446976696e65204d6f6d656e7473206f66205472757468000000000000000000815250600190805190602001906200005192919062001002565b506040518060400160405280600381526020017f444d540000000000000000000000000000000000000000000000000000000000815250600290805190602001906200009f92919062001002565b506012600360006101000a81548160ff021916908360ff16021790555073e9cfc7f116fec8962f1b109f85c269dec7df526c600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073e9cfc7f116fec8962f1b109f85c269dec7df526c600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b815250600073ffffffffffffffffffffffffffffffffffffffff1660a09073ffffffffffffffffffffffffffffffffffffffff1660601b8152506001600c556002600d556002600e556001600f5560026010556002601155600360009054906101000a900460ff16600a62000211919062001364565b620186a0620002219190620014a1565b6014556200025b606462000247600160145462000e3060201b620031db1790919060201c565b62000eb460201b620032561790919060201c565b60155562000295606462000281600260145462000e3060201b620031db1790919060201c565b62000eb460201b620032561790919060201c565b601655620002cf6064620002bb600260145462000e3060201b620031db1790919060201c565b62000eb460201b620032561790919060201c565b6017556001601960156101000a81548160ff0219169083151502179055506000601960166101000a81548160ff0219169083151502179055506001601960176101000a81548160ff0219169083151502179055506001601960186101000a81548160ff0219169083151502179055503480156200034b57600080fd5b5060006200035e62000f0660201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200045c57600080fd5b505afa15801562000471573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004979190620010c9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620004fa57600080fd5b505afa1580156200050f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005359190620010c9565b6040518363ffffffff1660e01b815260040162000554929190620011a6565b602060405180830381600087803b1580156200056f57600080fd5b505af115801562000584573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005aa9190620010c9565b601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600019600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160076000620006e662000f0e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60006200089962000f0e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b600062000ac662000f0e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000c9c600e5462000c88600d54600c5462000f3760201b620032a01790919060201c565b62000f3760201b620032a01790919060201c565b60128190555062000cdb60115462000cc7601054600f5462000f3760201b620032a01790919060201c565b62000f3760201b620032a01790919060201c565b601381905550600160086000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506014546005600062000d7262000f0660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000dc062000f0660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60145460405162000e2191906200123b565b60405180910390a350620016f6565b60008083141562000e45576000905062000eae565b6000828462000e559190620014a1565b905082848262000e669190620012d1565b1462000ea9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ea09062001219565b60405180910390fd5b809150505b92915050565b600062000efe83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000f9a60201b60201c565b905092915050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080828462000f48919062001274565b90508381101562000f90576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000f8790620011f7565b60405180910390fd5b8091505092915050565b6000808311829062000fe4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000fdb9190620011d3565b60405180910390fd5b506000838562000ff59190620012d1565b9050809150509392505050565b828054620010109062001583565b90600052602060002090601f01602090048101928262001034576000855562001080565b82601f106200104f57805160ff191683800117855562001080565b8280016001018555821562001080579182015b828111156200107f57825182559160200191906001019062001062565b5b5090506200108f919062001093565b5090565b5b80821115620010ae57600081600090555060010162001094565b5090565b600081519050620010c381620016dc565b92915050565b600060208284031215620010dc57600080fd5b6000620010ec84828501620010b2565b91505092915050565b620011008162001502565b82525050565b6000620011138262001258565b6200111f818562001263565b9350620011318185602086016200154d565b6200113c8162001646565b840191505092915050565b600062001156601b8362001263565b9150620011638262001664565b602082019050919050565b60006200117d60218362001263565b91506200118a826200168d565b604082019050919050565b620011a08162001536565b82525050565b6000604082019050620011bd6000830185620010f5565b620011cc6020830184620010f5565b9392505050565b60006020820190508181036000830152620011ef818462001106565b905092915050565b60006020820190508181036000830152620012128162001147565b9050919050565b6000602082019050818103600083015262001234816200116e565b9050919050565b600060208201905062001252600083018462001195565b92915050565b600081519050919050565b600082825260208201905092915050565b6000620012818262001536565b91506200128e8362001536565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620012c657620012c5620015b9565b5b828201905092915050565b6000620012de8262001536565b9150620012eb8362001536565b925082620012fe57620012fd620015e8565b5b828204905092915050565b6000808291508390505b60018511156200135b57808604811115620013335762001332620015b9565b5b6001851615620013435780820291505b8081029050620013538562001657565b945062001313565b94509492505050565b6000620013718262001536565b91506200137e8362001540565b9250620013ad7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620013b5565b905092915050565b600082620013c757600190506200149a565b81620013d757600090506200149a565b8160018114620013f05760028114620013fb5762001431565b60019150506200149a565b60ff84111562001410576200140f620015b9565b5b8360020a9150848211156200142a5762001429620015b9565b5b506200149a565b5060208310610133831016604e8410600b84101617156200146b5782820a905083811115620014655762001464620015b9565b5b6200149a565b6200147a848484600162001309565b92509050818404811115620014945762001493620015b9565b5b81810290505b9392505050565b6000620014ae8262001536565b9150620014bb8362001536565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620014f757620014f6620015b9565b5b828202905092915050565b60006200150f8262001516565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156200156d57808201518184015260208101905062001550565b838111156200157d576000848401525b50505050565b600060028204905060018216806200159c57607f821691505b60208210811415620015b357620015b262001617565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b620016e78162001502565b8114620016f357600080fd5b50565b60805160601c60a05160601c6159d8620017306000396000818161100101526114f10152600081816114c5015261151d01526159d86000f3fe6080604052600436106103a65760003560e01c8063844d591c116101e7578063da00097d1161010d578063f1d5f517116100a0578063f872858a1161006f578063f872858a14610dd1578063f8f6329014610dfc578063f9f92be414610e27578063fb4b8e6c14610e64576103ad565b8063f1d5f51714610d2d578063f2fde38b14610d56578063f455444614610d7f578063f84ba65d14610da8576103ad565b8063ec28438a116100dc578063ec28438a14610c87578063ee828db314610cb0578063ef422a1814610cd9578063f0cd1dac14610d02576103ad565b8063da00097d14610bdd578063dc44b6a014610c08578063dd62ed3e14610c33578063e6b2603b14610c70576103ad565b8063a5d69d1f11610185578063c816841b11610154578063c816841b14610b1f578063c860795214610b4a578063c867d60b14610b75578063d2d7ad8314610bb2576103ad565b8063a5d69d1f14610a65578063a9059cbb14610a8e578063c49b9a8014610acb578063c5d2418914610af4576103ad565b80638b42507f116101c15780638b42507f146109955780638da5cb5b146109d257806395d89b41146109fd578063a457c2d714610a28576103ad565b8063844d591c14610916578063852614851461093f57806388790a681461096a576103ad565b806339509351116102cc5780635881f3ef1161026a57806375f0a8741161023957806375f0a8741461086a5780637d1db4a514610895578063807c2d9c146108c057806382eefb43146108eb576103ad565b80635881f3ef146107b057806367243482146107ed57806370a0823114610816578063715018a614610853576103ad565b80634a74bb02116102a65780634a74bb02146106f45780634cb80fd51461071f5780635194f9bf146107485780635342acb414610773576103ad565b806339509351146106515780633b97084a1461068e5780633ecad271146106b7576103ad565b80631870517a116103445780632563ae83116103135780632563ae83146105a757806327c8f835146105d05780632b112e49146105fb578063313ce56714610626576103ad565b80631870517a146104ed5780632198cf6c1461051657806323555d571461053f57806323b872dd1461056a576103ad565b8063095ea7b311610380578063095ea7b314610431578063153b0d1e1461046e5780631694505e1461049757806318160ddd146104c2576103ad565b806306fdde03146103b257806308733214146103dd5780630930907b14610406576103ad565b366103ad57005b600080fd5b3480156103be57600080fd5b506103c7610e8d565b6040516103d49190614fe8565b60405180910390f35b3480156103e957600080fd5b5061040460048036038101906103ff9190614b05565b610f1f565b005b34801561041257600080fd5b5061041b610fff565b6040516104289190614ec9565b60405180910390f35b34801561043d57600080fd5b50610458600480360381019061045391906149d9565b611023565b6040516104659190614fb2565b60405180910390f35b34801561047a57600080fd5b506104956004803603810190610490919061499d565b611041565b005b3480156104a357600080fd5b506104ac611131565b6040516104b99190614fcd565b60405180910390f35b3480156104ce57600080fd5b506104d7611157565b6040516104e491906151aa565b60405180910390f35b3480156104f957600080fd5b50610514600480360381019061050f9190614b05565b611161565b005b34801561052257600080fd5b5061053d6004803603810190610538919061499d565b611241565b005b34801561054b57600080fd5b50610554611331565b60405161056191906151aa565b60405180910390f35b34801561057657600080fd5b50610591600480360381019061058c919061494e565b611337565b60405161059e9190614fb2565b60405180910390f35b3480156105b357600080fd5b506105ce60048036038101906105c99190614a8a565b611411565b005b3480156105dc57600080fd5b506105e56114c3565b6040516105f29190614ec9565b60405180910390f35b34801561060757600080fd5b506106106114e7565b60405161061d91906151aa565b60405180910390f35b34801561063257600080fd5b5061063b611565565b604051610648919061524f565b60405180910390f35b34801561065d57600080fd5b50610678600480360381019061067391906149d9565b61157c565b6040516106859190614fb2565b60405180910390f35b34801561069a57600080fd5b506106b560048036038101906106b09190614adc565b61162f565b005b3480156106c357600080fd5b506106de60048036038101906106d991906148c0565b6116ce565b6040516106eb9190614fb2565b60405180910390f35b34801561070057600080fd5b506107096116ee565b6040516107169190614fb2565b60405180910390f35b34801561072b57600080fd5b50610746600480360381019061074191906148c0565b611701565b005b34801561075457600080fd5b5061075d6117da565b60405161076a91906151aa565b60405180910390f35b34801561077f57600080fd5b5061079a600480360381019061079591906148c0565b6117e0565b6040516107a79190614fb2565b60405180910390f35b3480156107bc57600080fd5b506107d760048036038101906107d291906148c0565b611800565b6040516107e49190614ec9565b60405180910390f35b3480156107f957600080fd5b50610814600480360381019061080f9190614a15565b611ce4565b005b34801561082257600080fd5b5061083d600480360381019061083891906148c0565b6121a3565b60405161084a91906151aa565b60405180910390f35b34801561085f57600080fd5b506108686121ec565b005b34801561087657600080fd5b5061087f612341565b60405161088c9190614ee4565b60405180910390f35b3480156108a157600080fd5b506108aa612367565b6040516108b791906151aa565b60405180910390f35b3480156108cc57600080fd5b506108d561236d565b6040516108e291906151aa565b60405180910390f35b3480156108f757600080fd5b50610900612373565b60405161090d91906151aa565b60405180910390f35b34801561092257600080fd5b5061093d6004803603810190610938919061499d565b612379565b005b34801561094b57600080fd5b50610954612469565b6040516109619190614fb2565b60405180910390f35b34801561097657600080fd5b5061097f61247c565b60405161098c91906151aa565b60405180910390f35b3480156109a157600080fd5b506109bc60048036038101906109b791906148c0565b612482565b6040516109c99190614fb2565b60405180910390f35b3480156109de57600080fd5b506109e76124a2565b6040516109f49190614ec9565b60405180910390f35b348015610a0957600080fd5b50610a126124cb565b604051610a1f9190614fe8565b60405180910390f35b348015610a3457600080fd5b50610a4f6004803603810190610a4a91906149d9565b61255d565b604051610a5c9190614fb2565b60405180910390f35b348015610a7157600080fd5b50610a8c6004803603810190610a879190614a8a565b61262a565b005b348015610a9a57600080fd5b50610ab56004803603810190610ab091906149d9565b6126dc565b604051610ac29190614fb2565b60405180910390f35b348015610ad757600080fd5b50610af26004803603810190610aed9190614a8a565b6126fb565b005b348015610b0057600080fd5b50610b096127e4565b604051610b1691906151aa565b60405180910390f35b348015610b2b57600080fd5b50610b346127ea565b604051610b419190614ec9565b60405180910390f35b348015610b5657600080fd5b50610b5f612810565b604051610b6c91906151aa565b60405180910390f35b348015610b8157600080fd5b50610b9c6004803603810190610b9791906148c0565b612816565b604051610ba99190614fb2565b60405180910390f35b348015610bbe57600080fd5b50610bc7612836565b604051610bd491906151aa565b60405180910390f35b348015610be957600080fd5b50610bf261283c565b604051610bff9190614fb2565b60405180910390f35b348015610c1457600080fd5b50610c1d61284f565b604051610c2a91906151aa565b60405180910390f35b348015610c3f57600080fd5b50610c5a6004803603810190610c559190614912565b612855565b604051610c6791906151aa565b60405180910390f35b348015610c7c57600080fd5b50610c856128dc565b005b348015610c9357600080fd5b50610cae6004803603810190610ca99190614adc565b6129ea565b005b348015610cbc57600080fd5b50610cd76004803603810190610cd29190614a8a565b612a89565b005b348015610ce557600080fd5b50610d006004803603810190610cfb919061499d565b612b3b565b005b348015610d0e57600080fd5b50610d17612c2b565b604051610d2491906151aa565b60405180910390f35b348015610d3957600080fd5b50610d546004803603810190610d4f9190614adc565b612c31565b005b348015610d6257600080fd5b50610d7d6004803603810190610d7891906148c0565b612cd0565b005b348015610d8b57600080fd5b50610da66004803603810190610da191906149d9565b612e92565b005b348015610db457600080fd5b50610dcf6004803603810190610dca919061499d565b612fb9565b005b348015610ddd57600080fd5b50610de66130a9565b604051610df39190614fb2565b60405180910390f35b348015610e0857600080fd5b50610e116130bc565b604051610e1e9190614ee4565b60405180910390f35b348015610e3357600080fd5b50610e4e6004803603810190610e4991906148c0565b6130e2565b604051610e5b9190614fb2565b60405180910390f35b348015610e7057600080fd5b50610e8b6004803603810190610e8691906148c0565b613102565b005b606060018054610e9c906154af565b80601f0160208091040260200160405190810160405280929190818152602001828054610ec8906154af565b8015610f155780601f10610eea57610100808354040283529160200191610f15565b820191906000526020600020905b815481529060010190602001808311610ef857829003601f168201915b5050505050905090565b610f276132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fab9061514a565b60405180910390fd5b82600f819055508160108190555080601181905550610ff4601154610fe6601054600f546132a090919063ffffffff16565b6132a090919063ffffffff16565b601381905550505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006110376110306132fe565b8484613306565b6001905092915050565b6110496132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cd9061514a565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601454905090565b6111696132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ed9061514a565b60405180910390fd5b82600c8190555081600d8190555080600e81905550611236600e54611228600d54600c546132a090919063ffffffff16565b6132a090919063ffffffff16565b601281905550505050565b6112496132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cd9061514a565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600e5481565b60006113448484846134d1565b50611406846113516132fe565b6114018560405180606001604052806028815260200161595660289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006113b76132fe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613be79092919063ffffffff16565b613306565b600190509392505050565b6114196132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149d9061514a565b60405180910390fd5b80601960176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006115606115157f00000000000000000000000000000000000000000000000000000000000000006121a3565b6115526115417f00000000000000000000000000000000000000000000000000000000000000006121a3565b601454613c4b90919063ffffffff16565b613c4b90919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b60006116256115896132fe565b84611620856006600061159a6132fe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a090919063ffffffff16565b613306565b6001905092915050565b6116376132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bb9061514a565b60405180910390fd5b8060158190555050565b60086020528060005260406000206000915054906101000a900460ff1681565b601960159054906101000a900460ff1681565b6117096132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611796576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178d9061514a565b60405180910390fd5b80600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60115481565b60076020528060005260406000206000915054906101000a900460ff1681565b600061180a6132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611897576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188e9061514a565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156118e257600080fd5b505afa1580156118f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191a91906148e9565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561197c57600080fd5b505afa158015611990573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119b491906148e9565b6040518363ffffffff1660e01b81526004016119d1929190614eff565b60206040518083038186803b1580156119e957600080fd5b505afa1580156119fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a2191906148e9565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611be2578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611a9e57600080fd5b505afa158015611ab2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad691906148e9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611b3857600080fd5b505afa158015611b4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b7091906148e9565b6040518363ffffffff1660e01b8152600401611b8d929190614eff565b602060405180830381600087803b158015611ba757600080fd5b505af1158015611bbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bdf91906148e9565b91505b81601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b611cec6132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d709061514a565b60405180910390fd5b6000339050828290508585905014611dc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbd9061512a565b60405180910390fd5b600080600090505b84849050811015611e3957848482818110611e12577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002013582611e2491906152ca565b91508080611e31906154e1565b915050611dce565b5080611e44836121a3565b1015611e85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7c9061502a565b60405180910390fd5b611ed781600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c4b90919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060005b8686905081101561219a57612006858583818110611f64577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020135600560008a8a86818110611fa8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002016020810190611fbd91906148c0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a090919063ffffffff16565b60056000898985818110612043577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b905060200201602081019061205891906148c0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508686828181106120cf577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020160208101906120e491906148c0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87878581811061216b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002013560405161217f91906151aa565b60405180910390a38080612192906154e1565b915050611f1d565b50505050505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6121f46132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612281576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122789061514a565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60165481565b60175481565b60135481565b6123816132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461240e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124059061514a565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601960189054906101000a900460ff1681565b600f5481565b600b6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600280546124da906154af565b80601f0160208091040260200160405190810160405280929190818152602001828054612506906154af565b80156125535780601f1061252857610100808354040283529160200191612553565b820191906000526020600020905b81548152906001019060200180831161253657829003601f168201915b5050505050905090565b600061262061256a6132fe565b8461261b8560405180606001604052806025815260200161597e60259139600660006125946132fe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613be79092919063ffffffff16565b613306565b6001905092915050565b6126326132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b69061514a565b60405180910390fd5b80601960166101000a81548160ff02191690831515021790555050565b60006126f06126e96132fe565b84846134d1565b506001905092915050565b6127036132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612790576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127879061514a565b60405180910390fd5b80601960156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516127d99190614fb2565b60405180910390a150565b600d5481565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b600a6020528060005260406000206000915054906101000a900460ff1681565b60155481565b601960169054906101000a900460ff1681565b600c5481565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6128e46132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612971576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129689061514a565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff164760405161299790614eb4565b60006040518083038185875af1925050503d80600081146129d4576040519150601f19603f3d011682016040523d82523d6000602084013e6129d9565b606091505b50509050806129e757600080fd5b50565b6129f26132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a769061514a565b60405180910390fd5b8060168190555050565b612a916132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b159061514a565b60405180910390fd5b80601960186101000a81548160ff02191690831515021790555050565b612b436132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc79061514a565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60125481565b612c396132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612cc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cbd9061514a565b60405180910390fd5b8060178190555050565b612cd86132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d5c9061514a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612dd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dcc9061504a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612e9a6132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612f27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f1e9061514a565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401612f62929190614f28565b602060405180830381600087803b158015612f7c57600080fd5b505af1158015612f90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fb49190614ab3565b505050565b612fc16132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461304e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130459061514a565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601960179054906101000a900460ff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60096020528060005260406000206000915054906101000a900460ff1681565b61310a6132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613197576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161318e9061514a565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808314156131ee5760009050613250565b600082846131fc9190615351565b905082848261320b9190615320565b1461324b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132429061510a565b60405180910390fd5b809150505b92915050565b600061329883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613c95565b905092915050565b60008082846132af91906152ca565b9050838110156132f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132eb9061508a565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613376576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161336d9061518a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156133e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133dd9061506a565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516134c491906151aa565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415613542576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135399061516a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156135b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135a99061500a565b60405180910390fd5b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156136565750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b613695576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161368c906150ca565b60405180910390fd5b601960149054906101000a900460ff16156136bc576136b5848484613cf8565b9050613be0565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156137605750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156137785750601960189054906101000a900460ff165b156137c3576016548211156137c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137b9906150ea565b60405180910390fd5b5b60006137ce306121a3565b9050600060155482101590508080156137f45750601960149054906101000a900460ff16155b801561384a5750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156138625750601960159054906101000a900460ff165b1561388c57601960169054906101000a900460ff16156138825760155491505b61388b82613ecb565b5b613915846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613be79092919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806139fb5750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613a0f57613a0a878787614196565b613a11565b845b9050601960179054906101000a900460ff168015613a795750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613ade57601754613a9c82613a8e896121a3565b6132a090919063ffffffff16565b1115613add576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ad4906150aa565b60405180910390fd5b5b613b3081600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a090919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613bd091906151aa565b60405180910390a3600193505050505b9392505050565b6000838311158290613c2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c269190614fe8565b60405180910390fd5b5060008385613c3e91906153ab565b9050809150509392505050565b6000613c8d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613be7565b905092915050565b60008083118290613cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613cd39190614fe8565b60405180910390fd5b5060008385613ceb9190615320565b9050809150509392505050565b6000613d83826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613be79092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e1882600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a090919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613eb891906151aa565b60405180910390a3600190509392505050565b6001601960146101000a81548160ff0219169083151502179055506000613eff6013546012546132a090919063ffffffff16565b90506000613f1a600f54600c546132a090919063ffffffff16565b90506000613f35601054600d546132a090919063ffffffff16565b90506000613f716002613f6386613f55878a6131db90919063ffffffff16565b61325690919063ffffffff16565b61325690919063ffffffff16565b90506000613f888287613c4b90919063ffffffff16565b90506000479050613f98826143bd565b6000613fad8247613c4b90919063ffffffff16565b90506000613fd7613fc860028961325690919063ffffffff16565b89613c4b90919063ffffffff16565b90506000614013600261400584613ff78c886131db90919063ffffffff16565b61325690919063ffffffff16565b61325690919063ffffffff16565b9050600061403c8361402e8a876131db90919063ffffffff16565b61325690919063ffffffff16565b90506000614065826140578588613c4b90919063ffffffff16565b613c4b90919063ffffffff16565b905060008211156140da57600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156140d8573d6000803e3d6000fd5b505b600081111561414d57600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561414b573d6000803e3d6000fd5b505b60008311801561415d5750600088115b1561416d5761416c88846146ba565b5b50505050505050505050506000601960146101000a81548160ff02191690831515021790555050565b60008060009050600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561421e576142176064614209601254866131db90919063ffffffff16565b61325690919063ffffffff16565b905061429c565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561429b57614298606461428a601354866131db90919063ffffffff16565b61325690919063ffffffff16565b90505b5b60008111156143a0576142f781600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a090919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161439791906151aa565b60405180910390a35b6143b38184613c4b90919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff811115614400577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561442e5781602001602082028036833780820191505090505b509050308160008151811061446c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561450e57600080fd5b505afa158015614522573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061454691906148e9565b81600181518110614580577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506145e730601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613306565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161464b9594939291906151f5565b600060405180830381600087803b15801561466557600080fd5b505af1158015614679573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516146ae9291906151c5565b60405180910390a15050565b6146e730601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613306565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806147336124a2565b426040518863ffffffff1660e01b815260040161475596959493929190614f51565b6060604051808303818588803b15801561476e57600080fd5b505af1158015614782573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906147a79190614b54565b5050505050565b6000813590506147bd81615910565b92915050565b6000815190506147d281615910565b92915050565b60008083601f8401126147ea57600080fd5b8235905067ffffffffffffffff81111561480357600080fd5b60208301915083602082028301111561481b57600080fd5b9250929050565b60008083601f84011261483457600080fd5b8235905067ffffffffffffffff81111561484d57600080fd5b60208301915083602082028301111561486557600080fd5b9250929050565b60008135905061487b81615927565b92915050565b60008151905061489081615927565b92915050565b6000813590506148a58161593e565b92915050565b6000815190506148ba8161593e565b92915050565b6000602082840312156148d257600080fd5b60006148e0848285016147ae565b91505092915050565b6000602082840312156148fb57600080fd5b6000614909848285016147c3565b91505092915050565b6000806040838503121561492557600080fd5b6000614933858286016147ae565b9250506020614944858286016147ae565b9150509250929050565b60008060006060848603121561496357600080fd5b6000614971868287016147ae565b9350506020614982868287016147ae565b925050604061499386828701614896565b9150509250925092565b600080604083850312156149b057600080fd5b60006149be858286016147ae565b92505060206149cf8582860161486c565b9150509250929050565b600080604083850312156149ec57600080fd5b60006149fa858286016147ae565b9250506020614a0b85828601614896565b9150509250929050565b60008060008060408587031215614a2b57600080fd5b600085013567ffffffffffffffff811115614a4557600080fd5b614a51878288016147d8565b9450945050602085013567ffffffffffffffff811115614a7057600080fd5b614a7c87828801614822565b925092505092959194509250565b600060208284031215614a9c57600080fd5b6000614aaa8482850161486c565b91505092915050565b600060208284031215614ac557600080fd5b6000614ad384828501614881565b91505092915050565b600060208284031215614aee57600080fd5b6000614afc84828501614896565b91505092915050565b600080600060608486031215614b1a57600080fd5b6000614b2886828701614896565b9350506020614b3986828701614896565b9250506040614b4a86828701614896565b9150509250925092565b600080600060608486031215614b6957600080fd5b6000614b77868287016148ab565b9350506020614b88868287016148ab565b9250506040614b99868287016148ab565b9150509250925092565b6000614baf8383614bca565b60208301905092915050565b614bc4816153f1565b82525050565b614bd3816153df565b82525050565b614be2816153df565b82525050565b6000614bf38261527a565b614bfd818561529d565b9350614c088361526a565b8060005b83811015614c39578151614c208882614ba3565b9750614c2b83615290565b925050600181019050614c0c565b5085935050505092915050565b614c4f81615403565b82525050565b614c5e81615446565b82525050565b614c6d8161546a565b82525050565b6000614c7e82615285565b614c8881856152b9565b9350614c9881856020860161547c565b614ca1816155b7565b840191505092915050565b6000614cb96023836152b9565b9150614cc4826155c8565b604082019050919050565b6000614cdc601b836152b9565b9150614ce782615617565b602082019050919050565b6000614cff6026836152b9565b9150614d0a82615640565b604082019050919050565b6000614d226022836152b9565b9150614d2d8261568f565b604082019050919050565b6000614d45601b836152b9565b9150614d50826156de565b602082019050919050565b6000614d686025836152b9565b9150614d7382615707565b604082019050919050565b6000614d8b601d836152b9565b9150614d9682615756565b602082019050919050565b6000614dae6028836152b9565b9150614db98261577f565b604082019050919050565b6000614dd16021836152b9565b9150614ddc826157ce565b604082019050919050565b6000614df46016836152b9565b9150614dff8261581d565b602082019050919050565b6000614e176020836152b9565b9150614e2282615846565b602082019050919050565b6000614e3a6025836152b9565b9150614e458261586f565b604082019050919050565b6000614e5d6000836152ae565b9150614e68826158be565b600082019050919050565b6000614e806024836152b9565b9150614e8b826158c1565b604082019050919050565b614e9f8161542f565b82525050565b614eae81615439565b82525050565b6000614ebf82614e50565b9150819050919050565b6000602082019050614ede6000830184614bd9565b92915050565b6000602082019050614ef96000830184614bbb565b92915050565b6000604082019050614f146000830185614bd9565b614f216020830184614bd9565b9392505050565b6000604082019050614f3d6000830185614bd9565b614f4a6020830184614e96565b9392505050565b600060c082019050614f666000830189614bd9565b614f736020830188614e96565b614f806040830187614c64565b614f8d6060830186614c64565b614f9a6080830185614bd9565b614fa760a0830184614e96565b979650505050505050565b6000602082019050614fc76000830184614c46565b92915050565b6000602082019050614fe26000830184614c55565b92915050565b600060208201905081810360008301526150028184614c73565b905092915050565b6000602082019050818103600083015261502381614cac565b9050919050565b6000602082019050818103600083015261504381614ccf565b9050919050565b6000602082019050818103600083015261506381614cf2565b9050919050565b6000602082019050818103600083015261508381614d15565b9050919050565b600060208201905081810360008301526150a381614d38565b9050919050565b600060208201905081810360008301526150c381614d5b565b9050919050565b600060208201905081810360008301526150e381614d7e565b9050919050565b6000602082019050818103600083015261510381614da1565b9050919050565b6000602082019050818103600083015261512381614dc4565b9050919050565b6000602082019050818103600083015261514381614de7565b9050919050565b6000602082019050818103600083015261516381614e0a565b9050919050565b6000602082019050818103600083015261518381614e2d565b9050919050565b600060208201905081810360008301526151a381614e73565b9050919050565b60006020820190506151bf6000830184614e96565b92915050565b60006040820190506151da6000830185614e96565b81810360208301526151ec8184614be8565b90509392505050565b600060a08201905061520a6000830188614e96565b6152176020830187614c64565b81810360408301526152298186614be8565b90506152386060830185614bd9565b6152456080830184614e96565b9695505050505050565b60006020820190506152646000830184614ea5565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006152d58261542f565b91506152e08361542f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156153155761531461552a565b5b828201905092915050565b600061532b8261542f565b91506153368361542f565b92508261534657615345615559565b5b828204905092915050565b600061535c8261542f565b91506153678361542f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156153a05761539f61552a565b5b828202905092915050565b60006153b68261542f565b91506153c18361542f565b9250828210156153d4576153d361552a565b5b828203905092915050565b60006153ea8261540f565b9050919050565b60006153fc8261540f565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061545182615458565b9050919050565b60006154638261540f565b9050919050565b60006154758261542f565b9050919050565b60005b8381101561549a57808201518184015260208101905061547f565b838111156154a9576000848401525b50505050565b600060028204905060018216806154c757607f821691505b602082108114156154db576154da615588565b5b50919050565b60006154ec8261542f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561551f5761551e61552a565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4572726f723a20496e73756666696369656e74204572726f7221210000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f416d6f756e74204578636565642046726f6d204d61782057616c6c6574204c6960008201527f6d69742121000000000000000000000000000000000000000000000000000000602082015250565b7f426f7420456e656d792061646472657373205265737472696374656421000000600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4572726f723a204d69736d61746368204c656e67746800000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b615919816153df565b811461592457600080fd5b50565b61593081615403565b811461593b57600080fd5b50565b6159478161542f565b811461595257600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220100474f1bfb36941ba47672dc525c3ce4ed2e3447a37aa74ba6cf2b258be1b4364736f6c63430008040033

Deployed Bytecode

0x6080604052600436106103a65760003560e01c8063844d591c116101e7578063da00097d1161010d578063f1d5f517116100a0578063f872858a1161006f578063f872858a14610dd1578063f8f6329014610dfc578063f9f92be414610e27578063fb4b8e6c14610e64576103ad565b8063f1d5f51714610d2d578063f2fde38b14610d56578063f455444614610d7f578063f84ba65d14610da8576103ad565b8063ec28438a116100dc578063ec28438a14610c87578063ee828db314610cb0578063ef422a1814610cd9578063f0cd1dac14610d02576103ad565b8063da00097d14610bdd578063dc44b6a014610c08578063dd62ed3e14610c33578063e6b2603b14610c70576103ad565b8063a5d69d1f11610185578063c816841b11610154578063c816841b14610b1f578063c860795214610b4a578063c867d60b14610b75578063d2d7ad8314610bb2576103ad565b8063a5d69d1f14610a65578063a9059cbb14610a8e578063c49b9a8014610acb578063c5d2418914610af4576103ad565b80638b42507f116101c15780638b42507f146109955780638da5cb5b146109d257806395d89b41146109fd578063a457c2d714610a28576103ad565b8063844d591c14610916578063852614851461093f57806388790a681461096a576103ad565b806339509351116102cc5780635881f3ef1161026a57806375f0a8741161023957806375f0a8741461086a5780637d1db4a514610895578063807c2d9c146108c057806382eefb43146108eb576103ad565b80635881f3ef146107b057806367243482146107ed57806370a0823114610816578063715018a614610853576103ad565b80634a74bb02116102a65780634a74bb02146106f45780634cb80fd51461071f5780635194f9bf146107485780635342acb414610773576103ad565b806339509351146106515780633b97084a1461068e5780633ecad271146106b7576103ad565b80631870517a116103445780632563ae83116103135780632563ae83146105a757806327c8f835146105d05780632b112e49146105fb578063313ce56714610626576103ad565b80631870517a146104ed5780632198cf6c1461051657806323555d571461053f57806323b872dd1461056a576103ad565b8063095ea7b311610380578063095ea7b314610431578063153b0d1e1461046e5780631694505e1461049757806318160ddd146104c2576103ad565b806306fdde03146103b257806308733214146103dd5780630930907b14610406576103ad565b366103ad57005b600080fd5b3480156103be57600080fd5b506103c7610e8d565b6040516103d49190614fe8565b60405180910390f35b3480156103e957600080fd5b5061040460048036038101906103ff9190614b05565b610f1f565b005b34801561041257600080fd5b5061041b610fff565b6040516104289190614ec9565b60405180910390f35b34801561043d57600080fd5b50610458600480360381019061045391906149d9565b611023565b6040516104659190614fb2565b60405180910390f35b34801561047a57600080fd5b506104956004803603810190610490919061499d565b611041565b005b3480156104a357600080fd5b506104ac611131565b6040516104b99190614fcd565b60405180910390f35b3480156104ce57600080fd5b506104d7611157565b6040516104e491906151aa565b60405180910390f35b3480156104f957600080fd5b50610514600480360381019061050f9190614b05565b611161565b005b34801561052257600080fd5b5061053d6004803603810190610538919061499d565b611241565b005b34801561054b57600080fd5b50610554611331565b60405161056191906151aa565b60405180910390f35b34801561057657600080fd5b50610591600480360381019061058c919061494e565b611337565b60405161059e9190614fb2565b60405180910390f35b3480156105b357600080fd5b506105ce60048036038101906105c99190614a8a565b611411565b005b3480156105dc57600080fd5b506105e56114c3565b6040516105f29190614ec9565b60405180910390f35b34801561060757600080fd5b506106106114e7565b60405161061d91906151aa565b60405180910390f35b34801561063257600080fd5b5061063b611565565b604051610648919061524f565b60405180910390f35b34801561065d57600080fd5b50610678600480360381019061067391906149d9565b61157c565b6040516106859190614fb2565b60405180910390f35b34801561069a57600080fd5b506106b560048036038101906106b09190614adc565b61162f565b005b3480156106c357600080fd5b506106de60048036038101906106d991906148c0565b6116ce565b6040516106eb9190614fb2565b60405180910390f35b34801561070057600080fd5b506107096116ee565b6040516107169190614fb2565b60405180910390f35b34801561072b57600080fd5b50610746600480360381019061074191906148c0565b611701565b005b34801561075457600080fd5b5061075d6117da565b60405161076a91906151aa565b60405180910390f35b34801561077f57600080fd5b5061079a600480360381019061079591906148c0565b6117e0565b6040516107a79190614fb2565b60405180910390f35b3480156107bc57600080fd5b506107d760048036038101906107d291906148c0565b611800565b6040516107e49190614ec9565b60405180910390f35b3480156107f957600080fd5b50610814600480360381019061080f9190614a15565b611ce4565b005b34801561082257600080fd5b5061083d600480360381019061083891906148c0565b6121a3565b60405161084a91906151aa565b60405180910390f35b34801561085f57600080fd5b506108686121ec565b005b34801561087657600080fd5b5061087f612341565b60405161088c9190614ee4565b60405180910390f35b3480156108a157600080fd5b506108aa612367565b6040516108b791906151aa565b60405180910390f35b3480156108cc57600080fd5b506108d561236d565b6040516108e291906151aa565b60405180910390f35b3480156108f757600080fd5b50610900612373565b60405161090d91906151aa565b60405180910390f35b34801561092257600080fd5b5061093d6004803603810190610938919061499d565b612379565b005b34801561094b57600080fd5b50610954612469565b6040516109619190614fb2565b60405180910390f35b34801561097657600080fd5b5061097f61247c565b60405161098c91906151aa565b60405180910390f35b3480156109a157600080fd5b506109bc60048036038101906109b791906148c0565b612482565b6040516109c99190614fb2565b60405180910390f35b3480156109de57600080fd5b506109e76124a2565b6040516109f49190614ec9565b60405180910390f35b348015610a0957600080fd5b50610a126124cb565b604051610a1f9190614fe8565b60405180910390f35b348015610a3457600080fd5b50610a4f6004803603810190610a4a91906149d9565b61255d565b604051610a5c9190614fb2565b60405180910390f35b348015610a7157600080fd5b50610a8c6004803603810190610a879190614a8a565b61262a565b005b348015610a9a57600080fd5b50610ab56004803603810190610ab091906149d9565b6126dc565b604051610ac29190614fb2565b60405180910390f35b348015610ad757600080fd5b50610af26004803603810190610aed9190614a8a565b6126fb565b005b348015610b0057600080fd5b50610b096127e4565b604051610b1691906151aa565b60405180910390f35b348015610b2b57600080fd5b50610b346127ea565b604051610b419190614ec9565b60405180910390f35b348015610b5657600080fd5b50610b5f612810565b604051610b6c91906151aa565b60405180910390f35b348015610b8157600080fd5b50610b9c6004803603810190610b9791906148c0565b612816565b604051610ba99190614fb2565b60405180910390f35b348015610bbe57600080fd5b50610bc7612836565b604051610bd491906151aa565b60405180910390f35b348015610be957600080fd5b50610bf261283c565b604051610bff9190614fb2565b60405180910390f35b348015610c1457600080fd5b50610c1d61284f565b604051610c2a91906151aa565b60405180910390f35b348015610c3f57600080fd5b50610c5a6004803603810190610c559190614912565b612855565b604051610c6791906151aa565b60405180910390f35b348015610c7c57600080fd5b50610c856128dc565b005b348015610c9357600080fd5b50610cae6004803603810190610ca99190614adc565b6129ea565b005b348015610cbc57600080fd5b50610cd76004803603810190610cd29190614a8a565b612a89565b005b348015610ce557600080fd5b50610d006004803603810190610cfb919061499d565b612b3b565b005b348015610d0e57600080fd5b50610d17612c2b565b604051610d2491906151aa565b60405180910390f35b348015610d3957600080fd5b50610d546004803603810190610d4f9190614adc565b612c31565b005b348015610d6257600080fd5b50610d7d6004803603810190610d7891906148c0565b612cd0565b005b348015610d8b57600080fd5b50610da66004803603810190610da191906149d9565b612e92565b005b348015610db457600080fd5b50610dcf6004803603810190610dca919061499d565b612fb9565b005b348015610ddd57600080fd5b50610de66130a9565b604051610df39190614fb2565b60405180910390f35b348015610e0857600080fd5b50610e116130bc565b604051610e1e9190614ee4565b60405180910390f35b348015610e3357600080fd5b50610e4e6004803603810190610e4991906148c0565b6130e2565b604051610e5b9190614fb2565b60405180910390f35b348015610e7057600080fd5b50610e8b6004803603810190610e8691906148c0565b613102565b005b606060018054610e9c906154af565b80601f0160208091040260200160405190810160405280929190818152602001828054610ec8906154af565b8015610f155780601f10610eea57610100808354040283529160200191610f15565b820191906000526020600020905b815481529060010190602001808311610ef857829003601f168201915b5050505050905090565b610f276132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fab9061514a565b60405180910390fd5b82600f819055508160108190555080601181905550610ff4601154610fe6601054600f546132a090919063ffffffff16565b6132a090919063ffffffff16565b601381905550505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006110376110306132fe565b8484613306565b6001905092915050565b6110496132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cd9061514a565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601454905090565b6111696132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ed9061514a565b60405180910390fd5b82600c8190555081600d8190555080600e81905550611236600e54611228600d54600c546132a090919063ffffffff16565b6132a090919063ffffffff16565b601281905550505050565b6112496132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cd9061514a565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600e5481565b60006113448484846134d1565b50611406846113516132fe565b6114018560405180606001604052806028815260200161595660289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006113b76132fe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613be79092919063ffffffff16565b613306565b600190509392505050565b6114196132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149d9061514a565b60405180910390fd5b80601960176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b60006115606115157f00000000000000000000000000000000000000000000000000000000000000006121a3565b6115526115417f000000000000000000000000000000000000000000000000000000000000dead6121a3565b601454613c4b90919063ffffffff16565b613c4b90919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b60006116256115896132fe565b84611620856006600061159a6132fe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a090919063ffffffff16565b613306565b6001905092915050565b6116376132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bb9061514a565b60405180910390fd5b8060158190555050565b60086020528060005260406000206000915054906101000a900460ff1681565b601960159054906101000a900460ff1681565b6117096132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611796576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178d9061514a565b60405180910390fd5b80600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60115481565b60076020528060005260406000206000915054906101000a900460ff1681565b600061180a6132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611897576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188e9061514a565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156118e257600080fd5b505afa1580156118f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191a91906148e9565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561197c57600080fd5b505afa158015611990573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119b491906148e9565b6040518363ffffffff1660e01b81526004016119d1929190614eff565b60206040518083038186803b1580156119e957600080fd5b505afa1580156119fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a2191906148e9565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611be2578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611a9e57600080fd5b505afa158015611ab2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad691906148e9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611b3857600080fd5b505afa158015611b4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b7091906148e9565b6040518363ffffffff1660e01b8152600401611b8d929190614eff565b602060405180830381600087803b158015611ba757600080fd5b505af1158015611bbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bdf91906148e9565b91505b81601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b611cec6132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d709061514a565b60405180910390fd5b6000339050828290508585905014611dc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbd9061512a565b60405180910390fd5b600080600090505b84849050811015611e3957848482818110611e12577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002013582611e2491906152ca565b91508080611e31906154e1565b915050611dce565b5080611e44836121a3565b1015611e85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7c9061502a565b60405180910390fd5b611ed781600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c4b90919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060005b8686905081101561219a57612006858583818110611f64577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020135600560008a8a86818110611fa8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002016020810190611fbd91906148c0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a090919063ffffffff16565b60056000898985818110612043577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b905060200201602081019061205891906148c0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508686828181106120cf577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020160208101906120e491906148c0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87878581811061216b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002013560405161217f91906151aa565b60405180910390a38080612192906154e1565b915050611f1d565b50505050505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6121f46132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612281576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122789061514a565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60165481565b60175481565b60135481565b6123816132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461240e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124059061514a565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601960189054906101000a900460ff1681565b600f5481565b600b6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600280546124da906154af565b80601f0160208091040260200160405190810160405280929190818152602001828054612506906154af565b80156125535780601f1061252857610100808354040283529160200191612553565b820191906000526020600020905b81548152906001019060200180831161253657829003601f168201915b5050505050905090565b600061262061256a6132fe565b8461261b8560405180606001604052806025815260200161597e60259139600660006125946132fe565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613be79092919063ffffffff16565b613306565b6001905092915050565b6126326132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b69061514a565b60405180910390fd5b80601960166101000a81548160ff02191690831515021790555050565b60006126f06126e96132fe565b84846134d1565b506001905092915050565b6127036132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612790576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127879061514a565b60405180910390fd5b80601960156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516127d99190614fb2565b60405180910390a150565b600d5481565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b600a6020528060005260406000206000915054906101000a900460ff1681565b60155481565b601960169054906101000a900460ff1681565b600c5481565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6128e46132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612971576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129689061514a565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff164760405161299790614eb4565b60006040518083038185875af1925050503d80600081146129d4576040519150601f19603f3d011682016040523d82523d6000602084013e6129d9565b606091505b50509050806129e757600080fd5b50565b6129f26132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a769061514a565b60405180910390fd5b8060168190555050565b612a916132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b159061514a565b60405180910390fd5b80601960186101000a81548160ff02191690831515021790555050565b612b436132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc79061514a565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60125481565b612c396132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612cc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cbd9061514a565b60405180910390fd5b8060178190555050565b612cd86132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d5c9061514a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612dd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dcc9061504a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612e9a6132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612f27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f1e9061514a565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401612f62929190614f28565b602060405180830381600087803b158015612f7c57600080fd5b505af1158015612f90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fb49190614ab3565b505050565b612fc16132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461304e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130459061514a565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601960179054906101000a900460ff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60096020528060005260406000206000915054906101000a900460ff1681565b61310a6132fe565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613197576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161318e9061514a565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808314156131ee5760009050613250565b600082846131fc9190615351565b905082848261320b9190615320565b1461324b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132429061510a565b60405180910390fd5b809150505b92915050565b600061329883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613c95565b905092915050565b60008082846132af91906152ca565b9050838110156132f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132eb9061508a565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613376576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161336d9061518a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156133e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133dd9061506a565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516134c491906151aa565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415613542576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135399061516a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156135b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135a99061500a565b60405180910390fd5b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156136565750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b613695576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161368c906150ca565b60405180910390fd5b601960149054906101000a900460ff16156136bc576136b5848484613cf8565b9050613be0565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156137605750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156137785750601960189054906101000a900460ff165b156137c3576016548211156137c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137b9906150ea565b60405180910390fd5b5b60006137ce306121a3565b9050600060155482101590508080156137f45750601960149054906101000a900460ff16155b801561384a5750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156138625750601960159054906101000a900460ff165b1561388c57601960169054906101000a900460ff16156138825760155491505b61388b82613ecb565b5b613915846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613be79092919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806139fb5750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613a0f57613a0a878787614196565b613a11565b845b9050601960179054906101000a900460ff168015613a795750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613ade57601754613a9c82613a8e896121a3565b6132a090919063ffffffff16565b1115613add576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ad4906150aa565b60405180910390fd5b5b613b3081600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a090919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613bd091906151aa565b60405180910390a3600193505050505b9392505050565b6000838311158290613c2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c269190614fe8565b60405180910390fd5b5060008385613c3e91906153ab565b9050809150509392505050565b6000613c8d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613be7565b905092915050565b60008083118290613cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613cd39190614fe8565b60405180910390fd5b5060008385613ceb9190615320565b9050809150509392505050565b6000613d83826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613be79092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e1882600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a090919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613eb891906151aa565b60405180910390a3600190509392505050565b6001601960146101000a81548160ff0219169083151502179055506000613eff6013546012546132a090919063ffffffff16565b90506000613f1a600f54600c546132a090919063ffffffff16565b90506000613f35601054600d546132a090919063ffffffff16565b90506000613f716002613f6386613f55878a6131db90919063ffffffff16565b61325690919063ffffffff16565b61325690919063ffffffff16565b90506000613f888287613c4b90919063ffffffff16565b90506000479050613f98826143bd565b6000613fad8247613c4b90919063ffffffff16565b90506000613fd7613fc860028961325690919063ffffffff16565b89613c4b90919063ffffffff16565b90506000614013600261400584613ff78c886131db90919063ffffffff16565b61325690919063ffffffff16565b61325690919063ffffffff16565b9050600061403c8361402e8a876131db90919063ffffffff16565b61325690919063ffffffff16565b90506000614065826140578588613c4b90919063ffffffff16565b613c4b90919063ffffffff16565b905060008211156140da57600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156140d8573d6000803e3d6000fd5b505b600081111561414d57600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561414b573d6000803e3d6000fd5b505b60008311801561415d5750600088115b1561416d5761416c88846146ba565b5b50505050505050505050506000601960146101000a81548160ff02191690831515021790555050565b60008060009050600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561421e576142176064614209601254866131db90919063ffffffff16565b61325690919063ffffffff16565b905061429c565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561429b57614298606461428a601354866131db90919063ffffffff16565b61325690919063ffffffff16565b90505b5b60008111156143a0576142f781600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132a090919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161439791906151aa565b60405180910390a35b6143b38184613c4b90919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff811115614400577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561442e5781602001602082028036833780820191505090505b509050308160008151811061446c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561450e57600080fd5b505afa158015614522573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061454691906148e9565b81600181518110614580577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506145e730601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613306565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161464b9594939291906151f5565b600060405180830381600087803b15801561466557600080fd5b505af1158015614679573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516146ae9291906151c5565b60405180910390a15050565b6146e730601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613306565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806147336124a2565b426040518863ffffffff1660e01b815260040161475596959493929190614f51565b6060604051808303818588803b15801561476e57600080fd5b505af1158015614782573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906147a79190614b54565b5050505050565b6000813590506147bd81615910565b92915050565b6000815190506147d281615910565b92915050565b60008083601f8401126147ea57600080fd5b8235905067ffffffffffffffff81111561480357600080fd5b60208301915083602082028301111561481b57600080fd5b9250929050565b60008083601f84011261483457600080fd5b8235905067ffffffffffffffff81111561484d57600080fd5b60208301915083602082028301111561486557600080fd5b9250929050565b60008135905061487b81615927565b92915050565b60008151905061489081615927565b92915050565b6000813590506148a58161593e565b92915050565b6000815190506148ba8161593e565b92915050565b6000602082840312156148d257600080fd5b60006148e0848285016147ae565b91505092915050565b6000602082840312156148fb57600080fd5b6000614909848285016147c3565b91505092915050565b6000806040838503121561492557600080fd5b6000614933858286016147ae565b9250506020614944858286016147ae565b9150509250929050565b60008060006060848603121561496357600080fd5b6000614971868287016147ae565b9350506020614982868287016147ae565b925050604061499386828701614896565b9150509250925092565b600080604083850312156149b057600080fd5b60006149be858286016147ae565b92505060206149cf8582860161486c565b9150509250929050565b600080604083850312156149ec57600080fd5b60006149fa858286016147ae565b9250506020614a0b85828601614896565b9150509250929050565b60008060008060408587031215614a2b57600080fd5b600085013567ffffffffffffffff811115614a4557600080fd5b614a51878288016147d8565b9450945050602085013567ffffffffffffffff811115614a7057600080fd5b614a7c87828801614822565b925092505092959194509250565b600060208284031215614a9c57600080fd5b6000614aaa8482850161486c565b91505092915050565b600060208284031215614ac557600080fd5b6000614ad384828501614881565b91505092915050565b600060208284031215614aee57600080fd5b6000614afc84828501614896565b91505092915050565b600080600060608486031215614b1a57600080fd5b6000614b2886828701614896565b9350506020614b3986828701614896565b9250506040614b4a86828701614896565b9150509250925092565b600080600060608486031215614b6957600080fd5b6000614b77868287016148ab565b9350506020614b88868287016148ab565b9250506040614b99868287016148ab565b9150509250925092565b6000614baf8383614bca565b60208301905092915050565b614bc4816153f1565b82525050565b614bd3816153df565b82525050565b614be2816153df565b82525050565b6000614bf38261527a565b614bfd818561529d565b9350614c088361526a565b8060005b83811015614c39578151614c208882614ba3565b9750614c2b83615290565b925050600181019050614c0c565b5085935050505092915050565b614c4f81615403565b82525050565b614c5e81615446565b82525050565b614c6d8161546a565b82525050565b6000614c7e82615285565b614c8881856152b9565b9350614c9881856020860161547c565b614ca1816155b7565b840191505092915050565b6000614cb96023836152b9565b9150614cc4826155c8565b604082019050919050565b6000614cdc601b836152b9565b9150614ce782615617565b602082019050919050565b6000614cff6026836152b9565b9150614d0a82615640565b604082019050919050565b6000614d226022836152b9565b9150614d2d8261568f565b604082019050919050565b6000614d45601b836152b9565b9150614d50826156de565b602082019050919050565b6000614d686025836152b9565b9150614d7382615707565b604082019050919050565b6000614d8b601d836152b9565b9150614d9682615756565b602082019050919050565b6000614dae6028836152b9565b9150614db98261577f565b604082019050919050565b6000614dd16021836152b9565b9150614ddc826157ce565b604082019050919050565b6000614df46016836152b9565b9150614dff8261581d565b602082019050919050565b6000614e176020836152b9565b9150614e2282615846565b602082019050919050565b6000614e3a6025836152b9565b9150614e458261586f565b604082019050919050565b6000614e5d6000836152ae565b9150614e68826158be565b600082019050919050565b6000614e806024836152b9565b9150614e8b826158c1565b604082019050919050565b614e9f8161542f565b82525050565b614eae81615439565b82525050565b6000614ebf82614e50565b9150819050919050565b6000602082019050614ede6000830184614bd9565b92915050565b6000602082019050614ef96000830184614bbb565b92915050565b6000604082019050614f146000830185614bd9565b614f216020830184614bd9565b9392505050565b6000604082019050614f3d6000830185614bd9565b614f4a6020830184614e96565b9392505050565b600060c082019050614f666000830189614bd9565b614f736020830188614e96565b614f806040830187614c64565b614f8d6060830186614c64565b614f9a6080830185614bd9565b614fa760a0830184614e96565b979650505050505050565b6000602082019050614fc76000830184614c46565b92915050565b6000602082019050614fe26000830184614c55565b92915050565b600060208201905081810360008301526150028184614c73565b905092915050565b6000602082019050818103600083015261502381614cac565b9050919050565b6000602082019050818103600083015261504381614ccf565b9050919050565b6000602082019050818103600083015261506381614cf2565b9050919050565b6000602082019050818103600083015261508381614d15565b9050919050565b600060208201905081810360008301526150a381614d38565b9050919050565b600060208201905081810360008301526150c381614d5b565b9050919050565b600060208201905081810360008301526150e381614d7e565b9050919050565b6000602082019050818103600083015261510381614da1565b9050919050565b6000602082019050818103600083015261512381614dc4565b9050919050565b6000602082019050818103600083015261514381614de7565b9050919050565b6000602082019050818103600083015261516381614e0a565b9050919050565b6000602082019050818103600083015261518381614e2d565b9050919050565b600060208201905081810360008301526151a381614e73565b9050919050565b60006020820190506151bf6000830184614e96565b92915050565b60006040820190506151da6000830185614e96565b81810360208301526151ec8184614be8565b90509392505050565b600060a08201905061520a6000830188614e96565b6152176020830187614c64565b81810360408301526152298186614be8565b90506152386060830185614bd9565b6152456080830184614e96565b9695505050505050565b60006020820190506152646000830184614ea5565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006152d58261542f565b91506152e08361542f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156153155761531461552a565b5b828201905092915050565b600061532b8261542f565b91506153368361542f565b92508261534657615345615559565b5b828204905092915050565b600061535c8261542f565b91506153678361542f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156153a05761539f61552a565b5b828202905092915050565b60006153b68261542f565b91506153c18361542f565b9250828210156153d4576153d361552a565b5b828203905092915050565b60006153ea8261540f565b9050919050565b60006153fc8261540f565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061545182615458565b9050919050565b60006154638261540f565b9050919050565b60006154758261542f565b9050919050565b60005b8381101561549a57808201518184015260208101905061547f565b838111156154a9576000848401525b50505050565b600060028204905060018216806154c757607f821691505b602082108114156154db576154da615588565b5b50919050565b60006154ec8261542f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561551f5761551e61552a565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4572726f723a20496e73756666696369656e74204572726f7221210000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f416d6f756e74204578636565642046726f6d204d61782057616c6c6574204c6960008201527f6d69742121000000000000000000000000000000000000000000000000000000602082015250565b7f426f7420456e656d792061646472657373205265737472696374656421000000600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4572726f723a204d69736d61746368204c656e67746800000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b615919816153df565b811461592457600080fd5b50565b61593081615403565b811461593b57600080fd5b50565b6159478161542f565b811461595257600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220100474f1bfb36941ba47672dc525c3ce4ed2e3447a37aa74ba6cf2b258be1b4364736f6c63430008040033

Deployed Bytecode Sourcemap

15264:16351:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19205:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24136:317;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15795:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20371:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22804:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16927:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19482:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23819:309;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21304:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16370:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24730:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21681:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15707:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22640:156;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19391:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19868:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21912:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16069:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17042:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22044:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16504:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16012:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23063:748;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30907:697;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19590:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6941:230;;;;;;;;;;;;;:::i;:::-;;15503:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16781:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16853:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16588:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20885:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17185:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16418:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16229:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6716:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19296:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20094:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22503:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24555:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22324:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16328:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16975:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16461:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16170:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16692:69;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17089:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16286:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19717:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27092:154;;;;;;;;;;;;;:::i;:::-;;21562:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21447:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21022:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16549:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21802:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7179:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26945:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21165:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17143:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15602:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16121:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22184:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19205:83;19242:13;19275:5;19268:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19205:83;:::o;24136:317::-;6860:12;:10;:12::i;:::-;6850:22;;:6;;;;;;;;;;:22;;;6842:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24258:10:::1;24238:17;:30;;;;24299:10;24279:17;:30;;;;24340:10;24320:17;:30;;;;24382:63;24427:17;;24382:40;24404:17;;24382;;:21;;:40;;;;:::i;:::-;:44;;:63;;;;:::i;:::-;24361:18;:84;;;;24136:317:::0;;;:::o;15795:81::-;;;:::o;20371:161::-;20446:4;20463:39;20472:12;:10;:12::i;:::-;20486:7;20495:6;20463:8;:39::i;:::-;20520:4;20513:11;;20371:161;;;;:::o;22804:113::-;6860:12;:10;:12::i;:::-;6850:22;;:6;;;;;;;;;;:22;;;6842:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22902:7:::1;22884:9;:15;22894:4;22884:15;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;22804:113:::0;;:::o;16927:41::-;;;;;;;;;;;;;:::o;19482:100::-;19535:7;19562:12;;19555:19;;19482:100;:::o;23819:309::-;6860:12;:10;:12::i;:::-;6850:22;;:6;;;;;;;;;;:22;;;6842:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23939:10:::1;23920:16;:29;;;;23979:10;23960:16;:29;;;;24019:10;24000:16;:29;;;;24060:60;24103:16;;24060:38;24081:16;;24060;;:20;;:38;;;;:::i;:::-;:42;;:60;;;;:::i;:::-;24040:17;:80;;;;23819:309:::0;;;:::o;21304:135::-;6860:12;:10;:12::i;:::-;6850:22;;:6;;;;;;;;;;:22;;;6842:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21425:6:::1;21395:19;:27;21415:6;21395:27;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;21304:135:::0;;:::o;16370:35::-;;;;:::o;24730:313::-;24828:4;24845:36;24855:6;24863:9;24874:6;24845:9;:36::i;:::-;;24892:121;24901:6;24909:12;:10;:12::i;:::-;24923:89;24961:6;24923:89;;;;;;;;;;;;;;;;;:11;:19;24935:6;24923:19;;;;;;;;;;;;;;;:33;24943:12;:10;:12::i;:::-;24923:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;24892:8;:121::i;:::-;25031:4;25024:11;;24730:313;;;;;:::o;21681:113::-;6860:12;:10;:12::i;:::-;6850:22;;:6;;;;;;;;;;:22;;;6842:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21778:8:::1;21759:16;;:27;;;;;;;;;;;;;;;;;;21681:113:::0;:::o;15707:81::-;;;:::o;22640:156::-;22693:7;22720:68;22765:22;22775:11;22765:9;:22::i;:::-;22720:40;22737:22;22747:11;22737:9;:22::i;:::-;22720:12;;:16;;:40;;;;:::i;:::-;:44;;:68;;;;:::i;:::-;22713:75;;22640:156;:::o;19391:83::-;19432:5;19457:9;;;;;;;;;;;19450:16;;19391:83;:::o;19868:218::-;19956:4;19973:83;19982:12;:10;:12::i;:::-;19996:7;20005:50;20044:10;20005:11;:25;20017:12;:10;:12::i;:::-;20005:25;;;;;;;;;;;;;;;:34;20031:7;20005:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;19973:8;:83::i;:::-;20074:4;20067:11;;19868:218;;;;:::o;21912:124::-;6860:12;:10;:12::i;:::-;6850:22;;:6;;;;;;;;;;:22;;;6842:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22020:8:::1;21994:23;:34;;;;21912:124:::0;:::o;16069:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;17042:40::-;;;;;;;;;;;;;:::o;22044:132::-;6860:12;:10;:12::i;:::-;6850:22;;:6;;;;;;;;;;:22;;;6842:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22157:10:::1;22131:15;;:37;;;;;;;;;;;;;;;;;;22044:132:::0;:::o;16504:36::-;;;;:::o;16012:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;23063:748::-;23143:22;6860:12;:10;:12::i;:::-;6850:22;;:6;;;;;;;;;;:22;;;6842:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23180:35:::1;23237:16;23180:74;;23303:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23285:53;;;23347:4;23354:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23285:93;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23268:110;;23420:1;23394:28;;:14;:28;;;23391:225;;;23508:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23490:74;;;23573:4;23580:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23490:114;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23473:131;;23391:225;23642:14;23628:11;;:28;;;;;;;;;;;;;;;;;;23708:16;23690:15;;:34;;;;;;;;;;;;;;;;;;23799:4;23762:12;:34;23783:11;;;;;;;;;;;23762:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;6920:1;23063:748:::0;;;:::o;30907:697::-;6860:12;:10;:12::i;:::-;6850:22;;:6;;;;;;;;;;:22;;;6842:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;31007:15:::1;31025:10;31007:28;;31073:7;;:14;;31054:8;;:15;;:33;31046:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;31124:15;31154:6:::0;31163:1:::1;31154:10;;31150:92;31170:7;;:14;;31166:1;:18;31150:92;;;31220:7;;31228:1;31220:10;;;;;;;;;;;;;;;;;;;;;31206:24;;;;;:::i;:::-;;;31186:3;;;;;:::i;:::-;;;;31150:92;;;;31282:10;31260:18;31270:7;31260:9;:18::i;:::-;:32;;31252:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;31355:34;31378:10;31355:9;:18;31365:7;31355:18;;;;;;;;;;;;;;;;:22;;:34;;;;:::i;:::-;31334:9;:18;31344:7;31334:18;;;;;;;;;;;;;;;:55;;;;31405:6;31401:194;31421:8;;:15;;31417:1;:19;31401:194;;;31483:38;31510:7;;31518:1;31510:10;;;;;;;;;;;;;;;;;;;;;31483:9;:22;31493:8;;31502:1;31493:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31483:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;31458:9;:22;31468:8;;31477:1;31468:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31458:22;;;;;;;;;;;;;;;:63;;;;31559:8;;31568:1;31559:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31541:42;;31550:7;31541:42;;;31572:7;;31580:1;31572:10;;;;;;;;;;;;;;;;;;;;;31541:42;;;;;;:::i;:::-;;;;;;;;31438:3;;;;;:::i;:::-;;;;31401:194;;;;6920:1;;30907:697:::0;;;;:::o;19590:119::-;19656:7;19683:9;:18;19693:7;19683:18;;;;;;;;;;;;;;;;19676:25;;19590:119;;;:::o;6941:230::-;6860:12;:10;:12::i;:::-;6850:22;;:6;;;;;;;;;;:22;;;6842:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7048:42:::1;7011:81;;7032:6;::::0;::::1;;;;;;;;7011:81;;;;;;;;;;;;7120:42;7103:6;::::0;:60:::1;;;;;;;;;;;;;;;;;;6941:230::o:0;15503:92::-;;;;;;;;;;;;;:::o;16781:59::-;;;;:::o;16853:58::-;;;;:::o;16588:33::-;;;;:::o;20885:129::-;6860:12;:10;:12::i;:::-;6850:22;;:6;;;;;;;;;;:22;;;6842:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20998:8:::1;20974:12;:21;20987:7;20974:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;20885:129:::0;;:::o;17185:41::-;;;;;;;;;;;;;:::o;16418:36::-;;;;:::o;16229:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;6716:79::-;6754:7;6781:6;;;;;;;;;;;6774:13;;6716:79;:::o;19296:87::-;19335:13;19368:7;19361:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19296:87;:::o;20094:269::-;20187:4;20204:129;20213:12;:10;:12::i;:::-;20227:7;20236:96;20275:15;20236:96;;;;;;;;;;;;;;;;;:11;:25;20248:12;:10;:12::i;:::-;20236:25;;;;;;;;;;;;;;;:34;20262:7;20236:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;20204:8;:129::i;:::-;20351:4;20344:11;;20094:269;;;;:::o;22503:125::-;6860:12;:10;:12::i;:::-;6850:22;;:6;;;;;;;;;;:22;;;6842:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22612:8:::1;22584:25;;:36;;;;;;;;;;;;;;;;;;22503:125:::0;:::o;24555:167::-;24633:4;24650:42;24660:12;:10;:12::i;:::-;24674:9;24685:6;24650:9;:42::i;:::-;;24710:4;24703:11;;24555:167;;;;:::o;22324:171::-;6860:12;:10;:12::i;:::-;6850:22;;:6;;;;;;;;;;:22;;;6842:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22425:8:::1;22401:21;;:32;;;;;;;;;;;;;;;;;;22449:38;22478:8;22449:38;;;;;;:::i;:::-;;;;;;;;22324:171:::0;:::o;16328:35::-;;;;:::o;16975:26::-;;;;;;;;;;;;;:::o;16461:36::-;;;;:::o;16170:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;16692:69::-;;;;:::o;17089:45::-;;;;;;;;;;;;;:::o;16286:35::-;;;;:::o;19717:143::-;19798:7;19825:11;:18;19837:5;19825:18;;;;;;;;;;;;;;;:27;19844:7;19825:27;;;;;;;;;;;;;;;;19818:34;;19717:143;;;;:::o;27092:154::-;6860:12;:10;:12::i;:::-;6850:22;;:6;;;;;;;;;;:22;;;6842:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27146:7:::1;27166:10;27158:24;;27190:21;27158:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27145:71;;;27235:2;27227:11;;;::::0;::::1;;6920:1;27092:154::o:0;21562:111::-;6860:12;:10;:12::i;:::-;6850:22;;:6;;;;;;;;;;:22;;;6842:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21654:11:::1;21639:12;:26;;;;21562:111:::0;:::o;21447:107::-;6860:12;:10;:12::i;:::-;6850:22;;:6;;;;;;;;;;:22;;;6842:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21539:7:::1;21514:22;;:32;;;;;;;;;;;;;;;;;;21447:107:::0;:::o;21022:135::-;6860:12;:10;:12::i;:::-;6850:22;;:6;;;;;;;;;;:22;;;6842:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21141:8:::1;21112:17;:26;21130:7;21112:26;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;21022:135:::0;;:::o;16549:32::-;;;;:::o;21802:102::-;6860:12;:10;:12::i;:::-;6850:22;;:6;;;;;;;;;;:22;;;6842:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21888:8:::1;21874:10;:22;;;;21802:102:::0;:::o;7179:244::-;6860:12;:10;:12::i;:::-;6850:22;;:6;;;;;;;;;;:22;;;6842:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7288:1:::1;7268:22;;:8;:22;;;;7260:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;7378:8;7349:38;;7370:6;::::0;::::1;;;;;;;;7349:38;;;;;;;;;;;;7407:8;7398:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;7179:244:::0;:::o;26945:139::-;6860:12;:10;:12::i;:::-;6850:22;;:6;;;;;;;;;;:22;;;6842:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27040:6:::1;27033:23;;;27057:10;27068:7;27033:43;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;26945:139:::0;;:::o;21165:127::-;6860:12;:10;:12::i;:::-;6850:22;;:6;;;;;;;;;;:22;;;6842:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21278:6:::1;21252:15;:23;21268:6;21252:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;21165:127:::0;;:::o;17143:35::-;;;;;;;;;;;;;:::o;15602:92::-;;;;;;;;;;;;;:::o;16121:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;22184:132::-;6860:12;:10;:12::i;:::-;6850:22;;:6;;;;;;;;;;:22;;;6842:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22297:10:::1;22271:15;;:37;;;;;;;;;;;;;;;;;;22184:132:::0;:::o;5401:250::-;5459:7;5488:1;5483;:6;5479:47;;;5513:1;5506:8;;;;5479:47;5538:9;5554:1;5550;:5;;;;:::i;:::-;5538:17;;5583:1;5578;5574;:5;;;;:::i;:::-;:10;5566:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;5642:1;5635:8;;;5401:250;;;;;:::o;5659:132::-;5717:7;5744:39;5748:1;5751;5744:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;5737:46;;5659:132;;;;:::o;4868:181::-;4926:7;4946:9;4962:1;4958;:5;;;;:::i;:::-;4946:17;;4987:1;4982;:6;;4974:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;5040:1;5033:8;;;4868:181;;;;:::o;3926:115::-;3979:15;4022:10;4007:26;;3926:115;:::o;20540:337::-;20650:1;20633:19;;:5;:19;;;;20625:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20731:1;20712:21;;:7;:21;;;;20704:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20815:6;20785:11;:18;20797:5;20785:18;;;;;;;;;;;;;;;:27;20804:7;20785:27;;;;;;;;;;;;;;;:36;;;;20853:7;20837:32;;20846:5;20837:32;;;20862:6;20837:32;;;;;;:::i;:::-;;;;;;;;20540:337;;;:::o;25051:1886::-;25138:4;25183:1;25165:20;;:6;:20;;;;25157:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;25267:1;25246:23;;:9;:23;;;;25238:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;25329:9;:17;25339:6;25329:17;;;;;;;;;;;;;;;;;;;;;;;;;25328:18;:43;;;;;25351:9;:20;25361:9;25351:20;;;;;;;;;;;;;;;;;;;;;;;;;25350:21;25328:43;25320:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;25421:16;;;;;;;;;;;25418:1502;;;25471:41;25486:6;25494:9;25505:6;25471:14;:41::i;:::-;25464:48;;;;25418:1502;25570:15;:23;25586:6;25570:23;;;;;;;;;;;;;;;;;;;;;;;;;25569:24;:55;;;;;25598:15;:26;25614:9;25598:26;;;;;;;;;;;;;;;;;;;;;;;;;25597:27;25569:55;:81;;;;;25628:22;;;;;;;;;;;25569:81;25566:196;;;25689:12;;25679:6;:22;;25671:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;25566:196;25778:28;25809:24;25827:4;25809:9;:24::i;:::-;25778:55;;25848:28;25903:23;;25879:20;:47;;25848:78;;25959:23;:44;;;;;25987:16;;;;;;;;;;;25986:17;25959:44;:69;;;;;26008:12;:20;26021:6;26008:20;;;;;;;;;;;;;;;;;;;;;;;;;26007:21;25959:69;:94;;;;;26032:21;;;;;;;;;;;25959:94;25955:305;;;26091:25;;;;;;;;;;;26088:97;;;26162:23;;26139:46;;26088:97;26204:36;26219:20;26204:14;:36::i;:::-;25955:305;26296:53;26318:6;26296:53;;;;;;;;;;;;;;;;;:9;:17;26306:6;26296:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;26276:9;:17;26286:6;26276:17;;;;;;;;;;;;;;;:73;;;;26366:19;26389:17;:25;26407:6;26389:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;26418:17;:28;26436:9;26418:28;;;;;;;;;;;;;;;;;;;;;;;;;26389:57;26388:148;;26502:34;26510:6;26518:9;26529:6;26502:7;:34::i;:::-;26388:148;;;26493:6;26388:148;26366:170;;26556:16;;;;;;;;;;;:51;;;;;26577:19;:30;26597:9;26577:30;;;;;;;;;;;;;;;;;;;;;;;;;26576:31;26556:51;26553:191;;;26677:10;;26636:37;26661:11;26636:20;26646:9;26636;:20::i;:::-;:24;;:37;;;;:::i;:::-;:51;;26628:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;26553:191;26783:37;26808:11;26783:9;:20;26793:9;26783:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;26760:9;:20;26770:9;26760:20;;;;;;;;;;;;;;;:60;;;;26859:9;26842:40;;26851:6;26842:40;;;26870:11;26842:40;;;;;;:::i;:::-;;;;;;;;26904:4;26897:11;;;;;25051:1886;;;;;;:::o;5201:192::-;5287:7;5320:1;5315;:6;;5323:12;5307:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;5347:9;5363:1;5359;:5;;;;:::i;:::-;5347:17;;5384:1;5377:8;;;5201:192;;;;;:::o;5057:136::-;5115:7;5142:43;5146:1;5149;5142:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;5135:50;;5057:136;;;;:::o;5799:278::-;5885:7;5917:1;5913;:5;5920:12;5905:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;5944:9;5960:1;5956;:5;;;;:::i;:::-;5944:17;;6068:1;6061:8;;;5799:278;;;;;:::o;27254:330::-;27347:4;27384:53;27406:6;27384:53;;;;;;;;;;;;;;;;;:9;:17;27394:6;27384:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;27364:9;:17;27374:6;27364:17;;;;;;;;;;;;;;;:73;;;;27471:32;27496:6;27471:9;:20;27481:9;27471:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;27448:9;:20;27458:9;27448:20;;;;;;;;;;;;;;;:55;;;;27536:9;27519:35;;27528:6;27519:35;;;27547:6;27519:35;;;;;;:::i;:::-;;;;;;;;27572:4;27565:11;;27254:330;;;;;:::o;27592:1449::-;17670:4;17651:16;;:23;;;;;;;;;;;;;;;;;;27666:19:::1;27688:41;27710:18;;27688:17;;:21;;:41;;;;:::i;:::-;27666:63;;27742:22;27767:39;27788:17;;27767:16;;:20;;:39;;;;:::i;:::-;27742:64;;27817:22;27842:39;27863:17;;27842:16;;:20;;:39;;;;:::i;:::-;27817:64;;27980:18;28001:51;28050:1;28001:44;28033:11;28001:27;28013:14;28001:7;:11;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;:48;;:51;;;;:::i;:::-;27980:72;;28063:20;28086:23;28098:10;28086:7;:11;;:23;;;;:::i;:::-;28063:46;;28122:22;28148:21;28122:47;;28180:30;28197:12;28180:16;:30::i;:::-;28221:23;28248:41;28274:14;28248:21;:25;;:41;;;;:::i;:::-;28221:68;;28302:19;28324:38;28340:21;28359:1;28340:14;:18;;:21;;;;:::i;:::-;28324:11;:15;;:38;;;;:::i;:::-;28302:60;;28375:26;28404:59;28461:1;28404:52;28444:11;28404:35;28424:14;28404:15;:19;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;28375:88;;28474:26;28503:52;28543:11;28503:35;28523:14;28503:15;:19;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;28474:81;;28566:26;28595:63;28639:18;28595:39;28615:18;28595:15;:19;;:39;;;;:::i;:::-;:43;;:63;;;;:::i;:::-;28566:92;;28695:1;28674:18;:22;28671:107;;;28721:15;;;;;;;;;;;28713:33;;:53;28747:18;28713:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;28671:107;28814:1;28793:18;:22;28790:107;;;28840:15;;;;;;;;;;;28832:33;;:53;28866:18;28832:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;28790:107;28942:1;28921:18;:22;:40;;;;;28960:1;28947:10;:14;28921:40;28918:116;;;28978:44;28991:10;29003:18;28978:12;:44::i;:::-;28918:116;17685:1;;;;;;;;;;;17716:5:::0;17697:16;;:24;;;;;;;;;;;;;;;;;;27592:1449;:::o;30248:622::-;30334:7;30364:17;30384:1;30364:21;;30409:12;:20;30422:6;30409:20;;;;;;;;;;;;;;;;;;;;;;;;;30406:223;;;30458:38;30492:3;30458:29;30469:17;;30458:6;:10;;:29;;;;:::i;:::-;:33;;:38;;;;:::i;:::-;30446:50;;30406:223;;;30526:12;:23;30539:9;30526:23;;;;;;;;;;;;;;;;;;;;;;;;;30523:106;;;30578:39;30613:3;30578:30;30589:18;;30578:6;:10;;:30;;;;:::i;:::-;:34;;:39;;;;:::i;:::-;30566:51;;30523:106;30406:223;30664:1;30652:9;:13;30649:173;;;30709:39;30738:9;30709;:24;30727:4;30709:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;30682:9;:24;30700:4;30682:24;;;;;;;;;;;;;;;:66;;;;30793:4;30768:42;;30777:6;30768:42;;;30800:9;30768:42;;;;;;:::i;:::-;;;;;;;;30649:173;30841:21;30852:9;30841:6;:10;;:21;;;;:::i;:::-;30834:28;;;30248:622;;;;;:::o;29053:666::-;29179:21;29217:1;29203:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29179:40;;29248:4;29230;29235:1;29230:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;29274:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29264:4;29269:1;29264:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;29309:62;29326:4;29341:15;;;;;;;;;;;29359:11;29309:8;:62::i;:::-;29410:15;;;;;;;;;;;:66;;;29491:11;29517:1;29561:4;29588;29624:15;29410:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29676:35;29693:11;29706:4;29676:35;;;;;;;:::i;:::-;;;;;;;;29053:666;;:::o;29727:513::-;29875:62;29892:4;29907:15;;;;;;;;;;;29925:11;29875:8;:62::i;:::-;29980:15;;;;;;;;;;;:31;;;30019:9;30052:4;30072:11;30098:1;30141;30184:7;:5;:7::i;:::-;30206:15;29980:252;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;29727:513;;:::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;318:367::-;391:8;401:6;451:3;444:4;436:6;432:17;428:27;418:2;;469:1;466;459:12;418:2;505:6;492:20;482:30;;535:18;527:6;524:30;521:2;;;567:1;564;557:12;521:2;604:4;596:6;592:17;580:29;;658:3;650:4;642:6;638:17;628:8;624:32;621:41;618:2;;;675:1;672;665:12;618:2;408:277;;;;;:::o;708:367::-;781:8;791:6;841:3;834:4;826:6;822:17;818:27;808:2;;859:1;856;849:12;808:2;895:6;882:20;872:30;;925:18;917:6;914:30;911:2;;;957:1;954;947:12;911:2;994:4;986:6;982:17;970:29;;1048:3;1040:4;1032:6;1028:17;1018:8;1014:32;1011:41;1008:2;;;1065:1;1062;1055:12;1008:2;798:277;;;;;:::o;1081:133::-;1124:5;1162:6;1149:20;1140:29;;1178:30;1202:5;1178:30;:::i;:::-;1130:84;;;;:::o;1220:137::-;1274:5;1305:6;1299:13;1290:22;;1321:30;1345:5;1321:30;:::i;:::-;1280:77;;;;:::o;1363:139::-;1409:5;1447:6;1434:20;1425:29;;1463:33;1490:5;1463:33;:::i;:::-;1415:87;;;;:::o;1508:143::-;1565:5;1596:6;1590:13;1581:22;;1612:33;1639:5;1612:33;:::i;:::-;1571:80;;;;:::o;1657:262::-;1716:6;1765:2;1753:9;1744:7;1740:23;1736:32;1733:2;;;1781:1;1778;1771:12;1733:2;1824:1;1849:53;1894:7;1885:6;1874:9;1870:22;1849:53;:::i;:::-;1839:63;;1795:117;1723:196;;;;:::o;1925:284::-;1995:6;2044:2;2032:9;2023:7;2019:23;2015:32;2012:2;;;2060:1;2057;2050:12;2012:2;2103:1;2128:64;2184:7;2175:6;2164:9;2160:22;2128:64;:::i;:::-;2118:74;;2074:128;2002:207;;;;:::o;2215:407::-;2283:6;2291;2340:2;2328:9;2319:7;2315:23;2311:32;2308:2;;;2356:1;2353;2346:12;2308:2;2399:1;2424:53;2469:7;2460:6;2449:9;2445:22;2424:53;:::i;:::-;2414:63;;2370:117;2526:2;2552:53;2597:7;2588:6;2577:9;2573:22;2552:53;:::i;:::-;2542:63;;2497:118;2298:324;;;;;:::o;2628:552::-;2705:6;2713;2721;2770:2;2758:9;2749:7;2745:23;2741:32;2738:2;;;2786:1;2783;2776:12;2738:2;2829:1;2854:53;2899:7;2890:6;2879:9;2875:22;2854:53;:::i;:::-;2844:63;;2800:117;2956:2;2982:53;3027:7;3018:6;3007:9;3003:22;2982:53;:::i;:::-;2972:63;;2927:118;3084:2;3110:53;3155:7;3146:6;3135:9;3131:22;3110:53;:::i;:::-;3100:63;;3055:118;2728:452;;;;;:::o;3186:401::-;3251:6;3259;3308:2;3296:9;3287:7;3283:23;3279:32;3276:2;;;3324:1;3321;3314:12;3276:2;3367:1;3392:53;3437:7;3428:6;3417:9;3413:22;3392:53;:::i;:::-;3382:63;;3338:117;3494:2;3520:50;3562:7;3553:6;3542:9;3538:22;3520:50;:::i;:::-;3510:60;;3465:115;3266:321;;;;;:::o;3593:407::-;3661:6;3669;3718:2;3706:9;3697:7;3693:23;3689:32;3686:2;;;3734:1;3731;3724:12;3686:2;3777:1;3802:53;3847:7;3838:6;3827:9;3823:22;3802:53;:::i;:::-;3792:63;;3748:117;3904:2;3930:53;3975:7;3966:6;3955:9;3951:22;3930:53;:::i;:::-;3920:63;;3875:118;3676:324;;;;;:::o;4006:733::-;4128:6;4136;4144;4152;4201:2;4189:9;4180:7;4176:23;4172:32;4169:2;;;4217:1;4214;4207:12;4169:2;4288:1;4277:9;4273:17;4260:31;4318:18;4310:6;4307:30;4304:2;;;4350:1;4347;4340:12;4304:2;4386:80;4458:7;4449:6;4438:9;4434:22;4386:80;:::i;:::-;4368:98;;;;4231:245;4543:2;4532:9;4528:18;4515:32;4574:18;4566:6;4563:30;4560:2;;;4606:1;4603;4596:12;4560:2;4642:80;4714:7;4705:6;4694:9;4690:22;4642:80;:::i;:::-;4624:98;;;;4486:246;4159:580;;;;;;;:::o;4745:256::-;4801:6;4850:2;4838:9;4829:7;4825:23;4821:32;4818:2;;;4866:1;4863;4856:12;4818:2;4909:1;4934:50;4976:7;4967:6;4956:9;4952:22;4934:50;:::i;:::-;4924:60;;4880:114;4808:193;;;;:::o;5007:278::-;5074:6;5123:2;5111:9;5102:7;5098:23;5094:32;5091:2;;;5139:1;5136;5129:12;5091:2;5182:1;5207:61;5260:7;5251:6;5240:9;5236:22;5207:61;:::i;:::-;5197:71;;5153:125;5081:204;;;;:::o;5291:262::-;5350:6;5399:2;5387:9;5378:7;5374:23;5370:32;5367:2;;;5415:1;5412;5405:12;5367:2;5458:1;5483:53;5528:7;5519:6;5508:9;5504:22;5483:53;:::i;:::-;5473:63;;5429:117;5357:196;;;;:::o;5559:552::-;5636:6;5644;5652;5701:2;5689:9;5680:7;5676:23;5672:32;5669:2;;;5717:1;5714;5707:12;5669:2;5760:1;5785:53;5830:7;5821:6;5810:9;5806:22;5785:53;:::i;:::-;5775:63;;5731:117;5887:2;5913:53;5958:7;5949:6;5938:9;5934:22;5913:53;:::i;:::-;5903:63;;5858:118;6015:2;6041:53;6086:7;6077:6;6066:9;6062:22;6041:53;:::i;:::-;6031:63;;5986:118;5659:452;;;;;:::o;6117:596::-;6205:6;6213;6221;6270:2;6258:9;6249:7;6245:23;6241:32;6238:2;;;6286:1;6283;6276:12;6238:2;6329:1;6354:64;6410:7;6401:6;6390:9;6386:22;6354:64;:::i;:::-;6344:74;;6300:128;6467:2;6493:64;6549:7;6540:6;6529:9;6525:22;6493:64;:::i;:::-;6483:74;;6438:129;6606:2;6632:64;6688:7;6679:6;6668:9;6664:22;6632:64;:::i;:::-;6622:74;;6577:129;6228:485;;;;;:::o;6719:179::-;6788:10;6809:46;6851:3;6843:6;6809:46;:::i;:::-;6887:4;6882:3;6878:14;6864:28;;6799:99;;;;:::o;6904:142::-;7007:32;7033:5;7007:32;:::i;:::-;7002:3;6995:45;6985:61;;:::o;7052:108::-;7129:24;7147:5;7129:24;:::i;:::-;7124:3;7117:37;7107:53;;:::o;7166:118::-;7253:24;7271:5;7253:24;:::i;:::-;7248:3;7241:37;7231:53;;:::o;7320:732::-;7439:3;7468:54;7516:5;7468:54;:::i;:::-;7538:86;7617:6;7612:3;7538:86;:::i;:::-;7531:93;;7648:56;7698:5;7648:56;:::i;:::-;7727:7;7758:1;7743:284;7768:6;7765:1;7762:13;7743:284;;;7844:6;7838:13;7871:63;7930:3;7915:13;7871:63;:::i;:::-;7864:70;;7957:60;8010:6;7957:60;:::i;:::-;7947:70;;7803:224;7790:1;7787;7783:9;7778:14;;7743:284;;;7747:14;8043:3;8036:10;;7444:608;;;;;;;:::o;8058:109::-;8139:21;8154:5;8139:21;:::i;:::-;8134:3;8127:34;8117:50;;:::o;8173:185::-;8287:64;8345:5;8287:64;:::i;:::-;8282:3;8275:77;8265:93;;:::o;8364:147::-;8459:45;8498:5;8459:45;:::i;:::-;8454:3;8447:58;8437:74;;:::o;8517:364::-;8605:3;8633:39;8666:5;8633:39;:::i;:::-;8688:71;8752:6;8747:3;8688:71;:::i;:::-;8681:78;;8768:52;8813:6;8808:3;8801:4;8794:5;8790:16;8768:52;:::i;:::-;8845:29;8867:6;8845:29;:::i;:::-;8840:3;8836:39;8829:46;;8609:272;;;;;:::o;8887:366::-;9029:3;9050:67;9114:2;9109:3;9050:67;:::i;:::-;9043:74;;9126:93;9215:3;9126:93;:::i;:::-;9244:2;9239:3;9235:12;9228:19;;9033:220;;;:::o;9259:366::-;9401:3;9422:67;9486:2;9481:3;9422:67;:::i;:::-;9415:74;;9498:93;9587:3;9498:93;:::i;:::-;9616:2;9611:3;9607:12;9600:19;;9405:220;;;:::o;9631:366::-;9773:3;9794:67;9858:2;9853:3;9794:67;:::i;:::-;9787:74;;9870:93;9959:3;9870:93;:::i;:::-;9988:2;9983:3;9979:12;9972:19;;9777:220;;;:::o;10003:366::-;10145:3;10166:67;10230:2;10225:3;10166:67;:::i;:::-;10159:74;;10242:93;10331:3;10242:93;:::i;:::-;10360:2;10355:3;10351:12;10344:19;;10149:220;;;:::o;10375:366::-;10517:3;10538:67;10602:2;10597:3;10538:67;:::i;:::-;10531:74;;10614:93;10703:3;10614:93;:::i;:::-;10732:2;10727:3;10723:12;10716:19;;10521:220;;;:::o;10747:366::-;10889:3;10910:67;10974:2;10969:3;10910:67;:::i;:::-;10903:74;;10986:93;11075:3;10986:93;:::i;:::-;11104:2;11099:3;11095:12;11088:19;;10893:220;;;:::o;11119:366::-;11261:3;11282:67;11346:2;11341:3;11282:67;:::i;:::-;11275:74;;11358:93;11447:3;11358:93;:::i;:::-;11476:2;11471:3;11467:12;11460:19;;11265:220;;;:::o;11491:366::-;11633:3;11654:67;11718:2;11713:3;11654:67;:::i;:::-;11647:74;;11730:93;11819:3;11730:93;:::i;:::-;11848:2;11843:3;11839:12;11832:19;;11637:220;;;:::o;11863:366::-;12005:3;12026:67;12090:2;12085:3;12026:67;:::i;:::-;12019:74;;12102:93;12191:3;12102:93;:::i;:::-;12220:2;12215:3;12211:12;12204:19;;12009:220;;;:::o;12235:366::-;12377:3;12398:67;12462:2;12457:3;12398:67;:::i;:::-;12391:74;;12474:93;12563:3;12474:93;:::i;:::-;12592:2;12587:3;12583:12;12576:19;;12381:220;;;:::o;12607:366::-;12749:3;12770:67;12834:2;12829:3;12770:67;:::i;:::-;12763:74;;12846:93;12935:3;12846:93;:::i;:::-;12964:2;12959:3;12955:12;12948:19;;12753:220;;;:::o;12979:366::-;13121:3;13142:67;13206:2;13201:3;13142:67;:::i;:::-;13135:74;;13218:93;13307:3;13218:93;:::i;:::-;13336:2;13331:3;13327:12;13320:19;;13125:220;;;:::o;13351:398::-;13510:3;13531:83;13612:1;13607:3;13531:83;:::i;:::-;13524:90;;13623:93;13712:3;13623:93;:::i;:::-;13741:1;13736:3;13732:11;13725:18;;13514:235;;;:::o;13755:366::-;13897:3;13918:67;13982:2;13977:3;13918:67;:::i;:::-;13911:74;;13994:93;14083:3;13994:93;:::i;:::-;14112:2;14107:3;14103:12;14096:19;;13901:220;;;:::o;14127:118::-;14214:24;14232:5;14214:24;:::i;:::-;14209:3;14202:37;14192:53;;:::o;14251:112::-;14334:22;14350:5;14334:22;:::i;:::-;14329:3;14322:35;14312:51;;:::o;14369:379::-;14553:3;14575:147;14718:3;14575:147;:::i;:::-;14568:154;;14739:3;14732:10;;14557:191;;;:::o;14754:222::-;14847:4;14885:2;14874:9;14870:18;14862:26;;14898:71;14966:1;14955:9;14951:17;14942:6;14898:71;:::i;:::-;14852:124;;;;:::o;14982:254::-;15091:4;15129:2;15118:9;15114:18;15106:26;;15142:87;15226:1;15215:9;15211:17;15202:6;15142:87;:::i;:::-;15096:140;;;;:::o;15242:332::-;15363:4;15401:2;15390:9;15386:18;15378:26;;15414:71;15482:1;15471:9;15467:17;15458:6;15414:71;:::i;:::-;15495:72;15563:2;15552:9;15548:18;15539:6;15495:72;:::i;:::-;15368:206;;;;;:::o;15580:332::-;15701:4;15739:2;15728:9;15724:18;15716:26;;15752:71;15820:1;15809:9;15805:17;15796:6;15752:71;:::i;:::-;15833:72;15901:2;15890:9;15886:18;15877:6;15833:72;:::i;:::-;15706:206;;;;;:::o;15918:807::-;16167:4;16205:3;16194:9;16190:19;16182:27;;16219:71;16287:1;16276:9;16272:17;16263:6;16219:71;:::i;:::-;16300:72;16368:2;16357:9;16353:18;16344:6;16300:72;:::i;:::-;16382:80;16458:2;16447:9;16443:18;16434:6;16382:80;:::i;:::-;16472;16548:2;16537:9;16533:18;16524:6;16472:80;:::i;:::-;16562:73;16630:3;16619:9;16615:19;16606:6;16562:73;:::i;:::-;16645;16713:3;16702:9;16698:19;16689:6;16645:73;:::i;:::-;16172:553;;;;;;;;;:::o;16731:210::-;16818:4;16856:2;16845:9;16841:18;16833:26;;16869:65;16931:1;16920:9;16916:17;16907:6;16869:65;:::i;:::-;16823:118;;;;:::o;16947:276::-;17067:4;17105:2;17094:9;17090:18;17082:26;;17118:98;17213:1;17202:9;17198:17;17189:6;17118:98;:::i;:::-;17072:151;;;;:::o;17229:313::-;17342:4;17380:2;17369:9;17365:18;17357:26;;17429:9;17423:4;17419:20;17415:1;17404:9;17400:17;17393:47;17457:78;17530:4;17521:6;17457:78;:::i;:::-;17449:86;;17347:195;;;;:::o;17548:419::-;17714:4;17752:2;17741:9;17737:18;17729:26;;17801:9;17795:4;17791:20;17787:1;17776:9;17772:17;17765:47;17829:131;17955:4;17829:131;:::i;:::-;17821:139;;17719:248;;;:::o;17973:419::-;18139:4;18177:2;18166:9;18162:18;18154:26;;18226:9;18220:4;18216:20;18212:1;18201:9;18197:17;18190:47;18254:131;18380:4;18254:131;:::i;:::-;18246:139;;18144:248;;;:::o;18398:419::-;18564:4;18602:2;18591:9;18587:18;18579:26;;18651:9;18645:4;18641:20;18637:1;18626:9;18622:17;18615:47;18679:131;18805:4;18679:131;:::i;:::-;18671:139;;18569:248;;;:::o;18823:419::-;18989:4;19027:2;19016:9;19012:18;19004:26;;19076:9;19070:4;19066:20;19062:1;19051:9;19047:17;19040:47;19104:131;19230:4;19104:131;:::i;:::-;19096:139;;18994:248;;;:::o;19248:419::-;19414:4;19452:2;19441:9;19437:18;19429:26;;19501:9;19495:4;19491:20;19487:1;19476:9;19472:17;19465:47;19529:131;19655:4;19529:131;:::i;:::-;19521:139;;19419:248;;;:::o;19673:419::-;19839:4;19877:2;19866:9;19862:18;19854:26;;19926:9;19920:4;19916:20;19912:1;19901:9;19897:17;19890:47;19954:131;20080:4;19954:131;:::i;:::-;19946:139;;19844:248;;;:::o;20098:419::-;20264:4;20302:2;20291:9;20287:18;20279:26;;20351:9;20345:4;20341:20;20337:1;20326:9;20322:17;20315:47;20379:131;20505:4;20379:131;:::i;:::-;20371:139;;20269:248;;;:::o;20523:419::-;20689:4;20727:2;20716:9;20712:18;20704:26;;20776:9;20770:4;20766:20;20762:1;20751:9;20747:17;20740:47;20804:131;20930:4;20804:131;:::i;:::-;20796:139;;20694:248;;;:::o;20948:419::-;21114:4;21152:2;21141:9;21137:18;21129:26;;21201:9;21195:4;21191:20;21187:1;21176:9;21172:17;21165:47;21229:131;21355:4;21229:131;:::i;:::-;21221:139;;21119:248;;;:::o;21373:419::-;21539:4;21577:2;21566:9;21562:18;21554:26;;21626:9;21620:4;21616:20;21612:1;21601:9;21597:17;21590:47;21654:131;21780:4;21654:131;:::i;:::-;21646:139;;21544:248;;;:::o;21798:419::-;21964:4;22002:2;21991:9;21987:18;21979:26;;22051:9;22045:4;22041:20;22037:1;22026:9;22022:17;22015:47;22079:131;22205:4;22079:131;:::i;:::-;22071:139;;21969:248;;;:::o;22223:419::-;22389:4;22427:2;22416:9;22412:18;22404:26;;22476:9;22470:4;22466:20;22462:1;22451:9;22447:17;22440:47;22504:131;22630:4;22504:131;:::i;:::-;22496:139;;22394:248;;;:::o;22648:419::-;22814:4;22852:2;22841:9;22837:18;22829:26;;22901:9;22895:4;22891:20;22887:1;22876:9;22872:17;22865:47;22929:131;23055:4;22929:131;:::i;:::-;22921:139;;22819:248;;;:::o;23073:222::-;23166:4;23204:2;23193:9;23189:18;23181:26;;23217:71;23285:1;23274:9;23270:17;23261:6;23217:71;:::i;:::-;23171:124;;;;:::o;23301:483::-;23472:4;23510:2;23499:9;23495:18;23487:26;;23523:71;23591:1;23580:9;23576:17;23567:6;23523:71;:::i;:::-;23641:9;23635:4;23631:20;23626:2;23615:9;23611:18;23604:48;23669:108;23772:4;23763:6;23669:108;:::i;:::-;23661:116;;23477:307;;;;;:::o;23790:831::-;24053:4;24091:3;24080:9;24076:19;24068:27;;24105:71;24173:1;24162:9;24158:17;24149:6;24105:71;:::i;:::-;24186:80;24262:2;24251:9;24247:18;24238:6;24186:80;:::i;:::-;24313:9;24307:4;24303:20;24298:2;24287:9;24283:18;24276:48;24341:108;24444:4;24435:6;24341:108;:::i;:::-;24333:116;;24459:72;24527:2;24516:9;24512:18;24503:6;24459:72;:::i;:::-;24541:73;24609:3;24598:9;24594:19;24585:6;24541:73;:::i;:::-;24058:563;;;;;;;;:::o;24627:214::-;24716:4;24754:2;24743:9;24739:18;24731:26;;24767:67;24831:1;24820:9;24816:17;24807:6;24767:67;:::i;:::-;24721:120;;;;:::o;24847:132::-;24914:4;24937:3;24929:11;;24967:4;24962:3;24958:14;24950:22;;24919:60;;;:::o;24985:114::-;25052:6;25086:5;25080:12;25070:22;;25059:40;;;:::o;25105:99::-;25157:6;25191:5;25185:12;25175:22;;25164:40;;;:::o;25210:113::-;25280:4;25312;25307:3;25303:14;25295:22;;25285:38;;;:::o;25329:184::-;25428:11;25462:6;25457:3;25450:19;25502:4;25497:3;25493:14;25478:29;;25440:73;;;;:::o;25519:147::-;25620:11;25657:3;25642:18;;25632:34;;;;:::o;25672:169::-;25756:11;25790:6;25785:3;25778:19;25830:4;25825:3;25821:14;25806:29;;25768:73;;;;:::o;25847:305::-;25887:3;25906:20;25924:1;25906:20;:::i;:::-;25901:25;;25940:20;25958:1;25940:20;:::i;:::-;25935:25;;26094:1;26026:66;26022:74;26019:1;26016:81;26013:2;;;26100:18;;:::i;:::-;26013:2;26144:1;26141;26137:9;26130:16;;25891:261;;;;:::o;26158:185::-;26198:1;26215:20;26233:1;26215:20;:::i;:::-;26210:25;;26249:20;26267:1;26249:20;:::i;:::-;26244:25;;26288:1;26278:2;;26293:18;;:::i;:::-;26278:2;26335:1;26332;26328:9;26323:14;;26200:143;;;;:::o;26349:348::-;26389:7;26412:20;26430:1;26412:20;:::i;:::-;26407:25;;26446:20;26464:1;26446:20;:::i;:::-;26441:25;;26634:1;26566:66;26562:74;26559:1;26556:81;26551:1;26544:9;26537:17;26533:105;26530:2;;;26641:18;;:::i;:::-;26530:2;26689:1;26686;26682:9;26671:20;;26397:300;;;;:::o;26703:191::-;26743:4;26763:20;26781:1;26763:20;:::i;:::-;26758:25;;26797:20;26815:1;26797:20;:::i;:::-;26792:25;;26836:1;26833;26830:8;26827:2;;;26841:18;;:::i;:::-;26827:2;26886:1;26883;26879:9;26871:17;;26748:146;;;;:::o;26900:96::-;26937:7;26966:24;26984:5;26966:24;:::i;:::-;26955:35;;26945:51;;;:::o;27002:104::-;27047:7;27076:24;27094:5;27076:24;:::i;:::-;27065:35;;27055:51;;;:::o;27112:90::-;27146:7;27189:5;27182:13;27175:21;27164:32;;27154:48;;;:::o;27208:126::-;27245:7;27285:42;27278:5;27274:54;27263:65;;27253:81;;;:::o;27340:77::-;27377:7;27406:5;27395:16;;27385:32;;;:::o;27423:86::-;27458:7;27498:4;27491:5;27487:16;27476:27;;27466:43;;;:::o;27515:180::-;27592:9;27625:64;27683:5;27625:64;:::i;:::-;27612:77;;27602:93;;;:::o;27701:140::-;27778:9;27811:24;27829:5;27811:24;:::i;:::-;27798:37;;27788:53;;;:::o;27847:121::-;27905:9;27938:24;27956:5;27938:24;:::i;:::-;27925:37;;27915:53;;;:::o;27974:307::-;28042:1;28052:113;28066:6;28063:1;28060:13;28052:113;;;28151:1;28146:3;28142:11;28136:18;28132:1;28127:3;28123:11;28116:39;28088:2;28085:1;28081:10;28076:15;;28052:113;;;28183:6;28180:1;28177:13;28174:2;;;28263:1;28254:6;28249:3;28245:16;28238:27;28174:2;28023:258;;;;:::o;28287:320::-;28331:6;28368:1;28362:4;28358:12;28348:22;;28415:1;28409:4;28405:12;28436:18;28426:2;;28492:4;28484:6;28480:17;28470:27;;28426:2;28554;28546:6;28543:14;28523:18;28520:38;28517:2;;;28573:18;;:::i;:::-;28517:2;28338:269;;;;:::o;28613:233::-;28652:3;28675:24;28693:5;28675:24;:::i;:::-;28666:33;;28721:66;28714:5;28711:77;28708:2;;;28791:18;;:::i;:::-;28708:2;28838:1;28831:5;28827:13;28820:20;;28656:190;;;:::o;28852:180::-;28900:77;28897:1;28890:88;28997:4;28994:1;28987:15;29021:4;29018:1;29011:15;29038:180;29086:77;29083:1;29076:88;29183:4;29180:1;29173:15;29207:4;29204:1;29197:15;29224:180;29272:77;29269:1;29262:88;29369:4;29366:1;29359:15;29393:4;29390:1;29383:15;29410:102;29451:6;29502:2;29498:7;29493:2;29486:5;29482:14;29478:28;29468:38;;29458:54;;;:::o;29518:222::-;29658:34;29654:1;29646:6;29642:14;29635:58;29727:5;29722:2;29714:6;29710:15;29703:30;29624:116;:::o;29746:177::-;29886:29;29882:1;29874:6;29870:14;29863:53;29852:71;:::o;29929:225::-;30069:34;30065:1;30057:6;30053:14;30046:58;30138:8;30133:2;30125:6;30121:15;30114:33;30035:119;:::o;30160:221::-;30300:34;30296:1;30288:6;30284:14;30277:58;30369:4;30364:2;30356:6;30352:15;30345:29;30266:115;:::o;30387:177::-;30527:29;30523:1;30515:6;30511:14;30504:53;30493:71;:::o;30570:224::-;30710:34;30706:1;30698:6;30694:14;30687:58;30779:7;30774:2;30766:6;30762:15;30755:32;30676:118;:::o;30800:179::-;30940:31;30936:1;30928:6;30924:14;30917:55;30906:73;:::o;30985:227::-;31125:34;31121:1;31113:6;31109:14;31102:58;31194:10;31189:2;31181:6;31177:15;31170:35;31091:121;:::o;31218:220::-;31358:34;31354:1;31346:6;31342:14;31335:58;31427:3;31422:2;31414:6;31410:15;31403:28;31324:114;:::o;31444:172::-;31584:24;31580:1;31572:6;31568:14;31561:48;31550:66;:::o;31622:182::-;31762:34;31758:1;31750:6;31746:14;31739:58;31728:76;:::o;31810:224::-;31950:34;31946:1;31938:6;31934:14;31927:58;32019:7;32014:2;32006:6;32002:15;31995:32;31916:118;:::o;32040:114::-;32146:8;:::o;32160:223::-;32300:34;32296:1;32288:6;32284:14;32277:58;32369:6;32364:2;32356:6;32352:15;32345:31;32266:117;:::o;32389:122::-;32462:24;32480:5;32462:24;:::i;:::-;32455:5;32452:35;32442:2;;32501:1;32498;32491:12;32442:2;32432:79;:::o;32517:116::-;32587:21;32602:5;32587:21;:::i;:::-;32580:5;32577:32;32567:2;;32623:1;32620;32613:12;32567:2;32557:76;:::o;32639:122::-;32712:24;32730:5;32712:24;:::i;:::-;32705:5;32702:35;32692:2;;32751:1;32748;32741:12;32692:2;32682:79;:::o

Swarm Source

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