ETH Price: $3,497.12 (+2.35%)
Gas: 12 Gwei

Token

Proof Of Knowledge ($PoK)
 

Overview

Max Total Supply

1,000,000 $PoK

Holders

127

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
Uniswap V2: $PoK 2
Balance
53,106.745019689 $PoK

Value
$0.00
0x5b5ae7d81bd6c71a2a3c04cf463f09ceefe1070c
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:
Token

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-06-18
*/

// SPDX-License-Identifier: MIT

//Website: Https://Nordahub.com
//TG: https://t.me/projectfeenix
//X: https://x.com/projectfeenix
//Facebook: https://www.facebook.com/search/top?q=nordahub
//App: Https://Nordahub.io
pragma solidity 0.8.17;

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

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

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 Mint(address indexed sender, uint amount0, uint amount1);
    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 mint(address to) external returns (uint liquidity);
    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 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 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);
}

interface IERC20Metadata is IERC20 {

    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

library SafeMath {

    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
         if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    } 
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }
    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}


library SafeMathInt {
    int256 private constant MIN_INT256 = int256(1) << 255;
    int256 private constant MAX_INT256 = ~(int256(1) << 255);

    function mul(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a * b;

        // Detect overflow when multiplying MIN_INT256 with -1
        require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256));
        require((b == 0) || (c / b == a));
        return c;
    }

    function div(int256 a, int256 b) internal pure returns (int256) {
        // Prevent overflow when dividing MIN_INT256 by -1
        require(b != -1 || a != MIN_INT256);

        // Solidity already throws when dividing by 0.
        return a / b;
    }

    function sub(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a - b;
        require((b >= 0 && c <= a) || (b < 0 && c > a));
        return c;
    }

    function add(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a + b;
        require((b >= 0 && c >= a) || (b < 0 && c < a));
        return c;
    }

    function abs(int256 a) internal pure returns (int256) {
        require(a != MIN_INT256);
        return a < 0 ? -a : a;
    }


    function toUint256Safe(int256 a) internal pure returns (uint256) {
        require(a >= 0);
        return uint256(a);
    }
}

library SafeMathUint {
    function toInt256Safe(uint256 a) internal pure returns (int256) {
        int256 b = int256(a);
        require(b >= 0);
        return b;
    }
}


contract ERC20 is Context, IERC20, IERC20Metadata {
    using SafeMath for uint256;
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;
    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

    function decimals() public view virtual override returns (uint8) {
        return 9;
    }

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

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

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

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

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

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

    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 _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        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 _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

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(0));
        _owner = address(0);
    }

    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 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 Token is ERC20, Ownable {
    
    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;

    bool private swapping;

    address payable public FNXWallet = payable(0x7Cf34CABF453220E4a67a322987779fc9CBe62eb);//StakeWallet
    address payable public MarketingWallet = payable(0x091Ffe28B459f06E100E32F29B6c787EB8336206); //m wallet
    address payable public BurnAddress = payable (0); //input 0x00000000dead
    address public contractAddress = address(this);

    uint256 public maxTransactionAmount =  100000e9; 
    uint256 public swapTokensAtAmount = 1000;

    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = false;
    bool public antiBotEnabled = false;


    mapping(address => uint256) private _holderLastTransferTimestamp;
    mapping (address => uint256) private _holderFirstBuyTimestamp;
    mapping (address => bool) public _blacklist;
    bool public transferDelayEnabled = false;

    uint256 public buyTotalFees;
    uint256 public buyMarketingFee;
    uint256 public buyFNXFee;
    uint256 public buyBurnFee;

    uint256 public sellTotalFees;
    uint256 public sellMarketingFee;
    uint256 public sellFNXFee;
    uint256 public sellBurnFee;

    uint256 public tokensForMarketing;
    uint256 public tokensForFNX;
    uint256 public tokensForBurn;

    uint256 launchedAt;

    mapping (address => bool) public _isExcludedFromFees;
    mapping (address => bool) public _isExcludedMaxTransactionAmount;
    mapping (address => bool) public _isExcludedMaxWalletAmount;
    mapping (address => bool) public automatedMarketMakerPairs;

    event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress);
    event ExcludeFromFees(address indexed account, bool isExcluded);
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    event MarketingWalletUpdated(address indexed newWallet, address indexed oldWallet);
    event FNXWalletUpdated(address indexed newWallet, address indexed oldWallet);
    event BurnAddressUpdated(address indexed newWallet, address indexed oldWallet);

    constructor() ERC20("Proof Of Knowledge", "$PoK") {

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        excludeFromMaxWallet(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;

        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        excludeFromMaxWallet(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        uint256 _buyMarketingFee = 2;
        uint256 _buyFNXFee = 2;
        uint256 _buyBurnfee = 0;

        uint256 _sellMarketingFee = 2;
        uint256 _sellFNXFee = 2;
        uint256 _sellBurnfee = 0;

        uint256 totalSupply = 1000000e9;

        buyMarketingFee = _buyMarketingFee;
        buyFNXFee = _buyFNXFee;
        buyBurnFee = _buyBurnfee;
        buyTotalFees = buyMarketingFee + buyFNXFee + buyBurnFee;

        sellMarketingFee = _sellMarketingFee;
        sellFNXFee = _sellFNXFee;
        sellBurnFee = _sellBurnfee;
        sellTotalFees = sellMarketingFee + sellFNXFee + sellBurnFee;

        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        excludeFromFees(MarketingWallet, true);
        excludeFromFees(FNXWallet, true);

        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);
        excludeFromMaxTransaction(MarketingWallet, true);
        excludeFromMaxTransaction(FNXWallet, true);

        excludeFromMaxWallet(owner(), true);
        excludeFromMaxWallet(address(this), true);
        excludeFromMaxWallet(address(0xdead), true);
        excludeFromMaxWallet(MarketingWallet, true);
        excludeFromMaxWallet(FNXWallet, true);

        _mint(owner(), totalSupply*100/100);
    }

    receive() external payable {

    }

    function enableTrading() external onlyOwner {
        tradingActive = true;
        launchedAt = block.number;
    }

    function areLimitsInEffect(bool limits) external onlyOwner returns (bool){
        limitsInEffect = limits;
        return limits;
    }

    function disableTransferDelay() external onlyOwner returns (bool){
        transferDelayEnabled = false;
        return true;
    }

    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool){
        swapTokensAtAmount = newAmount;
        return true;
    }

    function updateMaxTxnAmount(uint256 newNumofTokens) external onlyOwner {
        maxTransactionAmount = newNumofTokens;
    }


    function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

    function excludeFromMaxWallet(address updAds, bool isEx) public onlyOwner {
        _isExcludedMaxWalletAmount[updAds] = isEx;
    }

    function updateSwapEnabled(bool enabled) external onlyOwner(){
        swapEnabled = enabled;
    }

    function updateBuyFees(uint256 _MarketingFee, uint256 _FNXFee, uint256 _BurnFee) external onlyOwner {
        buyMarketingFee = _MarketingFee;
        buyFNXFee = _FNXFee;
        buyBurnFee = _BurnFee;
        buyTotalFees = buyMarketingFee + buyFNXFee + buyBurnFee;
        require(buyTotalFees <= 6, "Must keep fees at 6% or less");
    }

    function updateSellFees(uint256 _MarketingFee, uint256 _FNXFee, uint256 _BurnFee) external onlyOwner {
        sellMarketingFee = _MarketingFee;
        sellFNXFee = _FNXFee;
        sellBurnFee = _BurnFee;
        sellTotalFees = sellMarketingFee + sellFNXFee + sellBurnFee;
        require(sellTotalFees <= 6, "Must keep fees at 6% or less");
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }

    function antiBotIsEnabled(bool enabled) public onlyOwner{
        antiBotEnabled = enabled;
    }

    function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner {
        require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs");

        _setAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateMarketingWallet(address newMarketingWallet) external onlyOwner {
        MarketingWallet = payable(newMarketingWallet);
    }

    function updateFNXWallet(address newWallet) external onlyOwner {
        FNXWallet = payable(newWallet);
    } 

    function updateBurnAddress(address newWallet) external onlyOwner {
        BurnAddress = payable(newWallet);
    } 

    function isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }

    event BoughtEarly(address indexed sniper);

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(!_blacklist[to] && !_blacklist[from], "You have been blacklisted from transfering tokens");
         if(amount == 0) {
            super._transfer(from, to, 0);
            return;
        }
        if(limitsInEffect){
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ) {
                if(!tradingActive){
                    require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
                }
                if (transferDelayEnabled){
                    if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)){
                        require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed.");
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                    }
                }
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                    require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount.");
                }
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                    require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount.");
                }
            }
        }
        if (
            antiBotEnabled && 
            to != uniswapV2Pair && 
            to != address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D)
        ) { 
            _blacklist[to] = true;
        }
        uint256 contractTokenBalance = balanceOf(address(this));
        bool canSwap = contractTokenBalance >= swapTokensAtAmount;
        if(
            canSwap &&
            swapEnabled &&
            !swapping &&
            automatedMarketMakerPairs[to] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            swapping = true;
            swapBack();
            swapping = false;
        }
        bool takeFee = !swapping;
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;
        if(takeFee){
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                fees = amount*sellTotalFees/100;
                tokensForFNX += fees * sellFNXFee / sellTotalFees;
                tokensForMarketing += fees * sellMarketingFee / sellTotalFees;
                tokensForBurn += fees * sellBurnFee / sellTotalFees;
            }
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount*buyTotalFees/100;
                tokensForFNX += fees * buyFNXFee / buyTotalFees;
                tokensForMarketing += fees * buyMarketingFee / buyTotalFees;
                tokensForBurn += fees *buyBurnFee/ buyTotalFees;
            }
            if(fees > 10){
                super._transfer(from, address(this), fees);
            }
            amount -= fees;
        }
        super._transfer(from, to, amount);
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, 
            path,
            address(this),
            block.timestamp
        );

    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {

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


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



    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForMarketing + tokensForFNX + tokensForBurn;

        if(contractBalance == 0 || totalTokensToSwap == 100) {return;}

        uint256 amountToSwapForETH = contractBalance;

        swapTokensForEth(amountToSwapForETH); 

        uint256 ethBalance = address(this).balance;

        uint256 ethForMarketing = ethBalance*tokensForMarketing/totalTokensToSwap;
        uint256 ethForFNX = ethBalance*tokensForFNX/totalTokensToSwap;
        uint256 ethForBurn = ethBalance*tokensForBurn/totalTokensToSwap;

        payable(MarketingWallet).transfer(ethForMarketing);
        payable(FNXWallet).transfer(ethForFNX);
        payable(BurnAddress).transfer(ethForBurn);
        tokensForBurn = 0;
        tokensForMarketing = 0;
        tokensForFNX = 0;
    }

    function recoverAllTokens() external onlyOwner { 
        super._transfer(address(this), owner(), balanceOf(contractAddress));
    }

    function recoverAllETH() external onlyOwner {
       payable(owner()).transfer(address(this).balance);
    }
}

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":"sniper","type":"address"}],"name":"BoughtEarly","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"BurnAddressUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"FNXWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"MarketingWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"inputs":[],"name":"BurnAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FNXWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MarketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"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":"","type":"address"}],"name":"_isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxWalletAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"antiBotEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"antiBotIsEnabled","outputs":[],"stateMutability":"nonpayable","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":"bool","name":"limits","type":"bool"}],"name":"areLimitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFNXFee","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":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractAddress","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":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxWallet","outputs":[],"stateMutability":"nonpayable","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":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","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":"recoverAllETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"recoverAllTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellFNXFee","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":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForFNX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateBurnAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_MarketingFee","type":"uint256"},{"internalType":"uint256","name":"_FNXFee","type":"uint256"},{"internalType":"uint256","name":"_BurnFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateFNXWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNumofTokens","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_MarketingFee","type":"uint256"},{"internalType":"uint256","name":"_FNXFee","type":"uint256"},{"internalType":"uint256","name":"_BurnFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052737cf34cabf453220e4a67a322987779fc9cbe62eb600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073091ffe28b459f06e100e32f29b6c787eb8336206600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555030600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550655af3107a4000600a556103e8600b556001600c60006101000a81548160ff0219169083151502179055506000600c60016101000a81548160ff0219169083151502179055506000600c60026101000a81548160ff0219169083151502179055506000600c60036101000a81548160ff0219169083151502179055506000601060006101000a81548160ff021916908315150217905550348015620001d557600080fd5b506040518060400160405280601281526020017f50726f6f66204f66204b6e6f776c6564676500000000000000000000000000008152506040518060400160405280600481526020017f24506f4b000000000000000000000000000000000000000000000000000000008152508160039081620002539190620010c6565b508060049081620002659190620010c6565b50505060006200027a6200086760201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050620003458160016200086f60201b60201c565b620003588160016200096c60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003d8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003fe919062001217565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000466573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200048c919062001217565b6040518363ffffffff1660e01b8152600401620004ab9291906200125a565b6020604051808303816000875af1158015620004cb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004f1919062001217565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200053960a05160016200086f60201b60201c565b6200054e60a05160016200096c60201b60201c565b6200056360a051600162000a6960201b60201c565b6000600290506000600290506000806002905060006002905060008066038d7ea4c680009050866012819055508560138190555084601481905550601454601354601254620005b39190620012b6565b620005bf9190620012b6565b601181905550836016819055508260178190555081601881905550601854601754601654620005ef9190620012b6565b620005fb9190620012b6565b601581905550620006236200061562000b0a60201b60201c565b600162000b3460201b60201c565b6200063630600162000b3460201b60201c565b6200064b61dead600162000b3460201b60201c565b62000680600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600162000b3460201b60201c565b620006b5600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600162000b3460201b60201c565b620006d7620006c962000b0a60201b60201c565b60016200086f60201b60201c565b620006ea3060016200086f60201b60201c565b620006ff61dead60016200086f60201b60201c565b62000734600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200086f60201b60201c565b62000769600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200086f60201b60201c565b6200078b6200077d62000b0a60201b60201c565b60016200096c60201b60201c565b6200079e3060016200096c60201b60201c565b620007b361dead60016200096c60201b60201c565b620007e8600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200096c60201b60201c565b6200081d600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200096c60201b60201c565b620008596200083162000b0a60201b60201c565b60648084620008419190620012f1565b6200084d91906200136b565b62000c8160201b60201c565b505050505050505062001500565b600033905090565b6200087f6200086760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000911576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009089062001404565b60405180910390fd5b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6200097c6200086760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000a0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a059062001404565b60405180910390fd5b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b62000b446200086760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000bd6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000bcd9062001404565b60405180910390fd5b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000c75919062001443565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000cf3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000cea90620014b0565b60405180910390fd5b62000d076000838362000e2f60201b60201c565b62000d238160025462000e3460201b620028eb1790919060201c565b60028190555062000d81816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000e3460201b620028eb1790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000e239190620014e3565b60405180910390a35050565b505050565b6000818362000e449190620012b6565b905092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000ece57607f821691505b60208210810362000ee45762000ee362000e86565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000f4e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000f0f565b62000f5a868362000f0f565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000fa762000fa162000f9b8462000f72565b62000f7c565b62000f72565b9050919050565b6000819050919050565b62000fc38362000f86565b62000fdb62000fd28262000fae565b84845462000f1c565b825550505050565b600090565b62000ff262000fe3565b62000fff81848462000fb8565b505050565b5b8181101562001027576200101b60008262000fe8565b60018101905062001005565b5050565b601f8211156200107657620010408162000eea565b6200104b8462000eff565b810160208510156200105b578190505b620010736200106a8562000eff565b83018262001004565b50505b505050565b600082821c905092915050565b60006200109b600019846008026200107b565b1980831691505092915050565b6000620010b6838362001088565b9150826002028217905092915050565b620010d18262000e4c565b67ffffffffffffffff811115620010ed57620010ec62000e57565b5b620010f9825462000eb5565b620011068282856200102b565b600060209050601f8311600181146200113e576000841562001129578287015190505b620011358582620010a8565b865550620011a5565b601f1984166200114e8662000eea565b60005b82811015620011785784890151825560018201915060208501945060208101905062001151565b8683101562001198578489015162001194601f89168262001088565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620011df82620011b2565b9050919050565b620011f181620011d2565b8114620011fd57600080fd5b50565b6000815190506200121181620011e6565b92915050565b60006020828403121562001230576200122f620011ad565b5b6000620012408482850162001200565b91505092915050565b6200125481620011d2565b82525050565b600060408201905062001271600083018562001249565b62001280602083018462001249565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620012c38262000f72565b9150620012d08362000f72565b9250828201905080821115620012eb57620012ea62001287565b5b92915050565b6000620012fe8262000f72565b91506200130b8362000f72565b92508282026200131b8162000f72565b9150828204841483151762001335576200133462001287565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620013788262000f72565b9150620013858362000f72565b9250826200139857620013976200133c565b5b828204905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000620013ec602083620013a3565b9150620013f982620013b4565b602082019050919050565b600060208201905081810360008301526200141f81620013dd565b9050919050565b60008115159050919050565b6200143d8162001426565b82525050565b60006020820190506200145a600083018462001432565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001498601f83620013a3565b9150620014a58262001460565b602082019050919050565b60006020820190508181036000830152620014cb8162001489565b9050919050565b620014dd8162000f72565b82525050565b6000602082019050620014fa6000830184620014d2565b92915050565b60805160a05161504362001557600039600081816113d501528181611cf101528181612f6a015261328101526000818161105e01528181612f1201528181613e7701528181613f580152613f7f01526150436000f3fe6080604052600436106103b15760003560e01c80638da5cb5b116101e7578063c17b5b8c1161010d578063d8c6404b116100a0578063e71dc3f51161006f578063e71dc3f514610e21578063e884f26014610e4c578063f2fde38b14610e77578063f6b4dfb414610ea0576103b8565b8063d8c6404b14610d51578063dd62ed3e14610d7c578063e0bf7fd114610db9578063e2f4560514610df6576103b8565b8063d10268ad116100dc578063d10268ad14610c97578063d257b34f14610cc0578063d2fcc00114610cfd578063d85ba06314610d26576103b8565b8063c17b5b8c14610bed578063c876d0b914610c16578063c8c8ebe414610c41578063cabcc71814610c6c576103b8565b8063a457c2d711610185578063b31efe4a11610154578063b31efe4a14610b45578063b62496f514610b5c578063bbc0c74214610b99578063c024666814610bc4576103b8565b8063a457c2d714610a77578063a9059cbb14610ab4578063aacebbe314610af1578063adb873bd14610b1a576103b8565b806395d89b41116101c157806395d89b41146109a957806396880b17146109d45780639a7a23d614610a11578063a20623ce14610a3a576103b8565b80638da5cb5b1461092a5780639213691314610955578063924de9b714610980576103b8565b806339509351116102d757806370a082311161026a578063764116fb11610239578063764116fb146108945780637bce5a04146108bf5780638095d564146108ea5780638a8c523c14610913576103b8565b806370a08231146107ec578063715018a614610829578063752d9c21146108405780637571336a1461086b576103b8565b80635945267a116102a65780635945267a146107565780636a486a8e1461076d5780636bd89cdd146107985780636ddd1713146107c1576103b8565b8063395093511461068657806349bd5a5e146106c35780634a62bb65146106ee5780634fbee19314610719576103b8565b80631d7778561161034f5780632598cdb21161031e5780632598cdb2146105dc5780632f10431314610607578063313ce5671461063257806338d559be1461065d576103b8565b80631d777856146105205780631f3fed8f1461054b578063203e727e1461057657806323b872dd1461059f576103b8565b8063095ea7b31161038b578063095ea7b31461045057806310d5de531461048d5780631694505e146104ca57806318160ddd146104f5576103b8565b806301614a4f146103bd57806301b70dab146103e857806306fdde0314610425576103b8565b366103b857005b600080fd5b3480156103c957600080fd5b506103d2610ecb565b6040516103df919061402e565b60405180910390f35b3480156103f457600080fd5b5061040f600480360381019061040a9190614086565b610ed1565b60405161041c91906140c2565b60405180910390f35b34801561043157600080fd5b5061043a610f8c565b604051610447919061416d565b60405180910390f35b34801561045c57600080fd5b5061047760048036038101906104729190614219565b61101e565b60405161048491906140c2565b60405180910390f35b34801561049957600080fd5b506104b460048036038101906104af9190614259565b61103c565b6040516104c191906140c2565b60405180910390f35b3480156104d657600080fd5b506104df61105c565b6040516104ec91906142e5565b60405180910390f35b34801561050157600080fd5b5061050a611080565b604051610517919061402e565b60405180910390f35b34801561052c57600080fd5b5061053561108a565b604051610542919061402e565b60405180910390f35b34801561055757600080fd5b50610560611090565b60405161056d919061402e565b60405180910390f35b34801561058257600080fd5b5061059d60048036038101906105989190614300565b611096565b005b3480156105ab57600080fd5b506105c660048036038101906105c1919061432d565b611137565b6040516105d391906140c2565b60405180910390f35b3480156105e857600080fd5b506105f1611210565b6040516105fe91906143a1565b60405180910390f35b34801561061357600080fd5b5061061c611236565b604051610629919061402e565b60405180910390f35b34801561063e57600080fd5b5061064761123c565b60405161065491906143d8565b60405180910390f35b34801561066957600080fd5b50610684600480360381019061067f9190614259565b611245565b005b34801561069257600080fd5b506106ad60048036038101906106a89190614219565b611320565b6040516106ba91906140c2565b60405180910390f35b3480156106cf57600080fd5b506106d86113d3565b6040516106e59190614402565b60405180910390f35b3480156106fa57600080fd5b506107036113f7565b60405161071091906140c2565b60405180910390f35b34801561072557600080fd5b50610740600480360381019061073b9190614259565b61140a565b60405161074d91906140c2565b60405180910390f35b34801561076257600080fd5b5061076b611460565b005b34801561077957600080fd5b50610782611535565b60405161078f919061402e565b60405180910390f35b3480156107a457600080fd5b506107bf60048036038101906107ba9190614259565b61153b565b005b3480156107cd57600080fd5b506107d6611616565b6040516107e391906140c2565b60405180910390f35b3480156107f857600080fd5b50610813600480360381019061080e9190614259565b611629565b604051610820919061402e565b60405180910390f35b34801561083557600080fd5b5061083e611671565b005b34801561084c57600080fd5b506108556117c9565b60405161086291906143a1565b60405180910390f35b34801561087757600080fd5b50610892600480360381019061088d919061441d565b6117ef565b005b3480156108a057600080fd5b506108a96118e1565b6040516108b6919061402e565b60405180910390f35b3480156108cb57600080fd5b506108d46118e7565b6040516108e1919061402e565b60405180910390f35b3480156108f657600080fd5b50610911600480360381019061090c919061445d565b6118ed565b005b34801561091f57600080fd5b50610928611a07565b005b34801561093657600080fd5b5061093f611ac2565b60405161094c9190614402565b60405180910390f35b34801561096157600080fd5b5061096a611aec565b604051610977919061402e565b60405180910390f35b34801561098c57600080fd5b506109a760048036038101906109a29190614086565b611af2565b005b3480156109b557600080fd5b506109be611ba6565b6040516109cb919061416d565b60405180910390f35b3480156109e057600080fd5b506109fb60048036038101906109f69190614259565b611c38565b604051610a0891906140c2565b60405180910390f35b348015610a1d57600080fd5b50610a386004803603810190610a33919061441d565b611c58565b005b348015610a4657600080fd5b50610a616004803603810190610a5c9190614259565b611d8b565b604051610a6e91906140c2565b60405180910390f35b348015610a8357600080fd5b50610a9e6004803603810190610a999190614219565b611dab565b604051610aab91906140c2565b60405180910390f35b348015610ac057600080fd5b50610adb6004803603810190610ad69190614219565b611e78565b604051610ae891906140c2565b60405180910390f35b348015610afd57600080fd5b50610b186004803603810190610b139190614259565b611e96565b005b348015610b2657600080fd5b50610b2f611f71565b604051610b3c919061402e565b60405180910390f35b348015610b5157600080fd5b50610b5a611f77565b005b348015610b6857600080fd5b50610b836004803603810190610b7e9190614259565b61205e565b604051610b9091906140c2565b60405180910390f35b348015610ba557600080fd5b50610bae61207d565b604051610bbb91906140c2565b60405180910390f35b348015610bd057600080fd5b50610beb6004803603810190610be6919061441d565b612090565b005b348015610bf957600080fd5b50610c146004803603810190610c0f919061445d565b6121d0565b005b348015610c2257600080fd5b50610c2b6122ea565b604051610c3891906140c2565b60405180910390f35b348015610c4d57600080fd5b50610c566122fd565b604051610c63919061402e565b60405180910390f35b348015610c7857600080fd5b50610c81612303565b604051610c8e91906143a1565b60405180910390f35b348015610ca357600080fd5b50610cbe6004803603810190610cb99190614086565b612329565b005b348015610ccc57600080fd5b50610ce76004803603810190610ce29190614300565b6123dd565b604051610cf491906140c2565b60405180910390f35b348015610d0957600080fd5b50610d246004803603810190610d1f919061441d565b612486565b005b348015610d3257600080fd5b50610d3b612578565b604051610d48919061402e565b60405180910390f35b348015610d5d57600080fd5b50610d6661257e565b604051610d7391906140c2565b60405180910390f35b348015610d8857600080fd5b50610da36004803603810190610d9e91906144b0565b612591565b604051610db0919061402e565b60405180910390f35b348015610dc557600080fd5b50610de06004803603810190610ddb9190614259565b612618565b604051610ded91906140c2565b60405180910390f35b348015610e0257600080fd5b50610e0b612638565b604051610e18919061402e565b60405180910390f35b348015610e2d57600080fd5b50610e3661263e565b604051610e43919061402e565b60405180910390f35b348015610e5857600080fd5b50610e61612644565b604051610e6e91906140c2565b60405180910390f35b348015610e8357600080fd5b50610e9e6004803603810190610e999190614259565b6126ff565b005b348015610eac57600080fd5b50610eb56128c5565b604051610ec29190614402565b60405180910390f35b601a5481565b6000610edb612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f619061453c565b60405180910390fd5b81600c60006101000a81548160ff021916908315150217905550819050919050565b606060038054610f9b9061458b565b80601f0160208091040260200160405190810160405280929190818152602001828054610fc79061458b565b80156110145780601f10610fe957610100808354040283529160200191611014565b820191906000526020600020905b815481529060010190602001808311610ff757829003601f168201915b5050505050905090565b600061103261102b612901565b8484612909565b6001905092915050565b601e6020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b601b5481565b60195481565b61109e612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461112d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111249061453c565b60405180910390fd5b80600a8190555050565b6000611144848484612ad2565b61120584611150612901565b61120085604051806060016040528060288152602001614fc160289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006111b6612901565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461383a9092919063ffffffff16565b612909565b600190509392505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60135481565b60006009905090565b61124d612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d39061453c565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006113c961132d612901565b846113c4856001600061133e612901565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128eb90919063ffffffff16565b612909565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600c60009054906101000a900460ff1681565b6000601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611468612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ee9061453c565b60405180910390fd5b61153330611503611ac2565b61152e600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611629565b61388f565b565b60155481565b611543612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c99061453c565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600c60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611679612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611708576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ff9061453c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6117f7612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611886576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187d9061453c565b60405180910390fd5b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60175481565b60125481565b6118f5612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611984576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197b9061453c565b60405180910390fd5b8260128190555081601381905550806014819055506014546013546012546119ac91906145eb565b6119b691906145eb565b60118190555060066011541115611a02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f99061466b565b60405180910390fd5b505050565b611a0f612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a959061453c565b60405180910390fd5b6001600c60016101000a81548160ff02191690831515021790555043601c81905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60165481565b611afa612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b809061453c565b60405180910390fd5b80600c60026101000a81548160ff02191690831515021790555050565b606060048054611bb59061458b565b80601f0160208091040260200160405190810160405280929190818152602001828054611be19061458b565b8015611c2e5780601f10611c0357610100808354040283529160200191611c2e565b820191906000526020600020905b815481529060010190602001808311611c1157829003601f168201915b5050505050905090565b601f6020528060005260406000206000915054906101000a900460ff1681565b611c60612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce69061453c565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d74906146fd565b60405180910390fd5b611d878282613b22565b5050565b600f6020528060005260406000206000915054906101000a900460ff1681565b6000611e6e611db8612901565b84611e6985604051806060016040528060258152602001614fe96025913960016000611de2612901565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461383a9092919063ffffffff16565b612909565b6001905092915050565b6000611e8c611e85612901565b8484612ad2565b6001905092915050565b611e9e612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f249061453c565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60185481565b611f7f612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461200e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120059061453c565b60405180910390fd5b612016611ac2565b73ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561205b573d6000803e3d6000fd5b50565b602080528060005260406000206000915054906101000a900460ff1681565b600c60019054906101000a900460ff1681565b612098612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612127576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211e9061453c565b60405180910390fd5b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516121c491906140c2565b60405180910390a25050565b6121d8612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612267576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225e9061453c565b60405180910390fd5b82601681905550816017819055508060188190555060185460175460165461228f91906145eb565b61229991906145eb565b601581905550600660155411156122e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122dc9061466b565b60405180910390fd5b505050565b601060009054906101000a900460ff1681565b600a5481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612331612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b79061453c565b60405180910390fd5b80600c60036101000a81548160ff02191690831515021790555050565b60006123e7612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612476576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246d9061453c565b60405180910390fd5b81600b8190555060019050919050565b61248e612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461251d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125149061453c565b60405180910390fd5b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60115481565b600c60039054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601d6020528060005260406000206000915054906101000a900460ff1681565b600b5481565b60145481565b600061264e612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d49061453c565b60405180910390fd5b6000601060006101000a81548160ff0219169083151502179055506001905090565b612707612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612796576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278d9061453c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612805576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127fc9061478f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600081836128f991906145eb565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612978576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296f90614821565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036129e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129de906148b3565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612ac5919061402e565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612b41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3890614945565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612bb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba7906149d7565b60405180910390fd5b600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612c545750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612c93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c8a90614a69565b60405180910390fd5b60008103612cac57612ca78383600061388f565b613835565b600c60009054906101000a900460ff161561326857612cc9611ac2565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612d375750612d07611ac2565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612d705750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612daa575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612dc35750600560149054906101000a900460ff16155b1561326757600c60019054906101000a900460ff16612ebd57601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612e7d5750601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612ebc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eb390614ad5565b60405180910390fd5b5b601060009054906101000a900460ff161561308557612eda611ac2565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612f6157507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612fb957507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156130845743600d60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061303f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161303690614b8d565b60405180910390fd5b43600d60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156131285750601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561317757600a54811115613172576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161316990614c1f565b60405180910390fd5b613266565b602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561321a5750601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561326557600a54811115613264576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161325b90614cb1565b60405180910390fd5b5b5b5b5b600c60039054906101000a900460ff1680156132d057507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561331c5750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561337a576001600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600061338530611629565b90506000600b5482101590508080156133aa5750600c60029054906101000a900460ff165b80156133c35750600560149054906101000a900460ff16155b80156134185750602060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b801561346e5750601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156134c45750601d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613508576001600560146101000a81548160ff0219169083151502179055506134ec613bc3565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806135be5750601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156135c857600090505b6000811561382557602060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561362b57506000601554115b156136ea576064601554866136409190614cd1565b61364a9190614d42565b90506015546017548261365d9190614cd1565b6136679190614d42565b601a600082825461367891906145eb565b92505081905550601554601654826136909190614cd1565b61369a9190614d42565b601960008282546136ab91906145eb565b92505081905550601554601854826136c39190614cd1565b6136cd9190614d42565b601b60008282546136de91906145eb565b92505081905550613801565b602060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561374557506000601154115b156138005760646011548661375a9190614cd1565b6137649190614d42565b9050601154601354826137779190614cd1565b6137819190614d42565b601a600082825461379291906145eb565b92505081905550601154601254826137aa9190614cd1565b6137b49190614d42565b601960008282546137c591906145eb565b92505081905550601154601454826137dd9190614cd1565b6137e79190614d42565b601b60008282546137f891906145eb565b925050819055505b5b600a8111156138165761381587308361388f565b5b80856138229190614d73565b94505b61383087878761388f565b505050505b505050565b6000838311158290613882576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613879919061416d565b60405180910390fd5b5082840390509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036138fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138f590614945565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361396d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613964906149d7565b60405180910390fd5b613978838383613dd3565b6139e381604051806060016040528060268152602001614f9b602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461383a9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a76816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128eb90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613b15919061402e565b60405180910390a3505050565b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000613bce30611629565b90506000601b54601a54601954613be591906145eb565b613bef91906145eb565b90506000821480613c005750606481145b15613c0c575050613dd1565b6000829050613c1a81613dd8565b600047905060008360195483613c309190614cd1565b613c3a9190614d42565b9050600084601a5484613c4d9190614cd1565b613c579190614d42565b9050600085601b5485613c6a9190614cd1565b613c749190614d42565b9050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050158015613cde573d6000803e3d6000fd5b50600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015613d47573d6000803e3d6000fd5b50600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613db0573d6000803e3d6000fd5b506000601b8190555060006019819055506000601a81905550505050505050505b565b505050565b6000600267ffffffffffffffff811115613df557613df4614da7565b5b604051908082528060200260200182016040528015613e235781602001602082028036833780820191505090505b5090503081600081518110613e3b57613e3a614dd6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613ee0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f049190614e1a565b81600181518110613f1857613f17614dd6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613f7d307f000000000000000000000000000000000000000000000000000000000000000084612909565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613fdf959493929190614f40565b600060405180830381600087803b158015613ff957600080fd5b505af115801561400d573d6000803e3d6000fd5b505050505050565b6000819050919050565b61402881614015565b82525050565b6000602082019050614043600083018461401f565b92915050565b600080fd5b60008115159050919050565b6140638161404e565b811461406e57600080fd5b50565b6000813590506140808161405a565b92915050565b60006020828403121561409c5761409b614049565b5b60006140aa84828501614071565b91505092915050565b6140bc8161404e565b82525050565b60006020820190506140d760008301846140b3565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156141175780820151818401526020810190506140fc565b60008484015250505050565b6000601f19601f8301169050919050565b600061413f826140dd565b61414981856140e8565b93506141598185602086016140f9565b61416281614123565b840191505092915050565b600060208201905081810360008301526141878184614134565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006141ba8261418f565b9050919050565b6141ca816141af565b81146141d557600080fd5b50565b6000813590506141e7816141c1565b92915050565b6141f681614015565b811461420157600080fd5b50565b600081359050614213816141ed565b92915050565b600080604083850312156142305761422f614049565b5b600061423e858286016141d8565b925050602061424f85828601614204565b9150509250929050565b60006020828403121561426f5761426e614049565b5b600061427d848285016141d8565b91505092915050565b6000819050919050565b60006142ab6142a66142a18461418f565b614286565b61418f565b9050919050565b60006142bd82614290565b9050919050565b60006142cf826142b2565b9050919050565b6142df816142c4565b82525050565b60006020820190506142fa60008301846142d6565b92915050565b60006020828403121561431657614315614049565b5b600061432484828501614204565b91505092915050565b60008060006060848603121561434657614345614049565b5b6000614354868287016141d8565b9350506020614365868287016141d8565b925050604061437686828701614204565b9150509250925092565b600061438b8261418f565b9050919050565b61439b81614380565b82525050565b60006020820190506143b66000830184614392565b92915050565b600060ff82169050919050565b6143d2816143bc565b82525050565b60006020820190506143ed60008301846143c9565b92915050565b6143fc816141af565b82525050565b600060208201905061441760008301846143f3565b92915050565b6000806040838503121561443457614433614049565b5b6000614442858286016141d8565b925050602061445385828601614071565b9150509250929050565b60008060006060848603121561447657614475614049565b5b600061448486828701614204565b935050602061449586828701614204565b92505060406144a686828701614204565b9150509250925092565b600080604083850312156144c7576144c6614049565b5b60006144d5858286016141d8565b92505060206144e6858286016141d8565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006145266020836140e8565b9150614531826144f0565b602082019050919050565b6000602082019050818103600083015261455581614519565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806145a357607f821691505b6020821081036145b6576145b561455c565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006145f682614015565b915061460183614015565b9250828201905080821115614619576146186145bc565b5b92915050565b7f4d757374206b6565702066656573206174203625206f72206c65737300000000600082015250565b6000614655601c836140e8565b91506146608261461f565b602082019050919050565b6000602082019050818103600083015261468481614648565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006146e76039836140e8565b91506146f28261468b565b604082019050919050565b60006020820190508181036000830152614716816146da565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006147796026836140e8565b91506147848261471d565b604082019050919050565b600060208201905081810360008301526147a88161476c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061480b6024836140e8565b9150614816826147af565b604082019050919050565b6000602082019050818103600083015261483a816147fe565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061489d6022836140e8565b91506148a882614841565b604082019050919050565b600060208201905081810360008301526148cc81614890565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061492f6025836140e8565b915061493a826148d3565b604082019050919050565b6000602082019050818103600083015261495e81614922565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006149c16023836140e8565b91506149cc82614965565b604082019050919050565b600060208201905081810360008301526149f0816149b4565b9050919050565b7f596f752068617665206265656e20626c61636b6c69737465642066726f6d207460008201527f72616e73666572696e6720746f6b656e73000000000000000000000000000000602082015250565b6000614a536031836140e8565b9150614a5e826149f7565b604082019050919050565b60006020820190508181036000830152614a8281614a46565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614abf6016836140e8565b9150614aca82614a89565b602082019050919050565b60006020820190508181036000830152614aee81614ab2565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000614b776049836140e8565b9150614b8282614af5565b606082019050919050565b60006020820190508181036000830152614ba681614b6a565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000614c096035836140e8565b9150614c1482614bad565b604082019050919050565b60006020820190508181036000830152614c3881614bfc565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000614c9b6036836140e8565b9150614ca682614c3f565b604082019050919050565b60006020820190508181036000830152614cca81614c8e565b9050919050565b6000614cdc82614015565b9150614ce783614015565b9250828202614cf581614015565b91508282048414831517614d0c57614d0b6145bc565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614d4d82614015565b9150614d5883614015565b925082614d6857614d67614d13565b5b828204905092915050565b6000614d7e82614015565b9150614d8983614015565b9250828203905081811115614da157614da06145bc565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050614e14816141c1565b92915050565b600060208284031215614e3057614e2f614049565b5b6000614e3e84828501614e05565b91505092915050565b6000819050919050565b6000614e6c614e67614e6284614e47565b614286565b614015565b9050919050565b614e7c81614e51565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614eb7816141af565b82525050565b6000614ec98383614eae565b60208301905092915050565b6000602082019050919050565b6000614eed82614e82565b614ef78185614e8d565b9350614f0283614e9e565b8060005b83811015614f33578151614f1a8882614ebd565b9750614f2583614ed5565b925050600181019050614f06565b5085935050505092915050565b600060a082019050614f55600083018861401f565b614f626020830187614e73565b8181036040830152614f748186614ee2565b9050614f8360608301856143f3565b614f90608083018461401f565b969550505050505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220a68bf48da00024cb4fb7baf8cfe39e759291ae4de3c5d1b4064f8ec96c07fd0964736f6c63430008110033

Deployed Bytecode

0x6080604052600436106103b15760003560e01c80638da5cb5b116101e7578063c17b5b8c1161010d578063d8c6404b116100a0578063e71dc3f51161006f578063e71dc3f514610e21578063e884f26014610e4c578063f2fde38b14610e77578063f6b4dfb414610ea0576103b8565b8063d8c6404b14610d51578063dd62ed3e14610d7c578063e0bf7fd114610db9578063e2f4560514610df6576103b8565b8063d10268ad116100dc578063d10268ad14610c97578063d257b34f14610cc0578063d2fcc00114610cfd578063d85ba06314610d26576103b8565b8063c17b5b8c14610bed578063c876d0b914610c16578063c8c8ebe414610c41578063cabcc71814610c6c576103b8565b8063a457c2d711610185578063b31efe4a11610154578063b31efe4a14610b45578063b62496f514610b5c578063bbc0c74214610b99578063c024666814610bc4576103b8565b8063a457c2d714610a77578063a9059cbb14610ab4578063aacebbe314610af1578063adb873bd14610b1a576103b8565b806395d89b41116101c157806395d89b41146109a957806396880b17146109d45780639a7a23d614610a11578063a20623ce14610a3a576103b8565b80638da5cb5b1461092a5780639213691314610955578063924de9b714610980576103b8565b806339509351116102d757806370a082311161026a578063764116fb11610239578063764116fb146108945780637bce5a04146108bf5780638095d564146108ea5780638a8c523c14610913576103b8565b806370a08231146107ec578063715018a614610829578063752d9c21146108405780637571336a1461086b576103b8565b80635945267a116102a65780635945267a146107565780636a486a8e1461076d5780636bd89cdd146107985780636ddd1713146107c1576103b8565b8063395093511461068657806349bd5a5e146106c35780634a62bb65146106ee5780634fbee19314610719576103b8565b80631d7778561161034f5780632598cdb21161031e5780632598cdb2146105dc5780632f10431314610607578063313ce5671461063257806338d559be1461065d576103b8565b80631d777856146105205780631f3fed8f1461054b578063203e727e1461057657806323b872dd1461059f576103b8565b8063095ea7b31161038b578063095ea7b31461045057806310d5de531461048d5780631694505e146104ca57806318160ddd146104f5576103b8565b806301614a4f146103bd57806301b70dab146103e857806306fdde0314610425576103b8565b366103b857005b600080fd5b3480156103c957600080fd5b506103d2610ecb565b6040516103df919061402e565b60405180910390f35b3480156103f457600080fd5b5061040f600480360381019061040a9190614086565b610ed1565b60405161041c91906140c2565b60405180910390f35b34801561043157600080fd5b5061043a610f8c565b604051610447919061416d565b60405180910390f35b34801561045c57600080fd5b5061047760048036038101906104729190614219565b61101e565b60405161048491906140c2565b60405180910390f35b34801561049957600080fd5b506104b460048036038101906104af9190614259565b61103c565b6040516104c191906140c2565b60405180910390f35b3480156104d657600080fd5b506104df61105c565b6040516104ec91906142e5565b60405180910390f35b34801561050157600080fd5b5061050a611080565b604051610517919061402e565b60405180910390f35b34801561052c57600080fd5b5061053561108a565b604051610542919061402e565b60405180910390f35b34801561055757600080fd5b50610560611090565b60405161056d919061402e565b60405180910390f35b34801561058257600080fd5b5061059d60048036038101906105989190614300565b611096565b005b3480156105ab57600080fd5b506105c660048036038101906105c1919061432d565b611137565b6040516105d391906140c2565b60405180910390f35b3480156105e857600080fd5b506105f1611210565b6040516105fe91906143a1565b60405180910390f35b34801561061357600080fd5b5061061c611236565b604051610629919061402e565b60405180910390f35b34801561063e57600080fd5b5061064761123c565b60405161065491906143d8565b60405180910390f35b34801561066957600080fd5b50610684600480360381019061067f9190614259565b611245565b005b34801561069257600080fd5b506106ad60048036038101906106a89190614219565b611320565b6040516106ba91906140c2565b60405180910390f35b3480156106cf57600080fd5b506106d86113d3565b6040516106e59190614402565b60405180910390f35b3480156106fa57600080fd5b506107036113f7565b60405161071091906140c2565b60405180910390f35b34801561072557600080fd5b50610740600480360381019061073b9190614259565b61140a565b60405161074d91906140c2565b60405180910390f35b34801561076257600080fd5b5061076b611460565b005b34801561077957600080fd5b50610782611535565b60405161078f919061402e565b60405180910390f35b3480156107a457600080fd5b506107bf60048036038101906107ba9190614259565b61153b565b005b3480156107cd57600080fd5b506107d6611616565b6040516107e391906140c2565b60405180910390f35b3480156107f857600080fd5b50610813600480360381019061080e9190614259565b611629565b604051610820919061402e565b60405180910390f35b34801561083557600080fd5b5061083e611671565b005b34801561084c57600080fd5b506108556117c9565b60405161086291906143a1565b60405180910390f35b34801561087757600080fd5b50610892600480360381019061088d919061441d565b6117ef565b005b3480156108a057600080fd5b506108a96118e1565b6040516108b6919061402e565b60405180910390f35b3480156108cb57600080fd5b506108d46118e7565b6040516108e1919061402e565b60405180910390f35b3480156108f657600080fd5b50610911600480360381019061090c919061445d565b6118ed565b005b34801561091f57600080fd5b50610928611a07565b005b34801561093657600080fd5b5061093f611ac2565b60405161094c9190614402565b60405180910390f35b34801561096157600080fd5b5061096a611aec565b604051610977919061402e565b60405180910390f35b34801561098c57600080fd5b506109a760048036038101906109a29190614086565b611af2565b005b3480156109b557600080fd5b506109be611ba6565b6040516109cb919061416d565b60405180910390f35b3480156109e057600080fd5b506109fb60048036038101906109f69190614259565b611c38565b604051610a0891906140c2565b60405180910390f35b348015610a1d57600080fd5b50610a386004803603810190610a33919061441d565b611c58565b005b348015610a4657600080fd5b50610a616004803603810190610a5c9190614259565b611d8b565b604051610a6e91906140c2565b60405180910390f35b348015610a8357600080fd5b50610a9e6004803603810190610a999190614219565b611dab565b604051610aab91906140c2565b60405180910390f35b348015610ac057600080fd5b50610adb6004803603810190610ad69190614219565b611e78565b604051610ae891906140c2565b60405180910390f35b348015610afd57600080fd5b50610b186004803603810190610b139190614259565b611e96565b005b348015610b2657600080fd5b50610b2f611f71565b604051610b3c919061402e565b60405180910390f35b348015610b5157600080fd5b50610b5a611f77565b005b348015610b6857600080fd5b50610b836004803603810190610b7e9190614259565b61205e565b604051610b9091906140c2565b60405180910390f35b348015610ba557600080fd5b50610bae61207d565b604051610bbb91906140c2565b60405180910390f35b348015610bd057600080fd5b50610beb6004803603810190610be6919061441d565b612090565b005b348015610bf957600080fd5b50610c146004803603810190610c0f919061445d565b6121d0565b005b348015610c2257600080fd5b50610c2b6122ea565b604051610c3891906140c2565b60405180910390f35b348015610c4d57600080fd5b50610c566122fd565b604051610c63919061402e565b60405180910390f35b348015610c7857600080fd5b50610c81612303565b604051610c8e91906143a1565b60405180910390f35b348015610ca357600080fd5b50610cbe6004803603810190610cb99190614086565b612329565b005b348015610ccc57600080fd5b50610ce76004803603810190610ce29190614300565b6123dd565b604051610cf491906140c2565b60405180910390f35b348015610d0957600080fd5b50610d246004803603810190610d1f919061441d565b612486565b005b348015610d3257600080fd5b50610d3b612578565b604051610d48919061402e565b60405180910390f35b348015610d5d57600080fd5b50610d6661257e565b604051610d7391906140c2565b60405180910390f35b348015610d8857600080fd5b50610da36004803603810190610d9e91906144b0565b612591565b604051610db0919061402e565b60405180910390f35b348015610dc557600080fd5b50610de06004803603810190610ddb9190614259565b612618565b604051610ded91906140c2565b60405180910390f35b348015610e0257600080fd5b50610e0b612638565b604051610e18919061402e565b60405180910390f35b348015610e2d57600080fd5b50610e3661263e565b604051610e43919061402e565b60405180910390f35b348015610e5857600080fd5b50610e61612644565b604051610e6e91906140c2565b60405180910390f35b348015610e8357600080fd5b50610e9e6004803603810190610e999190614259565b6126ff565b005b348015610eac57600080fd5b50610eb56128c5565b604051610ec29190614402565b60405180910390f35b601a5481565b6000610edb612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f619061453c565b60405180910390fd5b81600c60006101000a81548160ff021916908315150217905550819050919050565b606060038054610f9b9061458b565b80601f0160208091040260200160405190810160405280929190818152602001828054610fc79061458b565b80156110145780601f10610fe957610100808354040283529160200191611014565b820191906000526020600020905b815481529060010190602001808311610ff757829003601f168201915b5050505050905090565b600061103261102b612901565b8484612909565b6001905092915050565b601e6020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b601b5481565b60195481565b61109e612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461112d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111249061453c565b60405180910390fd5b80600a8190555050565b6000611144848484612ad2565b61120584611150612901565b61120085604051806060016040528060288152602001614fc160289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006111b6612901565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461383a9092919063ffffffff16565b612909565b600190509392505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60135481565b60006009905090565b61124d612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d39061453c565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006113c961132d612901565b846113c4856001600061133e612901565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128eb90919063ffffffff16565b612909565b6001905092915050565b7f0000000000000000000000005b5ae7d81bd6c71a2a3c04cf463f09ceefe1070c81565b600c60009054906101000a900460ff1681565b6000601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611468612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ee9061453c565b60405180910390fd5b61153330611503611ac2565b61152e600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611629565b61388f565b565b60155481565b611543612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c99061453c565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600c60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611679612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611708576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ff9061453c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6117f7612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611886576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187d9061453c565b60405180910390fd5b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60175481565b60125481565b6118f5612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611984576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197b9061453c565b60405180910390fd5b8260128190555081601381905550806014819055506014546013546012546119ac91906145eb565b6119b691906145eb565b60118190555060066011541115611a02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f99061466b565b60405180910390fd5b505050565b611a0f612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a959061453c565b60405180910390fd5b6001600c60016101000a81548160ff02191690831515021790555043601c81905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60165481565b611afa612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b809061453c565b60405180910390fd5b80600c60026101000a81548160ff02191690831515021790555050565b606060048054611bb59061458b565b80601f0160208091040260200160405190810160405280929190818152602001828054611be19061458b565b8015611c2e5780601f10611c0357610100808354040283529160200191611c2e565b820191906000526020600020905b815481529060010190602001808311611c1157829003601f168201915b5050505050905090565b601f6020528060005260406000206000915054906101000a900460ff1681565b611c60612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce69061453c565b60405180910390fd5b7f0000000000000000000000005b5ae7d81bd6c71a2a3c04cf463f09ceefe1070c73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d74906146fd565b60405180910390fd5b611d878282613b22565b5050565b600f6020528060005260406000206000915054906101000a900460ff1681565b6000611e6e611db8612901565b84611e6985604051806060016040528060258152602001614fe96025913960016000611de2612901565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461383a9092919063ffffffff16565b612909565b6001905092915050565b6000611e8c611e85612901565b8484612ad2565b6001905092915050565b611e9e612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f249061453c565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60185481565b611f7f612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461200e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120059061453c565b60405180910390fd5b612016611ac2565b73ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561205b573d6000803e3d6000fd5b50565b602080528060005260406000206000915054906101000a900460ff1681565b600c60019054906101000a900460ff1681565b612098612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612127576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211e9061453c565b60405180910390fd5b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516121c491906140c2565b60405180910390a25050565b6121d8612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612267576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225e9061453c565b60405180910390fd5b82601681905550816017819055508060188190555060185460175460165461228f91906145eb565b61229991906145eb565b601581905550600660155411156122e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122dc9061466b565b60405180910390fd5b505050565b601060009054906101000a900460ff1681565b600a5481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612331612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b79061453c565b60405180910390fd5b80600c60036101000a81548160ff02191690831515021790555050565b60006123e7612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612476576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246d9061453c565b60405180910390fd5b81600b8190555060019050919050565b61248e612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461251d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125149061453c565b60405180910390fd5b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60115481565b600c60039054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601d6020528060005260406000206000915054906101000a900460ff1681565b600b5481565b60145481565b600061264e612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d49061453c565b60405180910390fd5b6000601060006101000a81548160ff0219169083151502179055506001905090565b612707612901565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612796576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278d9061453c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612805576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127fc9061478f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600081836128f991906145eb565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612978576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296f90614821565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036129e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129de906148b3565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612ac5919061402e565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612b41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3890614945565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612bb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba7906149d7565b60405180910390fd5b600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612c545750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612c93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c8a90614a69565b60405180910390fd5b60008103612cac57612ca78383600061388f565b613835565b600c60009054906101000a900460ff161561326857612cc9611ac2565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612d375750612d07611ac2565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612d705750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612daa575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612dc35750600560149054906101000a900460ff16155b1561326757600c60019054906101000a900460ff16612ebd57601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612e7d5750601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612ebc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eb390614ad5565b60405180910390fd5b5b601060009054906101000a900460ff161561308557612eda611ac2565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612f6157507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612fb957507f0000000000000000000000005b5ae7d81bd6c71a2a3c04cf463f09ceefe1070c73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156130845743600d60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061303f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161303690614b8d565b60405180910390fd5b43600d60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156131285750601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561317757600a54811115613172576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161316990614c1f565b60405180910390fd5b613266565b602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561321a5750601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561326557600a54811115613264576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161325b90614cb1565b60405180910390fd5b5b5b5b5b600c60039054906101000a900460ff1680156132d057507f0000000000000000000000005b5ae7d81bd6c71a2a3c04cf463f09ceefe1070c73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561331c5750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561337a576001600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600061338530611629565b90506000600b5482101590508080156133aa5750600c60029054906101000a900460ff165b80156133c35750600560149054906101000a900460ff16155b80156134185750602060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b801561346e5750601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156134c45750601d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613508576001600560146101000a81548160ff0219169083151502179055506134ec613bc3565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806135be5750601d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156135c857600090505b6000811561382557602060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561362b57506000601554115b156136ea576064601554866136409190614cd1565b61364a9190614d42565b90506015546017548261365d9190614cd1565b6136679190614d42565b601a600082825461367891906145eb565b92505081905550601554601654826136909190614cd1565b61369a9190614d42565b601960008282546136ab91906145eb565b92505081905550601554601854826136c39190614cd1565b6136cd9190614d42565b601b60008282546136de91906145eb565b92505081905550613801565b602060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561374557506000601154115b156138005760646011548661375a9190614cd1565b6137649190614d42565b9050601154601354826137779190614cd1565b6137819190614d42565b601a600082825461379291906145eb565b92505081905550601154601254826137aa9190614cd1565b6137b49190614d42565b601960008282546137c591906145eb565b92505081905550601154601454826137dd9190614cd1565b6137e79190614d42565b601b60008282546137f891906145eb565b925050819055505b5b600a8111156138165761381587308361388f565b5b80856138229190614d73565b94505b61383087878761388f565b505050505b505050565b6000838311158290613882576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613879919061416d565b60405180910390fd5b5082840390509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036138fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138f590614945565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361396d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613964906149d7565b60405180910390fd5b613978838383613dd3565b6139e381604051806060016040528060268152602001614f9b602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461383a9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a76816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128eb90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613b15919061402e565b60405180910390a3505050565b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000613bce30611629565b90506000601b54601a54601954613be591906145eb565b613bef91906145eb565b90506000821480613c005750606481145b15613c0c575050613dd1565b6000829050613c1a81613dd8565b600047905060008360195483613c309190614cd1565b613c3a9190614d42565b9050600084601a5484613c4d9190614cd1565b613c579190614d42565b9050600085601b5485613c6a9190614cd1565b613c749190614d42565b9050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050158015613cde573d6000803e3d6000fd5b50600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015613d47573d6000803e3d6000fd5b50600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613db0573d6000803e3d6000fd5b506000601b8190555060006019819055506000601a81905550505050505050505b565b505050565b6000600267ffffffffffffffff811115613df557613df4614da7565b5b604051908082528060200260200182016040528015613e235781602001602082028036833780820191505090505b5090503081600081518110613e3b57613e3a614dd6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613ee0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f049190614e1a565b81600181518110613f1857613f17614dd6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613f7d307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612909565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613fdf959493929190614f40565b600060405180830381600087803b158015613ff957600080fd5b505af115801561400d573d6000803e3d6000fd5b505050505050565b6000819050919050565b61402881614015565b82525050565b6000602082019050614043600083018461401f565b92915050565b600080fd5b60008115159050919050565b6140638161404e565b811461406e57600080fd5b50565b6000813590506140808161405a565b92915050565b60006020828403121561409c5761409b614049565b5b60006140aa84828501614071565b91505092915050565b6140bc8161404e565b82525050565b60006020820190506140d760008301846140b3565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156141175780820151818401526020810190506140fc565b60008484015250505050565b6000601f19601f8301169050919050565b600061413f826140dd565b61414981856140e8565b93506141598185602086016140f9565b61416281614123565b840191505092915050565b600060208201905081810360008301526141878184614134565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006141ba8261418f565b9050919050565b6141ca816141af565b81146141d557600080fd5b50565b6000813590506141e7816141c1565b92915050565b6141f681614015565b811461420157600080fd5b50565b600081359050614213816141ed565b92915050565b600080604083850312156142305761422f614049565b5b600061423e858286016141d8565b925050602061424f85828601614204565b9150509250929050565b60006020828403121561426f5761426e614049565b5b600061427d848285016141d8565b91505092915050565b6000819050919050565b60006142ab6142a66142a18461418f565b614286565b61418f565b9050919050565b60006142bd82614290565b9050919050565b60006142cf826142b2565b9050919050565b6142df816142c4565b82525050565b60006020820190506142fa60008301846142d6565b92915050565b60006020828403121561431657614315614049565b5b600061432484828501614204565b91505092915050565b60008060006060848603121561434657614345614049565b5b6000614354868287016141d8565b9350506020614365868287016141d8565b925050604061437686828701614204565b9150509250925092565b600061438b8261418f565b9050919050565b61439b81614380565b82525050565b60006020820190506143b66000830184614392565b92915050565b600060ff82169050919050565b6143d2816143bc565b82525050565b60006020820190506143ed60008301846143c9565b92915050565b6143fc816141af565b82525050565b600060208201905061441760008301846143f3565b92915050565b6000806040838503121561443457614433614049565b5b6000614442858286016141d8565b925050602061445385828601614071565b9150509250929050565b60008060006060848603121561447657614475614049565b5b600061448486828701614204565b935050602061449586828701614204565b92505060406144a686828701614204565b9150509250925092565b600080604083850312156144c7576144c6614049565b5b60006144d5858286016141d8565b92505060206144e6858286016141d8565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006145266020836140e8565b9150614531826144f0565b602082019050919050565b6000602082019050818103600083015261455581614519565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806145a357607f821691505b6020821081036145b6576145b561455c565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006145f682614015565b915061460183614015565b9250828201905080821115614619576146186145bc565b5b92915050565b7f4d757374206b6565702066656573206174203625206f72206c65737300000000600082015250565b6000614655601c836140e8565b91506146608261461f565b602082019050919050565b6000602082019050818103600083015261468481614648565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006146e76039836140e8565b91506146f28261468b565b604082019050919050565b60006020820190508181036000830152614716816146da565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006147796026836140e8565b91506147848261471d565b604082019050919050565b600060208201905081810360008301526147a88161476c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061480b6024836140e8565b9150614816826147af565b604082019050919050565b6000602082019050818103600083015261483a816147fe565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061489d6022836140e8565b91506148a882614841565b604082019050919050565b600060208201905081810360008301526148cc81614890565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061492f6025836140e8565b915061493a826148d3565b604082019050919050565b6000602082019050818103600083015261495e81614922565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006149c16023836140e8565b91506149cc82614965565b604082019050919050565b600060208201905081810360008301526149f0816149b4565b9050919050565b7f596f752068617665206265656e20626c61636b6c69737465642066726f6d207460008201527f72616e73666572696e6720746f6b656e73000000000000000000000000000000602082015250565b6000614a536031836140e8565b9150614a5e826149f7565b604082019050919050565b60006020820190508181036000830152614a8281614a46565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614abf6016836140e8565b9150614aca82614a89565b602082019050919050565b60006020820190508181036000830152614aee81614ab2565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000614b776049836140e8565b9150614b8282614af5565b606082019050919050565b60006020820190508181036000830152614ba681614b6a565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000614c096035836140e8565b9150614c1482614bad565b604082019050919050565b60006020820190508181036000830152614c3881614bfc565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000614c9b6036836140e8565b9150614ca682614c3f565b604082019050919050565b60006020820190508181036000830152614cca81614c8e565b9050919050565b6000614cdc82614015565b9150614ce783614015565b9250828202614cf581614015565b91508282048414831517614d0c57614d0b6145bc565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614d4d82614015565b9150614d5883614015565b925082614d6857614d67614d13565b5b828204905092915050565b6000614d7e82614015565b9150614d8983614015565b9250828203905081811115614da157614da06145bc565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050614e14816141c1565b92915050565b600060208284031215614e3057614e2f614049565b5b6000614e3e84828501614e05565b91505092915050565b6000819050919050565b6000614e6c614e67614e6284614e47565b614286565b614015565b9050919050565b614e7c81614e51565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614eb7816141af565b82525050565b6000614ec98383614eae565b60208301905092915050565b6000602082019050919050565b6000614eed82614e82565b614ef78185614e8d565b9350614f0283614e9e565b8060005b83811015614f33578151614f1a8882614ebd565b9750614f2583614ed5565b925050600181019050614f06565b5085935050505092915050565b600060a082019050614f55600083018861401f565b614f626020830187614e73565b8181036040830152614f748186614ee2565b9050614f8360608301856143f3565b614f90608083018461401f565b969550505050505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220a68bf48da00024cb4fb7baf8cfe39e759291ae4de3c5d1b4064f8ec96c07fd0964736f6c63430008110033

Deployed Bytecode Sourcemap

18520:13248:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19871:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23036:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8849:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9762:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20028:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18566:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9169:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19905:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19831:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23490:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9939:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18807:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19626:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9069:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25644:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10302:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18624:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19154:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25890:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31513:134;;;;;;;;;;;;;:::i;:::-;;19691:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25765:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19234:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9285:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13252:148;;;;;;;;;;;;;:::i;:::-;;18701:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23627:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19764:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19589:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24030:347;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22909:119;;;;;;;;;;;;;:::i;:::-;;13038:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19726:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23921:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8957:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20099:59;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25046:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19456:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10528:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9420:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25494:142;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19796:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31655:110;;;;;;;;;;;;;:::i;:::-;;20165:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19194:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24749:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24385:356;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19506:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19050:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18917:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24939:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23325:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23779:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19555:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19272:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9603:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19969:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19105:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19657:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23183:134;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13408:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18995:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19871:27;;;;:::o;23036:139::-;23104:4;13175:12;:10;:12::i;:::-;13165:22;;:6;;;;;;;;;;;:22;;;13157:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23137:6:::1;23120:14;;:23;;;;;;;;;;;;;;;;;;23161:6;23154:13;;23036:139:::0;;;:::o;8849:100::-;8903:13;8936:5;8929:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8849:100;:::o;9762:169::-;9845:4;9862:39;9871:12;:10;:12::i;:::-;9885:7;9894:6;9862:8;:39::i;:::-;9919:4;9912:11;;9762:169;;;;:::o;20028:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;18566:51::-;;;:::o;9169:108::-;9230:7;9257:12;;9250:19;;9169:108;:::o;19905:28::-;;;;:::o;19831:33::-;;;;:::o;23490:127::-;13175:12;:10;:12::i;:::-;13165:22;;:6;;;;;;;;;;;:22;;;13157:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23595:14:::1;23572:20;:37;;;;23490:127:::0;:::o;9939:355::-;10079:4;10096:36;10106:6;10114:9;10125:6;10096:9;:36::i;:::-;10143:121;10152:6;10160:12;:10;:12::i;:::-;10174:89;10212:6;10174:89;;;;;;;;;;;;;;;;;:11;:19;10186:6;10174:19;;;;;;;;;;;;;;;:33;10194:12;:10;:12::i;:::-;10174:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;10143:8;:121::i;:::-;10282:4;10275:11;;9939:355;;;;;:::o;18807:92::-;;;;;;;;;;;;;:::o;19626:24::-;;;;:::o;9069:92::-;9127:5;9152:1;9145:8;;9069:92;:::o;25644:112::-;13175:12;:10;:12::i;:::-;13165:22;;:6;;;;;;;;;;;:22;;;13157:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25738:9:::1;25718;;:30;;;;;;;;;;;;;;;;;;25644:112:::0;:::o;10302:218::-;10390:4;10407:83;10416:12;:10;:12::i;:::-;10430:7;10439:50;10478:10;10439:11;:25;10451:12;:10;:12::i;:::-;10439:25;;;;;;;;;;;;;;;:34;10465:7;10439:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;10407:8;:83::i;:::-;10508:4;10501:11;;10302:218;;;;:::o;18624:38::-;;;:::o;19154:33::-;;;;;;;;;;;;;:::o;25890:125::-;25955:4;25979:19;:28;25999:7;25979:28;;;;;;;;;;;;;;;;;;;;;;;;;25972:35;;25890:125;;;:::o;31513:134::-;13175:12;:10;:12::i;:::-;13165:22;;:6;;;;;;;;;;;:22;;;13157:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;31572::::1;31596:4;31603:7;:5;:7::i;:::-;31612:26;31622:15;;;;;;;;;;;31612:9;:26::i;:::-;31572:15;:67::i;:::-;31513:134::o:0;19691:28::-;;;;:::o;25765:116::-;13175:12;:10;:12::i;:::-;13165:22;;:6;;;;;;;;;;;:22;;;13157:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25863:9:::1;25841:11;;:32;;;;;;;;;;;;;;;;;;25765:116:::0;:::o;19234:31::-;;;;;;;;;;;;;:::o;9285:127::-;9359:7;9386:9;:18;9396:7;9386:18;;;;;;;;;;;;;;;;9379:25;;9285:127;;;:::o;13252:148::-;13175:12;:10;:12::i;:::-;13165:22;;:6;;;;;;;;;;;:22;;;13157:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13359:1:::1;13322:40;;13343:6;;;;;;;;;;;13322:40;;;;;;;;;;;;13390:1;13373:6;;:19;;;;;;;;;;;;;;;;;;13252:148::o:0;18701:86::-;;;;;;;;;;;;;:::o;23627:144::-;13175:12;:10;:12::i;:::-;13165:22;;:6;;;;;;;;;;;:22;;;13157:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23759:4:::1;23717:31;:39;23749:6;23717:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;23627:144:::0;;:::o;19764:25::-;;;;:::o;19589:30::-;;;;:::o;24030:347::-;13175:12;:10;:12::i;:::-;13165:22;;:6;;;;;;;;;;;:22;;;13157:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24159:13:::1;24141:15;:31;;;;24195:7;24183:9;:19;;;;24226:8;24213:10;:21;;;;24290:10;;24278:9;;24260:15;;:27;;;;:::i;:::-;:40;;;;:::i;:::-;24245:12;:55;;;;24335:1;24319:12;;:17;;24311:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;24030:347:::0;;;:::o;22909:119::-;13175:12;:10;:12::i;:::-;13165:22;;:6;;;;;;;;;;;:22;;;13157:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22980:4:::1;22964:13;;:20;;;;;;;;;;;;;;;;;;23008:12;22995:10;:25;;;;22909:119::o:0;13038:79::-;13076:7;13103:6;;;;;;;;;;;13096:13;;13038:79;:::o;19726:31::-;;;;:::o;23921:101::-;13175:12;:10;:12::i;:::-;13165:22;;:6;;;;;;;;;;;:22;;;13157:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24007:7:::1;23993:11;;:21;;;;;;;;;;;;;;;;;;23921:101:::0;:::o;8957:104::-;9013:13;9046:7;9039:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8957:104;:::o;20099:59::-;;;;;;;;;;;;;;;;;;;;;;:::o;25046:244::-;13175:12;:10;:12::i;:::-;13165:22;;:6;;;;;;;;;;;:22;;;13157:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25153:13:::1;25145:21;;:4;:21;;::::0;25137:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;25241:41;25270:4;25276:5;25241:28;:41::i;:::-;25046:244:::0;;:::o;19456:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;10528:269::-;10621:4;10638:129;10647:12;:10;:12::i;:::-;10661:7;10670:96;10709:15;10670:96;;;;;;;;;;;;;;;;;:11;:25;10682:12;:10;:12::i;:::-;10670:25;;;;;;;;;;;;;;;:34;10696:7;10670:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;10638:8;:129::i;:::-;10785:4;10778:11;;10528:269;;;;:::o;9420:175::-;9506:4;9523:42;9533:12;:10;:12::i;:::-;9547:9;9558:6;9523:9;:42::i;:::-;9583:4;9576:11;;9420:175;;;;:::o;25494:142::-;13175:12;:10;:12::i;:::-;13165:22;;:6;;;;;;;;;;;:22;;;13157:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25609:18:::1;25583:15;;:45;;;;;;;;;;;;;;;;;;25494:142:::0;:::o;19796:26::-;;;;:::o;31655:110::-;13175:12;:10;:12::i;:::-;13165:22;;:6;;;;;;;;;;;:22;;;13157:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;31717:7:::1;:5;:7::i;:::-;31709:25;;:48;31735:21;31709:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;31655:110::o:0;20165:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;19194:33::-;;;;;;;;;;;;;:::o;24749:182::-;13175:12;:10;:12::i;:::-;13165:22;;:6;;;;;;;;;;;:22;;;13157:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24865:8:::1;24834:19;:28;24854:7;24834:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;24905:7;24889:34;;;24914:8;24889:34;;;;;;:::i;:::-;;;;;;;;24749:182:::0;;:::o;24385:356::-;13175:12;:10;:12::i;:::-;13165:22;;:6;;;;;;;;;;;:22;;;13157:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24516:13:::1;24497:16;:32;;;;24553:7;24540:10;:20;;;;24585:8;24571:11;:22;;;;24652:11;;24639:10;;24620:16;;:29;;;;:::i;:::-;:43;;;;:::i;:::-;24604:13;:59;;;;24699:1;24682:13;;:18;;24674:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;24385:356:::0;;;:::o;19506:40::-;;;;;;;;;;;;;:::o;19050:47::-;;;;:::o;18917:48::-;;;;;;;;;;;;;:::o;24939:99::-;13175:12;:10;:12::i;:::-;13165:22;;:6;;;;;;;;;;;:22;;;13157:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25023:7:::1;25006:14;;:24;;;;;;;;;;;;;;;;;;24939:99:::0;:::o;23325:157::-;23406:4;13175:12;:10;:12::i;:::-;13165:22;;:6;;;;;;;;;;;:22;;;13157:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23443:9:::1;23422:18;:30;;;;23470:4;23463:11;;23325:157:::0;;;:::o;23779:134::-;13175:12;:10;:12::i;:::-;13165:22;;:6;;;;;;;;;;;:22;;;13157:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23901:4:::1;23864:26;:34;23891:6;23864:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;23779:134:::0;;:::o;19555:27::-;;;;:::o;19272:34::-;;;;;;;;;;;;;:::o;9603:151::-;9692:7;9719:11;:18;9731:5;9719:18;;;;;;;;;;;;;;;:27;9738:7;9719:27;;;;;;;;;;;;;;;;9712:34;;9603:151;;;;:::o;19969:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;19105:40::-;;;;:::o;19657:25::-;;;;:::o;23183:134::-;23243:4;13175:12;:10;:12::i;:::-;13165:22;;:6;;;;;;;;;;;:22;;;13157:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23282:5:::1;23259:20;;:28;;;;;;;;;;;;;;;;;;23305:4;23298:11;;23183:134:::0;:::o;13408:244::-;13175:12;:10;:12::i;:::-;13165:22;;:6;;;;;;;;;;;:22;;;13157:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13517:1:::1;13497:22;;:8;:22;;::::0;13489:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;13607:8;13578:38;;13599:6;;;;;;;;;;;13578:38;;;;;;;;;;;;13636:8;13627:6;;:17;;;;;;;;;;;;;;;;;;13408:244:::0;:::o;18995:46::-;;;;;;;;;;;;;:::o;5600:98::-;5658:7;5689:1;5685;:5;;;;:::i;:::-;5678:12;;5600:98;;;;:::o;284:::-;337:7;364:10;357:17;;284:98;:::o;12198:380::-;12351:1;12334:19;;:5;:19;;;12326:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12432:1;12413:21;;:7;:21;;;12405:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12516:6;12486:11;:18;12498:5;12486:18;;;;;;;;;;;;;;;:27;12505:7;12486:27;;;;;;;;;;;;;;;:36;;;;12554:7;12538:32;;12547:5;12538:32;;;12563:6;12538:32;;;;;;:::i;:::-;;;;;;;;12198:380;;;:::o;26073:3597::-;26221:1;26205:18;;:4;:18;;;26197:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26298:1;26284:16;;:2;:16;;;26276:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;26360:10;:14;26371:2;26360:14;;;;;;;;;;;;;;;;;;;;;;;;;26359:15;:36;;;;;26379:10;:16;26390:4;26379:16;;;;;;;;;;;;;;;;;;;;;;;;;26378:17;26359:36;26351:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;26474:1;26464:6;:11;26461:92;;26492:28;26508:4;26514:2;26518:1;26492:15;:28::i;:::-;26535:7;;26461:92;26566:14;;;;;;;;;;;26563:1337;;;26626:7;:5;:7::i;:::-;26618:15;;:4;:15;;;;:49;;;;;26660:7;:5;:7::i;:::-;26654:13;;:2;:13;;;;26618:49;:86;;;;;26702:1;26688:16;;:2;:16;;;;26618:86;:128;;;;;26739:6;26725:21;;:2;:21;;;;26618:128;:158;;;;;26768:8;;;;;;;;;;;26767:9;26618:158;26596:1293;;;26815:13;;;;;;;;;;;26811:148;;26860:19;:25;26880:4;26860:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;26889:19;:23;26909:2;26889:23;;;;;;;;;;;;;;;;;;;;;;;;;26860:52;26852:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;26811:148;26981:20;;;;;;;;;;;26977:423;;;27035:7;:5;:7::i;:::-;27029:13;;:2;:13;;;;:47;;;;;27060:15;27046:30;;:2;:30;;;;27029:47;:79;;;;;27094:13;27080:28;;:2;:28;;;;27029:79;27025:356;;;27186:12;27144:28;:39;27173:9;27144:39;;;;;;;;;;;;;;;;:54;27136:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;27345:12;27303:28;:39;27332:9;27303:39;;;;;;;;;;;;;;;:54;;;;27025:356;26977:423;27422:25;:31;27448:4;27422:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;27458:31;:35;27490:2;27458:35;;;;;;;;;;;;;;;;;;;;;;;;;27457:36;27422:71;27418:456;;;27536:20;;27526:6;:30;;27518:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;27418:456;;;27661:25;:29;27687:2;27661:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;27695:31;:37;27727:4;27695:37;;;;;;;;;;;;;;;;;;;;;;;;;27694:38;27661:71;27657:217;;;27775:20;;27765:6;:30;;27757:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;27657:217;27418:456;26596:1293;26563:1337;27928:14;;;;;;;;;;;:51;;;;;27966:13;27960:19;;:2;:19;;;;27928:51;:126;;;;;28011:42;27997:57;;:2;:57;;;;27928:126;27910:205;;;28099:4;28082:10;:14;28093:2;28082:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;27910:205;28125:28;28156:24;28174:4;28156:9;:24::i;:::-;28125:55;;28191:12;28230:18;;28206:20;:42;;28191:57;;28276:7;:35;;;;;28300:11;;;;;;;;;;;28276:35;:61;;;;;28329:8;;;;;;;;;;;28328:9;28276:61;:107;;;;;28354:25;:29;28380:2;28354:29;;;;;;;;;;;;;;;;;;;;;;;;;28276:107;:150;;;;;28401:19;:25;28421:4;28401:25;;;;;;;;;;;;;;;;;;;;;;;;;28400:26;28276:150;:191;;;;;28444:19;:23;28464:2;28444:23;;;;;;;;;;;;;;;;;;;;;;;;;28443:24;28276:191;28259:318;;;28505:4;28494:8;;:15;;;;;;;;;;;;;;;;;;28524:10;:8;:10::i;:::-;28560:5;28549:8;;:16;;;;;;;;;;;;;;;;;;28259:318;28587:12;28603:8;;;;;;;;;;;28602:9;28587:24;;28625:19;:25;28645:4;28625:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;28654:19;:23;28674:2;28654:23;;;;;;;;;;;;;;;;;;;;;;;;;28625:52;28622:99;;;28704:5;28694:15;;28622:99;28733:12;28763:7;28760:859;;;28790:25;:29;28816:2;28790:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;28839:1;28823:13;;:17;28790:50;28786:689;;;28888:3;28874:13;;28867:6;:20;;;;:::i;:::-;:24;;;;:::i;:::-;28860:31;;28946:13;;28933:10;;28926:4;:17;;;;:::i;:::-;:33;;;;:::i;:::-;28910:12;;:49;;;;;;;:::i;:::-;;;;;;;;29026:13;;29007:16;;29000:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;28978:18;;:61;;;;;;;:::i;:::-;;;;;;;;29096:13;;29082:11;;29075:4;:18;;;;:::i;:::-;:34;;;;:::i;:::-;29058:13;;:51;;;;;;;:::i;:::-;;;;;;;;28786:689;;;29147:25;:31;29173:4;29147:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;29197:1;29182:12;;:16;29147:51;29144:331;;;29246:3;29233:12;;29226:6;:19;;;;:::i;:::-;:23;;;;:::i;:::-;29219:30;;29303:12;;29291:9;;29284:4;:16;;;;:::i;:::-;:31;;;;:::i;:::-;29268:12;;:47;;;;;;;:::i;:::-;;;;;;;;29381:12;;29363:15;;29356:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;29334:18;;:59;;;;;;;:::i;:::-;;;;;;;;29447:12;;29435:10;;29429:4;:16;;;;:::i;:::-;:30;;;;:::i;:::-;29412:13;;:47;;;;;;;:::i;:::-;;;;;;;;29144:331;28786:689;29499:2;29492:4;:9;29489:90;;;29521:42;29537:4;29551;29558;29521:15;:42::i;:::-;29489:90;29603:4;29593:14;;;;;:::i;:::-;;;28760:859;29629:33;29645:4;29651:2;29655:6;29629:15;:33::i;:::-;26186:3484;;;;26073:3597;;;;:::o;6119:240::-;6239:7;6297:1;6292;:6;;6300:12;6284:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;6339:1;6335;:5;6328:12;;6119:240;;;;;:::o;10805:573::-;10963:1;10945:20;;:6;:20;;;10937:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;11047:1;11026:23;;:9;:23;;;11018:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;11102:47;11123:6;11131:9;11142:6;11102:20;:47::i;:::-;11182:71;11204:6;11182:71;;;;;;;;;;;;;;;;;:9;:17;11192:6;11182:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;11162:9;:17;11172:6;11162:17;;;;;;;;;;;;;;;:91;;;;11287:32;11312:6;11287:9;:20;11297:9;11287:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;11264:9;:20;11274:9;11264:20;;;;;;;;;;;;;;;:55;;;;11352:9;11335:35;;11344:6;11335:35;;;11363:6;11335:35;;;;;;:::i;:::-;;;;;;;;10805:573;;;:::o;25298:188::-;25415:5;25381:25;:31;25407:4;25381:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;25472:5;25438:40;;25466:4;25438:40;;;;;;;;;;;;25298:188;;:::o;30600:905::-;30639:23;30665:24;30683:4;30665:9;:24::i;:::-;30639:50;;30700:25;30764:13;;30749:12;;30728:18;;:33;;;;:::i;:::-;:49;;;;:::i;:::-;30700:77;;30812:1;30793:15;:20;:48;;;;30838:3;30817:17;:24;30793:48;30790:62;;;30844:7;;;;30790:62;30864:26;30893:15;30864:44;;30921:36;30938:18;30921:16;:36::i;:::-;30971:18;30992:21;30971:42;;31026:23;31082:17;31063:18;;31052:10;:29;;;;:::i;:::-;:47;;;;:::i;:::-;31026:73;;31110:17;31154;31141:12;;31130:10;:23;;;;:::i;:::-;:41;;;;:::i;:::-;31110:61;;31182:18;31228:17;31214:13;;31203:10;:24;;;;:::i;:::-;:42;;;;:::i;:::-;31182:63;;31266:15;;;;;;;;;;;31258:33;;:50;31292:15;31258:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31327:9;;;;;;;;;;;31319:27;;:38;31347:9;31319:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31376:11;;;;;;;;;;;31368:29;;:41;31398:10;31368:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31436:1;31420:13;:17;;;;31469:1;31448:18;:22;;;;31496:1;31481:12;:16;;;;30628:877;;;;;;;30600:905;:::o;12586:125::-;;;;:::o;29678:476::-;29744:21;29782:1;29768:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29744:40;;29813:4;29795;29800:1;29795:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;29839:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29829:4;29834:1;29829:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;29874:62;29891:4;29906:15;29924:11;29874:8;:62::i;:::-;29947:15;:66;;;30028:11;30054:1;30071:4;30098;30118:15;29947:197;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29733:421;29678:476;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;523:117::-;632:1;629;622:12;769:90;803:7;846:5;839:13;832:21;821:32;;769:90;;;:::o;865:116::-;935:21;950:5;935:21;:::i;:::-;928:5;925:32;915:60;;971:1;968;961:12;915:60;865:116;:::o;987:133::-;1030:5;1068:6;1055:20;1046:29;;1084:30;1108:5;1084:30;:::i;:::-;987:133;;;;:::o;1126:323::-;1182:6;1231:2;1219:9;1210:7;1206:23;1202:32;1199:119;;;1237:79;;:::i;:::-;1199:119;1357:1;1382:50;1424:7;1415:6;1404:9;1400:22;1382:50;:::i;:::-;1372:60;;1328:114;1126:323;;;;:::o;1455:109::-;1536:21;1551:5;1536:21;:::i;:::-;1531:3;1524:34;1455:109;;:::o;1570:210::-;1657:4;1695:2;1684:9;1680:18;1672:26;;1708:65;1770:1;1759:9;1755:17;1746:6;1708:65;:::i;:::-;1570:210;;;;:::o;1786:99::-;1838:6;1872:5;1866:12;1856:22;;1786:99;;;:::o;1891:169::-;1975:11;2009:6;2004:3;1997:19;2049:4;2044:3;2040:14;2025:29;;1891:169;;;;:::o;2066:246::-;2147:1;2157:113;2171:6;2168:1;2165:13;2157:113;;;2256:1;2251:3;2247:11;2241:18;2237:1;2232:3;2228:11;2221:39;2193:2;2190:1;2186:10;2181:15;;2157:113;;;2304:1;2295:6;2290:3;2286:16;2279:27;2128:184;2066:246;;;:::o;2318:102::-;2359:6;2410:2;2406:7;2401:2;2394:5;2390:14;2386:28;2376:38;;2318:102;;;:::o;2426:377::-;2514:3;2542:39;2575:5;2542:39;:::i;:::-;2597:71;2661:6;2656:3;2597:71;:::i;:::-;2590:78;;2677:65;2735:6;2730:3;2723:4;2716:5;2712:16;2677:65;:::i;:::-;2767:29;2789:6;2767:29;:::i;:::-;2762:3;2758:39;2751:46;;2518:285;2426:377;;;;:::o;2809:313::-;2922:4;2960:2;2949:9;2945:18;2937:26;;3009:9;3003:4;2999:20;2995:1;2984:9;2980:17;2973:47;3037:78;3110:4;3101:6;3037:78;:::i;:::-;3029:86;;2809:313;;;;:::o;3128:126::-;3165:7;3205:42;3198:5;3194:54;3183:65;;3128:126;;;:::o;3260:96::-;3297:7;3326:24;3344:5;3326:24;:::i;:::-;3315:35;;3260:96;;;:::o;3362:122::-;3435:24;3453:5;3435:24;:::i;:::-;3428:5;3425:35;3415:63;;3474:1;3471;3464:12;3415:63;3362:122;:::o;3490:139::-;3536:5;3574:6;3561:20;3552:29;;3590:33;3617:5;3590:33;:::i;:::-;3490:139;;;;:::o;3635:122::-;3708:24;3726:5;3708:24;:::i;:::-;3701:5;3698:35;3688:63;;3747:1;3744;3737:12;3688:63;3635:122;:::o;3763:139::-;3809:5;3847:6;3834:20;3825:29;;3863:33;3890:5;3863:33;:::i;:::-;3763:139;;;;:::o;3908:474::-;3976:6;3984;4033:2;4021:9;4012:7;4008:23;4004:32;4001:119;;;4039:79;;:::i;:::-;4001:119;4159:1;4184:53;4229:7;4220:6;4209:9;4205:22;4184:53;:::i;:::-;4174:63;;4130:117;4286:2;4312:53;4357:7;4348:6;4337:9;4333:22;4312:53;:::i;:::-;4302:63;;4257:118;3908:474;;;;;:::o;4388:329::-;4447:6;4496:2;4484:9;4475:7;4471:23;4467:32;4464:119;;;4502:79;;:::i;:::-;4464:119;4622:1;4647:53;4692:7;4683:6;4672:9;4668:22;4647:53;:::i;:::-;4637:63;;4593:117;4388:329;;;;:::o;4723:60::-;4751:3;4772:5;4765:12;;4723:60;;;:::o;4789:142::-;4839:9;4872:53;4890:34;4899:24;4917:5;4899:24;:::i;:::-;4890:34;:::i;:::-;4872:53;:::i;:::-;4859:66;;4789:142;;;:::o;4937:126::-;4987:9;5020:37;5051:5;5020:37;:::i;:::-;5007:50;;4937:126;;;:::o;5069:153::-;5146:9;5179:37;5210:5;5179:37;:::i;:::-;5166:50;;5069:153;;;:::o;5228:185::-;5342:64;5400:5;5342:64;:::i;:::-;5337:3;5330:77;5228:185;;:::o;5419:276::-;5539:4;5577:2;5566:9;5562:18;5554:26;;5590:98;5685:1;5674:9;5670:17;5661:6;5590:98;:::i;:::-;5419:276;;;;:::o;5701:329::-;5760:6;5809:2;5797:9;5788:7;5784:23;5780:32;5777:119;;;5815:79;;:::i;:::-;5777:119;5935:1;5960:53;6005:7;5996:6;5985:9;5981:22;5960:53;:::i;:::-;5950:63;;5906:117;5701:329;;;;:::o;6036:619::-;6113:6;6121;6129;6178:2;6166:9;6157:7;6153:23;6149:32;6146:119;;;6184:79;;:::i;:::-;6146:119;6304:1;6329:53;6374:7;6365:6;6354:9;6350:22;6329:53;:::i;:::-;6319:63;;6275:117;6431:2;6457:53;6502:7;6493:6;6482:9;6478:22;6457:53;:::i;:::-;6447:63;;6402:118;6559:2;6585:53;6630:7;6621:6;6610:9;6606:22;6585:53;:::i;:::-;6575:63;;6530:118;6036:619;;;;;:::o;6661:104::-;6706:7;6735:24;6753:5;6735:24;:::i;:::-;6724:35;;6661:104;;;:::o;6771:142::-;6874:32;6900:5;6874:32;:::i;:::-;6869:3;6862:45;6771:142;;:::o;6919:254::-;7028:4;7066:2;7055:9;7051:18;7043:26;;7079:87;7163:1;7152:9;7148:17;7139:6;7079:87;:::i;:::-;6919:254;;;;:::o;7179:86::-;7214:7;7254:4;7247:5;7243:16;7232:27;;7179:86;;;:::o;7271:112::-;7354:22;7370:5;7354:22;:::i;:::-;7349:3;7342:35;7271:112;;:::o;7389:214::-;7478:4;7516:2;7505:9;7501:18;7493:26;;7529:67;7593:1;7582:9;7578:17;7569:6;7529:67;:::i;:::-;7389:214;;;;:::o;7609:118::-;7696:24;7714:5;7696:24;:::i;:::-;7691:3;7684:37;7609:118;;:::o;7733:222::-;7826:4;7864:2;7853:9;7849:18;7841:26;;7877:71;7945:1;7934:9;7930:17;7921:6;7877:71;:::i;:::-;7733:222;;;;:::o;7961:468::-;8026:6;8034;8083:2;8071:9;8062:7;8058:23;8054:32;8051:119;;;8089:79;;:::i;:::-;8051:119;8209:1;8234:53;8279:7;8270:6;8259:9;8255:22;8234:53;:::i;:::-;8224:63;;8180:117;8336:2;8362:50;8404:7;8395:6;8384:9;8380:22;8362:50;:::i;:::-;8352:60;;8307:115;7961:468;;;;;:::o;8435:619::-;8512:6;8520;8528;8577:2;8565:9;8556:7;8552:23;8548:32;8545:119;;;8583:79;;:::i;:::-;8545:119;8703:1;8728:53;8773:7;8764:6;8753:9;8749:22;8728:53;:::i;:::-;8718:63;;8674:117;8830:2;8856:53;8901:7;8892:6;8881:9;8877:22;8856:53;:::i;:::-;8846:63;;8801:118;8958:2;8984:53;9029:7;9020:6;9009:9;9005:22;8984:53;:::i;:::-;8974:63;;8929:118;8435:619;;;;;:::o;9060:474::-;9128:6;9136;9185:2;9173:9;9164:7;9160:23;9156:32;9153:119;;;9191:79;;:::i;:::-;9153:119;9311:1;9336:53;9381:7;9372:6;9361:9;9357:22;9336:53;:::i;:::-;9326:63;;9282:117;9438:2;9464:53;9509:7;9500:6;9489:9;9485:22;9464:53;:::i;:::-;9454:63;;9409:118;9060:474;;;;;:::o;9540:182::-;9680:34;9676:1;9668:6;9664:14;9657:58;9540:182;:::o;9728:366::-;9870:3;9891:67;9955:2;9950:3;9891:67;:::i;:::-;9884:74;;9967:93;10056:3;9967:93;:::i;:::-;10085:2;10080:3;10076:12;10069:19;;9728:366;;;:::o;10100:419::-;10266:4;10304:2;10293:9;10289:18;10281:26;;10353:9;10347:4;10343:20;10339:1;10328:9;10324:17;10317:47;10381:131;10507:4;10381:131;:::i;:::-;10373:139;;10100:419;;;:::o;10525:180::-;10573:77;10570:1;10563:88;10670:4;10667:1;10660:15;10694:4;10691:1;10684:15;10711:320;10755:6;10792:1;10786:4;10782:12;10772:22;;10839:1;10833:4;10829:12;10860:18;10850:81;;10916:4;10908:6;10904:17;10894:27;;10850:81;10978:2;10970:6;10967:14;10947:18;10944:38;10941:84;;10997:18;;:::i;:::-;10941:84;10762:269;10711:320;;;:::o;11037:180::-;11085:77;11082:1;11075:88;11182:4;11179:1;11172:15;11206:4;11203:1;11196:15;11223:191;11263:3;11282:20;11300:1;11282:20;:::i;:::-;11277:25;;11316:20;11334:1;11316:20;:::i;:::-;11311:25;;11359:1;11356;11352:9;11345:16;;11380:3;11377:1;11374:10;11371:36;;;11387:18;;:::i;:::-;11371:36;11223:191;;;;:::o;11420:178::-;11560:30;11556:1;11548:6;11544:14;11537:54;11420:178;:::o;11604:366::-;11746:3;11767:67;11831:2;11826:3;11767:67;:::i;:::-;11760:74;;11843:93;11932:3;11843:93;:::i;:::-;11961:2;11956:3;11952:12;11945:19;;11604:366;;;:::o;11976:419::-;12142:4;12180:2;12169:9;12165:18;12157:26;;12229:9;12223:4;12219:20;12215:1;12204:9;12200:17;12193:47;12257:131;12383:4;12257:131;:::i;:::-;12249:139;;11976:419;;;:::o;12401:244::-;12541:34;12537:1;12529:6;12525:14;12518:58;12610:27;12605:2;12597:6;12593:15;12586:52;12401:244;:::o;12651:366::-;12793:3;12814:67;12878:2;12873:3;12814:67;:::i;:::-;12807:74;;12890:93;12979:3;12890:93;:::i;:::-;13008:2;13003:3;12999:12;12992:19;;12651:366;;;:::o;13023:419::-;13189:4;13227:2;13216:9;13212:18;13204:26;;13276:9;13270:4;13266:20;13262:1;13251:9;13247:17;13240:47;13304:131;13430:4;13304:131;:::i;:::-;13296:139;;13023:419;;;:::o;13448:225::-;13588:34;13584:1;13576:6;13572:14;13565:58;13657:8;13652:2;13644:6;13640:15;13633:33;13448:225;:::o;13679:366::-;13821:3;13842:67;13906:2;13901:3;13842:67;:::i;:::-;13835:74;;13918:93;14007:3;13918:93;:::i;:::-;14036:2;14031:3;14027:12;14020:19;;13679:366;;;:::o;14051:419::-;14217:4;14255:2;14244:9;14240:18;14232:26;;14304:9;14298:4;14294:20;14290:1;14279:9;14275:17;14268:47;14332:131;14458:4;14332:131;:::i;:::-;14324:139;;14051:419;;;:::o;14476:223::-;14616:34;14612:1;14604:6;14600:14;14593:58;14685:6;14680:2;14672:6;14668:15;14661:31;14476:223;:::o;14705:366::-;14847:3;14868:67;14932:2;14927:3;14868:67;:::i;:::-;14861:74;;14944:93;15033:3;14944:93;:::i;:::-;15062:2;15057:3;15053:12;15046:19;;14705:366;;;:::o;15077:419::-;15243:4;15281:2;15270:9;15266:18;15258:26;;15330:9;15324:4;15320:20;15316:1;15305:9;15301:17;15294:47;15358:131;15484:4;15358:131;:::i;:::-;15350:139;;15077:419;;;:::o;15502:221::-;15642:34;15638:1;15630:6;15626:14;15619:58;15711:4;15706:2;15698:6;15694:15;15687:29;15502:221;:::o;15729:366::-;15871:3;15892:67;15956:2;15951:3;15892:67;:::i;:::-;15885:74;;15968:93;16057:3;15968:93;:::i;:::-;16086:2;16081:3;16077:12;16070:19;;15729:366;;;:::o;16101:419::-;16267:4;16305:2;16294:9;16290:18;16282:26;;16354:9;16348:4;16344:20;16340:1;16329:9;16325:17;16318:47;16382:131;16508:4;16382:131;:::i;:::-;16374:139;;16101:419;;;:::o;16526:224::-;16666:34;16662:1;16654:6;16650:14;16643:58;16735:7;16730:2;16722:6;16718:15;16711:32;16526:224;:::o;16756:366::-;16898:3;16919:67;16983:2;16978:3;16919:67;:::i;:::-;16912:74;;16995:93;17084:3;16995:93;:::i;:::-;17113:2;17108:3;17104:12;17097:19;;16756:366;;;:::o;17128:419::-;17294:4;17332:2;17321:9;17317:18;17309:26;;17381:9;17375:4;17371:20;17367:1;17356:9;17352:17;17345:47;17409:131;17535:4;17409:131;:::i;:::-;17401:139;;17128:419;;;:::o;17553:222::-;17693:34;17689:1;17681:6;17677:14;17670:58;17762:5;17757:2;17749:6;17745:15;17738:30;17553:222;:::o;17781:366::-;17923:3;17944:67;18008:2;18003:3;17944:67;:::i;:::-;17937:74;;18020:93;18109:3;18020:93;:::i;:::-;18138:2;18133:3;18129:12;18122:19;;17781:366;;;:::o;18153:419::-;18319:4;18357:2;18346:9;18342:18;18334:26;;18406:9;18400:4;18396:20;18392:1;18381:9;18377:17;18370:47;18434:131;18560:4;18434:131;:::i;:::-;18426:139;;18153:419;;;:::o;18578:236::-;18718:34;18714:1;18706:6;18702:14;18695:58;18787:19;18782:2;18774:6;18770:15;18763:44;18578:236;:::o;18820:366::-;18962:3;18983:67;19047:2;19042:3;18983:67;:::i;:::-;18976:74;;19059:93;19148:3;19059:93;:::i;:::-;19177:2;19172:3;19168:12;19161:19;;18820:366;;;:::o;19192:419::-;19358:4;19396:2;19385:9;19381:18;19373:26;;19445:9;19439:4;19435:20;19431:1;19420:9;19416:17;19409:47;19473:131;19599:4;19473:131;:::i;:::-;19465:139;;19192:419;;;:::o;19617:172::-;19757:24;19753:1;19745:6;19741:14;19734:48;19617:172;:::o;19795:366::-;19937:3;19958:67;20022:2;20017:3;19958:67;:::i;:::-;19951:74;;20034:93;20123:3;20034:93;:::i;:::-;20152:2;20147:3;20143:12;20136:19;;19795:366;;;:::o;20167:419::-;20333:4;20371:2;20360:9;20356:18;20348:26;;20420:9;20414:4;20410:20;20406:1;20395:9;20391:17;20384:47;20448:131;20574:4;20448:131;:::i;:::-;20440:139;;20167:419;;;:::o;20592:297::-;20732:34;20728:1;20720:6;20716:14;20709:58;20801:34;20796:2;20788:6;20784:15;20777:59;20870:11;20865:2;20857:6;20853:15;20846:36;20592:297;:::o;20895:366::-;21037:3;21058:67;21122:2;21117:3;21058:67;:::i;:::-;21051:74;;21134:93;21223:3;21134:93;:::i;:::-;21252:2;21247:3;21243:12;21236:19;;20895:366;;;:::o;21267:419::-;21433:4;21471:2;21460:9;21456:18;21448:26;;21520:9;21514:4;21510:20;21506:1;21495:9;21491:17;21484:47;21548:131;21674:4;21548:131;:::i;:::-;21540:139;;21267:419;;;:::o;21692:240::-;21832:34;21828:1;21820:6;21816:14;21809:58;21901:23;21896:2;21888:6;21884:15;21877:48;21692:240;:::o;21938:366::-;22080:3;22101:67;22165:2;22160:3;22101:67;:::i;:::-;22094:74;;22177:93;22266:3;22177:93;:::i;:::-;22295:2;22290:3;22286:12;22279:19;;21938:366;;;:::o;22310:419::-;22476:4;22514:2;22503:9;22499:18;22491:26;;22563:9;22557:4;22553:20;22549:1;22538:9;22534:17;22527:47;22591:131;22717:4;22591:131;:::i;:::-;22583:139;;22310:419;;;:::o;22735:241::-;22875:34;22871:1;22863:6;22859:14;22852:58;22944:24;22939:2;22931:6;22927:15;22920:49;22735:241;:::o;22982:366::-;23124:3;23145:67;23209:2;23204:3;23145:67;:::i;:::-;23138:74;;23221:93;23310:3;23221:93;:::i;:::-;23339:2;23334:3;23330:12;23323:19;;22982:366;;;:::o;23354:419::-;23520:4;23558:2;23547:9;23543:18;23535:26;;23607:9;23601:4;23597:20;23593:1;23582:9;23578:17;23571:47;23635:131;23761:4;23635:131;:::i;:::-;23627:139;;23354:419;;;:::o;23779:410::-;23819:7;23842:20;23860:1;23842:20;:::i;:::-;23837:25;;23876:20;23894:1;23876:20;:::i;:::-;23871:25;;23931:1;23928;23924:9;23953:30;23971:11;23953:30;:::i;:::-;23942:41;;24132:1;24123:7;24119:15;24116:1;24113:22;24093:1;24086:9;24066:83;24043:139;;24162:18;;:::i;:::-;24043:139;23827:362;23779:410;;;;:::o;24195:180::-;24243:77;24240:1;24233:88;24340:4;24337:1;24330:15;24364:4;24361:1;24354:15;24381:185;24421:1;24438:20;24456:1;24438:20;:::i;:::-;24433:25;;24472:20;24490:1;24472:20;:::i;:::-;24467:25;;24511:1;24501:35;;24516:18;;:::i;:::-;24501:35;24558:1;24555;24551:9;24546:14;;24381:185;;;;:::o;24572:194::-;24612:4;24632:20;24650:1;24632:20;:::i;:::-;24627:25;;24666:20;24684:1;24666:20;:::i;:::-;24661:25;;24710:1;24707;24703:9;24695:17;;24734:1;24728:4;24725:11;24722:37;;;24739:18;;:::i;:::-;24722:37;24572:194;;;;:::o;24772:180::-;24820:77;24817:1;24810:88;24917:4;24914:1;24907:15;24941:4;24938:1;24931:15;24958:180;25006:77;25003:1;24996:88;25103:4;25100:1;25093:15;25127:4;25124:1;25117:15;25144:143;25201:5;25232:6;25226:13;25217:22;;25248:33;25275:5;25248:33;:::i;:::-;25144:143;;;;:::o;25293:351::-;25363:6;25412:2;25400:9;25391:7;25387:23;25383:32;25380:119;;;25418:79;;:::i;:::-;25380:119;25538:1;25563:64;25619:7;25610:6;25599:9;25595:22;25563:64;:::i;:::-;25553:74;;25509:128;25293:351;;;;:::o;25650:85::-;25695:7;25724:5;25713:16;;25650:85;;;:::o;25741:158::-;25799:9;25832:61;25850:42;25859:32;25885:5;25859:32;:::i;:::-;25850:42;:::i;:::-;25832:61;:::i;:::-;25819:74;;25741:158;;;:::o;25905:147::-;26000:45;26039:5;26000:45;:::i;:::-;25995:3;25988:58;25905:147;;:::o;26058:114::-;26125:6;26159:5;26153:12;26143:22;;26058:114;;;:::o;26178:184::-;26277:11;26311:6;26306:3;26299:19;26351:4;26346:3;26342:14;26327:29;;26178:184;;;;:::o;26368:132::-;26435:4;26458:3;26450:11;;26488:4;26483:3;26479:14;26471:22;;26368:132;;;:::o;26506:108::-;26583:24;26601:5;26583:24;:::i;:::-;26578:3;26571:37;26506:108;;:::o;26620:179::-;26689:10;26710:46;26752:3;26744:6;26710:46;:::i;:::-;26788:4;26783:3;26779:14;26765:28;;26620:179;;;;:::o;26805:113::-;26875:4;26907;26902:3;26898:14;26890:22;;26805:113;;;:::o;26954:732::-;27073:3;27102:54;27150:5;27102:54;:::i;:::-;27172:86;27251:6;27246:3;27172:86;:::i;:::-;27165:93;;27282:56;27332:5;27282:56;:::i;:::-;27361:7;27392:1;27377:284;27402:6;27399:1;27396:13;27377:284;;;27478:6;27472:13;27505:63;27564:3;27549:13;27505:63;:::i;:::-;27498:70;;27591:60;27644:6;27591:60;:::i;:::-;27581:70;;27437:224;27424:1;27421;27417:9;27412:14;;27377:284;;;27381:14;27677:3;27670:10;;27078:608;;;26954:732;;;;:::o;27692:831::-;27955:4;27993:3;27982:9;27978:19;27970:27;;28007:71;28075:1;28064:9;28060:17;28051:6;28007:71;:::i;:::-;28088:80;28164:2;28153:9;28149:18;28140:6;28088:80;:::i;:::-;28215:9;28209:4;28205:20;28200:2;28189:9;28185:18;28178:48;28243:108;28346:4;28337:6;28243:108;:::i;:::-;28235:116;;28361:72;28429:2;28418:9;28414:18;28405:6;28361:72;:::i;:::-;28443:73;28511:3;28500:9;28496:19;28487:6;28443:73;:::i;:::-;27692:831;;;;;;;;:::o

Swarm Source

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