ETH Price: $2,356.70 (+0.67%)
Gas: 4.88 Gwei

Token

GRUMPYDOGE PUNKS (GPUNKS)
 

Overview

Max Total Supply

1,000,000,000,000 GPUNKS

Holders

139

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
68,982,804.033965746 GPUNKS

Value
$0.00
0x197830567ea9e42cc994f7fb3edbff3369c19dd9
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:
GPUNKS

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/*

 TG: https://t.me/grumpydogeeth
 Web: https://grumpydogepunks.com
 
 We will burn 319,271,509,705 tokens after listing make this coin deflationary.
 2% Reflection to all Holders after 2 days, 0% on the first 2 days.
 The liquidity fee will be 10%
 The sell fee is dynamically scaled to the sell's price impact, with a minimum fee of 10% and a maximum fee of 40%.

*/


// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;

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

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}


interface IERC20 {

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


}

library SafeMath {

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

        return c;
    }

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

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

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }


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

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

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

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

library Address {

    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }


    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {

            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    uint256 private _lockTime;

    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 transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }

    function getUnlockTime() public view returns (uint256) {
        return _lockTime;
    }

    function getTime() public view returns (uint256) {
        return block.timestamp;
    }

    function lock(uint256 time) public virtual onlyOwner {
        _previousOwner = _owner;
        _owner = address(0);
        _lockTime = block.timestamp + time;
        emit OwnershipTransferred(_owner, address(0));
    }

    function unlock() public virtual {
        require(_previousOwner == msg.sender, "You don't have permission to unlock");
        require(block.timestamp > _lockTime , "Contract is locked until 7 days");
        emit OwnershipTransferred(_owner, _previousOwner);
        _owner = _previousOwner;
    }
}

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


// pragma solidity >=0.5.0;

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

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

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

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

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

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

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

    function initialize(address, address) external;
}

// pragma solidity >=0.6.2;

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



// pragma solidity >=0.6.2;

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 GPUNKS is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;

    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => User) private cooldown;

    mapping (address => bool) private _isSniper;
    address[] private _confirmedSnipers;

    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _isExcluded;
    address[] private _excluded;

    uint256 private constant MAX = ~uint256(0);
    uint256 private _tTotal = 1000000000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;

    string private _name = "GRUMPYDOGE PUNKS";
    string private _symbol = "GPUNKS";
    uint8 private _decimals = 9;
    
    address payable private teamDevAddress;

    uint256 public launchTime;
    uint256 private buyLimitEnd;
    
    
    uint256 public _taxFee = 0;
    uint256 private _previousTaxFee = _taxFee;
    uint256 public _liquidityFee=0;
    uint256 private _previousLiquidityFee = _liquidityFee;
    uint256 public _baseLiqFee;
    
    bool private _useImpactFeeSetter = true;
    uint256 public _feeMultiplier = 1000;
    
    
    uint256 public _minTrigger = 0;
    uint256 public k = 10;
    uint256 public _baseAmount = 1*10**15;

    uint private _maxBuyAmount;
    bool private _cooldownEnabled=true;

    bool public tradingOpen = false; //once switched on, can never be switched off.
    
    IUniswapV2Router02 public uniswapRouter;
    address public uniswapPair;

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = false;
    bool public buyBackEnabled = false;
    
    struct User {
        uint256 buy;
        uint256 sell;
        bool exists;
    }
    
    event BuyBackEnabledUpdated(bool enabled);
  

    event SwapETHForTokens(
        uint256 amountIn,
        address[] path
    );

    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );

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

    constructor () {
        _rOwned[_msgSender()] = _rTotal;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    function enableTrading(uint256 maxBuyAmount) external onlyOwner() {
        _maxBuyAmount = maxBuyAmount;
        _baseLiqFee=10;
        _liquidityFee=_baseLiqFee;
        _taxFee=0;
        swapAndLiquifyEnabled = true;
        tradingOpen = true;
        launchTime = block.timestamp;
        buyLimitEnd = block.timestamp + (240 seconds);
    }

    function initContract() external onlyOwner() {
        IUniswapV2Router02 _uniswapRouter = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapPair = IUniswapV2Factory(_uniswapRouter.factory())
        .createPair(address(this), _uniswapRouter.WETH());

        uniswapRouter = _uniswapRouter;

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;

        
        _isSniper[address(0x7589319ED0fD750017159fb4E4d96C63966173C1)] = true;
        _confirmedSnipers.push(address(0x7589319ED0fD750017159fb4E4d96C63966173C1));

        _isSniper[address(0x65A67DF75CCbF57828185c7C050e34De64d859d0)] = true;
        _confirmedSnipers.push(address(0x65A67DF75CCbF57828185c7C050e34De64d859d0));

        _isSniper[address(0xE031b36b53E53a292a20c5F08fd1658CDdf74fce)] = true;
        _confirmedSnipers.push(address(0xE031b36b53E53a292a20c5F08fd1658CDdf74fce));

        _isSniper[address(0xE031b36b53E53a292a20c5F08fd1658CDdf74fce)] = true;
        _confirmedSnipers.push(address(0xE031b36b53E53a292a20c5F08fd1658CDdf74fce));

        _isSniper[address(0xe516bDeE55b0b4e9bAcaF6285130De15589B1345)] = true;
        _confirmedSnipers.push(address(0xe516bDeE55b0b4e9bAcaF6285130De15589B1345));

        _isSniper[address(0xa1ceC245c456dD1bd9F2815a6955fEf44Eb4191b)] = true;
        _confirmedSnipers.push(address(0xa1ceC245c456dD1bd9F2815a6955fEf44Eb4191b));

        _isSniper[address(0xd7d3EE77D35D0a56F91542D4905b1a2b1CD7cF95)] = true;
        _confirmedSnipers.push(address(0xd7d3EE77D35D0a56F91542D4905b1a2b1CD7cF95));

        _isSniper[address(0xFe76f05dc59fEC04184fA0245AD0C3CF9a57b964)] = true;
        _confirmedSnipers.push(address(0xFe76f05dc59fEC04184fA0245AD0C3CF9a57b964));

        _isSniper[address(0xDC81a3450817A58D00f45C86d0368290088db848)] = true;
        _confirmedSnipers.push(address(0xDC81a3450817A58D00f45C86d0368290088db848));

        _isSniper[address(0x45fD07C63e5c316540F14b2002B085aEE78E3881)] = true;
        _confirmedSnipers.push(address(0x45fD07C63e5c316540F14b2002B085aEE78E3881));

        _isSniper[address(0x27F9Adb26D532a41D97e00206114e429ad58c679)] = true;
        _confirmedSnipers.push(address(0x27F9Adb26D532a41D97e00206114e429ad58c679));

        _isSniper[address(0x9282dc5c422FA91Ff2F6fF3a0b45B7BF97CF78E7)] = true;
        _confirmedSnipers.push(address(0x9282dc5c422FA91Ff2F6fF3a0b45B7BF97CF78E7));

        _isSniper[address(0xfad95B6089c53A0D1d861eabFaadd8901b0F8533)] = true;
        _confirmedSnipers.push(address(0xfad95B6089c53A0D1d861eabFaadd8901b0F8533));

        _isSniper[address(0x1d6E8BAC6EA3730825bde4B005ed7B2B39A2932d)] = true;
        _confirmedSnipers.push(address(0x1d6E8BAC6EA3730825bde4B005ed7B2B39A2932d));

        _isSniper[address(0x000000000000084e91743124a982076C59f10084)] = true;
        _confirmedSnipers.push(address(0x000000000000084e91743124a982076C59f10084));

        _isSniper[address(0x6dA4bEa09C3aA0761b09b19837D9105a52254303)] = true;
        _confirmedSnipers.push(address(0x6dA4bEa09C3aA0761b09b19837D9105a52254303));

        _isSniper[address(0x323b7F37d382A68B0195b873aF17CeA5B67cd595)] = true;
        _confirmedSnipers.push(address(0x323b7F37d382A68B0195b873aF17CeA5B67cd595));

        _isSniper[address(0x000000005804B22091aa9830E50459A15E7C9241)] = true;
        _confirmedSnipers.push(address(0x000000005804B22091aa9830E50459A15E7C9241));

        _isSniper[address(0xA3b0e79935815730d942A444A84d4Bd14A339553)] = true;
        _confirmedSnipers.push(address(0xA3b0e79935815730d942A444A84d4Bd14A339553));

        _isSniper[address(0xf6da21E95D74767009acCB145b96897aC3630BaD)] = true;
        _confirmedSnipers.push(address(0xf6da21E95D74767009acCB145b96897aC3630BaD));

        _isSniper[address(0x0000000000007673393729D5618DC555FD13f9aA)] = true;
        _confirmedSnipers.push(address(0x0000000000007673393729D5618DC555FD13f9aA));

        _isSniper[address(0x00000000000003441d59DdE9A90BFfb1CD3fABf1)] = true;
        _confirmedSnipers.push(address(0x00000000000003441d59DdE9A90BFfb1CD3fABf1));

        _isSniper[address(0x59903993Ae67Bf48F10832E9BE28935FEE04d6F6)] = true;
        _confirmedSnipers.push(address(0x59903993Ae67Bf48F10832E9BE28935FEE04d6F6));

        _isSniper[address(0x000000917de6037d52b1F0a306eeCD208405f7cd)] = true;
        _confirmedSnipers.push(address(0x000000917de6037d52b1F0a306eeCD208405f7cd));

        _isSniper[address(0x7100e690554B1c2FD01E8648db88bE235C1E6514)] = true;
        _confirmedSnipers.push(address(0x7100e690554B1c2FD01E8648db88bE235C1E6514));

        _isSniper[address(0x72b30cDc1583224381132D379A052A6B10725415)] = true;
        _confirmedSnipers.push(address(0x72b30cDc1583224381132D379A052A6B10725415));

        _isSniper[address(0x9eDD647D7d6Eceae6bB61D7785Ef66c5055A9bEE)] = true;
        _confirmedSnipers.push(address(0x9eDD647D7d6Eceae6bB61D7785Ef66c5055A9bEE));

        _isSniper[address(0xfe9d99ef02E905127239E85A611c29ad32c31c2F)] = true;
        _confirmedSnipers.push(address(0xfe9d99ef02E905127239E85A611c29ad32c31c2F));

        _isSniper[address(0x39608b6f20704889C51C0Ae28b1FCA8F36A5239b)] = true;
        _confirmedSnipers.push(address(0x39608b6f20704889C51C0Ae28b1FCA8F36A5239b));

        _isSniper[address(0xc496D84215d5018f6F53E7F6f12E45c9b5e8e8A9)] = true;
        _confirmedSnipers.push(address(0xc496D84215d5018f6F53E7F6f12E45c9b5e8e8A9));

        _isSniper[address(0x59341Bc6b4f3Ace878574b05914f43309dd678c7)] = true;
        _confirmedSnipers.push(address(0x59341Bc6b4f3Ace878574b05914f43309dd678c7));

        _isSniper[address(0xe986d48EfeE9ec1B8F66CD0b0aE8e3D18F091bDF)] = true;
        _confirmedSnipers.push(address(0xe986d48EfeE9ec1B8F66CD0b0aE8e3D18F091bDF));

        _isSniper[address(0x4aEB32e16DcaC00B092596ADc6CD4955EfdEE290)] = true;
        _confirmedSnipers.push(address(0x4aEB32e16DcaC00B092596ADc6CD4955EfdEE290));

        _isSniper[address(0x136F4B5b6A306091b280E3F251fa0E21b1280Cd5)] = true;
        _confirmedSnipers.push(address(0x136F4B5b6A306091b280E3F251fa0E21b1280Cd5));

        _isSniper[address(0x39608b6f20704889C51C0Ae28b1FCA8F36A5239b)] = true;
        _confirmedSnipers.push(address(0x39608b6f20704889C51C0Ae28b1FCA8F36A5239b));

        _isSniper[address(0x5B83A351500B631cc2a20a665ee17f0dC66e3dB7)] = true;
        _confirmedSnipers.push(address(0x5B83A351500B631cc2a20a665ee17f0dC66e3dB7));

        _isSniper[address(0xbCb05a3F85d34f0194C70d5914d5C4E28f11Cc02)] = true;
        _confirmedSnipers.push(address(0xbCb05a3F85d34f0194C70d5914d5C4E28f11Cc02));

        _isSniper[address(0x22246F9BCa9921Bfa9A3f8df5baBc5Bc8ee73850)] = true;
        _confirmedSnipers.push(address(0x22246F9BCa9921Bfa9A3f8df5baBc5Bc8ee73850));

        _isSniper[address(0x42d4C197036BD9984cA652303e07dD29fA6bdB37)] = true;
        _confirmedSnipers.push(address(0x42d4C197036BD9984cA652303e07dD29fA6bdB37));

        _isSniper[address(0x00000000003b3cc22aF3aE1EAc0440BcEe416B40)] = true;
        _confirmedSnipers.push(address(0x00000000003b3cc22aF3aE1EAc0440BcEe416B40));

        _isSniper[address(0x231DC6af3C66741f6Cf618884B953DF0e83C1A2A)] = true;
        _confirmedSnipers.push(address(0x231DC6af3C66741f6Cf618884B953DF0e83C1A2A));

        _isSniper[address(0xC6bF34596f74eb22e066a878848DfB9fC1CF4C65)] = true;
        _confirmedSnipers.push(address(0xC6bF34596f74eb22e066a878848DfB9fC1CF4C65));

        _isSniper[address(0x20f6fCd6B8813c4f98c0fFbD88C87c0255040Aa3)] = true;
        _confirmedSnipers.push(address(0x20f6fCd6B8813c4f98c0fFbD88C87c0255040Aa3));

        _isSniper[address(0xD334C5392eD4863C81576422B968C6FB90EE9f79)] = true;
        _confirmedSnipers.push(address(0xD334C5392eD4863C81576422B968C6FB90EE9f79));

        _isSniper[address(0xFFFFF6E70842330948Ca47254F2bE673B1cb0dB7)] = true;
        _confirmedSnipers.push(address(0xFFFFF6E70842330948Ca47254F2bE673B1cb0dB7));

        _isSniper[address(0xA39C50bf86e15391180240938F469a7bF4fDAe9a)] = true;
        _confirmedSnipers.push(address(0xA39C50bf86e15391180240938F469a7bF4fDAe9a));

        _isSniper[address(0xA39C50bf86e15391180240938F469a7bF4fDAe9a)] = true;
        _confirmedSnipers.push(address(0xA39C50bf86e15391180240938F469a7bF4fDAe9a));

        teamDevAddress = payable(0x4bCF0A70a20dFD45962d8ba28Ae9E643af970B8c);
    }

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

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

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

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

    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _tOwned[account];
        return tokenFromReflection(_rOwned[account]);
    }

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

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _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 isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function totalFees() public view returns (uint256) {
        return _tFeeTotal;
    }

  
    function deliver(uint256 tAmount) public {
        address sender = _msgSender();
        require(!_isExcluded[sender], "Excluded addresses cannot call this function");
        (uint256 rAmount,,,,,) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rTotal = _rTotal.sub(rAmount);
        _tFeeTotal = _tFeeTotal.add(tAmount);
    }


    function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferFee) {
            (uint256 rAmount,,,,,) = _getValues(tAmount);
            return rAmount;
        } else {
            (,uint256 rTransferAmount,,,,) = _getValues(tAmount);
            return rTransferAmount;
        }
    }

    function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount.div(currentRate);
    }

    function isRemovedSniper(address account) public view returns (bool) {
        return _isSniper[account];
    }

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

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

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) private {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(!_isSniper[recipient], "You have no power here!");
        require(!_isSniper[msg.sender], "You have no power here!");


        if(sender != owner() && recipient != owner()) {
            
            if (!tradingOpen) {
                if (!(sender == address(this) || recipient == address(this)
                || sender == address(owner()) || recipient == address(owner())
                || isExcludedFromFee(sender) || isExcludedFromFee(recipient))) {
                    require(tradingOpen, "Trading is not enabled");
                }
            }

            if(_cooldownEnabled) {
                if(!cooldown[msg.sender].exists) {
                    cooldown[msg.sender] = User(0,0,true);
                }
            }
        }
        
        //buy
        
        if(sender == uniswapPair && recipient != address(uniswapRouter) && !_isExcludedFromFee[recipient]) {
                require(tradingOpen, "Trading not yet enabled.");
                
                _liquidityFee=_baseLiqFee;
                
                if(_cooldownEnabled) {
                    if(buyLimitEnd > block.timestamp) {
                        require(amount <= _maxBuyAmount);
                        require(cooldown[recipient].buy < block.timestamp, "Your buy cooldown has not expired.");
                        cooldown[recipient].buy = block.timestamp + (45 seconds);
                    }
                }
                if(_cooldownEnabled) {
                    require(cooldown[recipient].sell < block.timestamp, "Your sell cooldown has not expired.");
                    cooldown[recipient].sell = block.timestamp + (15 seconds);
                }
        }

        //sell
        if (!inSwapAndLiquify && swapAndLiquifyEnabled && recipient == uniswapPair) {
            
            //get dynamic fee
            if(_useImpactFeeSetter) {
                    uint256 feeBasis = amount.mul(_feeMultiplier);
                    feeBasis = feeBasis.div(balanceOf(uniswapPair).add(amount));
                    setFee(feeBasis);
            }
            
            uint256 dynamicFee = _liquidityFee;
            
            //swap contract's tokens for ETH
            uint256 contractTokenBalance = balanceOf(address(this));
             if(contractTokenBalance > 0) {
                swapTokens(contractTokenBalance);
            }
            
            //buyback
            uint256 balance = address(this).balance;
            
            //buyback only if sell amount >= _minTrigger
            if (buyBackEnabled && amount >= _minTrigger) {
                
                uint256 ten = 10;
                                      
                uint256 buyBackAmount = _baseAmount.mul(ten.add(((dynamicFee.sub(_baseLiqFee)).mul(k)).div(_baseLiqFee))).div(10);                                                

                if (balance >= buyBackAmount)   buyBackTokens(buyBackAmount);
            }
            
            //restore dynamicFee after buyback
            _liquidityFee = dynamicFee;
        }

        bool takeFee = true;

        //if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]){
            takeFee = false;
        }

        //execute transfer
        _tokenTransfer(sender, recipient,amount,takeFee);
    }

    function swapTokens(uint256 contractTokenBalance) private lockTheSwap {

        uint256 initialBalance = address(this).balance;
        swapTokensForEth(contractTokenBalance);
        uint256 transferredBalance = address(this).balance.sub(initialBalance);
 
        transferToAddressETH(teamDevAddress, transferredBalance.div(2));

    }


    function buyBackTokens(uint256 amount) private lockTheSwap {
        if (amount > 0) {
            swapETHForTokens(amount);
        }
    }
    
    function setFee(uint256 impactFee) private {
        uint256 _impactFee = _baseLiqFee;
        if(impactFee < _baseLiqFee) {
            _impactFee = _baseLiqFee;
        } else if(impactFee > 40) {
            _impactFee = 40;
        } else {
            _impactFee = impactFee;
        }
        if(_impactFee.mod(2) != 0) {
            _impactFee++;
        }
        
        _liquidityFee = _impactFee;
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> eth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapRouter.WETH();

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

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

        emit SwapTokensForETH(tokenAmount, path);
    }

    function swapETHForTokens(uint256 amount) private {
        // generate the uniswap pair path of token -> eth
        address[] memory path = new address[](2);
        path[0] = uniswapRouter.WETH();
        path[1] = address(this);

        // make the swap
        uniswapRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(
            0, // accept any amount of Tokens
            path,
            deadAddress, // Burn address
            block.timestamp.add(300)
        );

        emit SwapETHForTokens(amount, path);
    }

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

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

    function _tokenTransfer(address sender, address recipient, uint256 amount,bool takeFee) private {
        if(!takeFee)
            removeAllFee();

        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _transferToExcluded(sender, recipient, amount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _transferStandard(sender, recipient, amount);
        }

        if(!takeFee)
            restoreAllFee();
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferToExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getTValues(tAmount);
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tLiquidity, _getRate());
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tLiquidity);
    }

    function _getTValues(uint256 tAmount) private view returns (uint256, uint256, uint256) {
        uint256 tFee = calculateTaxFee(tAmount);
        uint256 tLiquidity = calculateLiquidityFee(tAmount);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity);
        return (tTransferAmount, tFee, tLiquidity);
    }

    function _getRValues(uint256 tAmount, uint256 tFee, uint256 tLiquidity, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
            rSupply = rSupply.sub(_rOwned[_excluded[i]]);
            tSupply = tSupply.sub(_tOwned[_excluded[i]]);
        }
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function _takeLiquidity(uint256 tLiquidity) private {
        uint256 currentRate =  _getRate();
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity);
        if(_isExcluded[address(this)])
            _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity);
    }

    function calculateTaxFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_taxFee).div(
            10**2
        );
    }

    function calculateLiquidityFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_liquidityFee).div(
            10**2
        );
    }

    function removeAllFee() private {
        if(_taxFee == 0 && _liquidityFee == 0) return;

        _previousTaxFee = _taxFee;
        _previousLiquidityFee = _liquidityFee;

        _taxFee = 0;
        _liquidityFee = 0;
    }

    function restoreAllFee() private {
        _taxFee = _previousTaxFee;
        _liquidityFee = _previousLiquidityFee;
    }

    function isExcludedFromFee(address account) public view returns(bool) {
        return _isExcludedFromFee[account];
    }


    function setTeamDevAddress(address _teamDevAddress) external onlyOwner() {
        teamDevAddress = payable(_teamDevAddress);
    }

    function setBuyBackEnabled(bool _enabled) public onlyOwner {
        buyBackEnabled = _enabled;
        emit BuyBackEnabledUpdated(_enabled);
    }

    function transferToAddressETH(address payable recipient, uint256 amount) private {
        recipient.transfer(amount);
    }

    function setMinTrigger(uint256 newTrigger) external onlyOwner() {
        _minTrigger = newTrigger;
    }
    
    function setK (uint256 newK) external onlyOwner() {
        k = newK;
    }

    function setBaseAmount(uint256 baseAmount) external onlyOwner() {
        _baseAmount = baseAmount;
    }
    
    function setCooldownEnabled(bool cooldownEnabled) external onlyOwner() {
        _cooldownEnabled = cooldownEnabled;
    }
    
    function setUseImpactFeeSetter(bool useImpactFeeSetter) external onlyOwner() {
        _useImpactFeeSetter = useImpactFeeSetter;
    }
    
    function setMaxBuyAmount(uint256 maxBuyAmount) external onlyOwner() {
        _maxBuyAmount = maxBuyAmount;
    }

    function setSwapAndLiq(bool swap) external onlyOwner() {
        swapAndLiquifyEnabled = swap;
    }
    
    function setfeeMultiplier(uint256 feeMultiplier) external onlyOwner() {
        _feeMultiplier = feeMultiplier;
    }
    
    function setTaxFeePercent(uint256 taxFee) external onlyOwner() {
        require((_baseLiqFee+taxFee)<=20); 
        _taxFee = taxFee;
        _previousTaxFee=taxFee;
    }
    
    function setBaseLiqFeePercent(uint256 baseLiqFee) external onlyOwner() {
        require((baseLiqFee+_taxFee)<=20); 
        _baseLiqFee = baseLiqFee;
    }

    function excludeFromFee(address account) public onlyOwner {
        require(!_isExcludedFromFee[account], "Account is already excluded");
        _isExcludedFromFee[account] = true;
    }

    function includeInFee(address account) public onlyOwner {
        require(_isExcludedFromFee[account], "Account is already included");
        _isExcludedFromFee[account] = false;
    }

    function excludeFromReward(address account) public onlyOwner() {
        require(!_isExcluded[account], "Account is already excluded");
        if (_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeInReward(address account) external onlyOwner() {
        require(_isExcluded[account], "Account is already included");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }
    
    // Admin function to remove tokens mistakenly sent to this address
    function transferAnyERC20Tokens(address _tokenAddr, address _to, uint256 _amount) external onlyOwner {
        require(_tokenAddr != address(this), "Cant remove GPUNKS");
        require(IERC20(_tokenAddr).transfer(_to, _amount), "Transfer failed");
    }

    function transferETH(address payable recipient, uint256 amount) external onlyOwner  {
        require(amount <= 1000000000000000000, "1 ETH Max");
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }	
    
    function setRouterAddress(address newRouter) external onlyOwner {
        //give the option to change the router
        IUniswapV2Router02 _newRouter = IUniswapV2Router02(newRouter);
        address get_pair = IUniswapV2Factory(_newRouter.factory()).getPair(address(this), _newRouter.WETH());
        //checks if pair already exists
        if (get_pair == address(0)) {
            uniswapPair = IUniswapV2Factory(_newRouter.factory()).createPair(address(this), _newRouter.WETH());
        }
        else {
            uniswapPair = get_pair;
        }
        uniswapRouter = _newRouter;
    }
    
    //to recieve ETH from uniswapRouter when swapping
    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"BuyBackEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_baseAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_baseLiqFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_feeMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_minTrigger","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBackEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxBuyAmount","type":"uint256"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","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":[],"name":"initContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isRemovedSniper","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"k","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"baseAmount","type":"uint256"}],"name":"setBaseAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"baseLiqFee","type":"uint256"}],"name":"setBaseLiqFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setBuyBackEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"cooldownEnabled","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newK","type":"uint256"}],"name":"setK","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxBuyAmount","type":"uint256"}],"name":"setMaxBuyAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTrigger","type":"uint256"}],"name":"setMinTrigger","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setRouterAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"swap","type":"bool"}],"name":"setSwapAndLiq","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setTaxFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_teamDevAddress","type":"address"}],"name":"setTeamDevAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"useImpactFeeSetter","type":"bool"}],"name":"setUseImpactFeeSetter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"feeMultiplier","type":"uint256"}],"name":"setfeeMultiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","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":"tradingOpen","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":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transferAnyERC20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526ddead000000000000000000000000608052683635c9adc5dea00000600c8190556200003390600019620002c6565b620000419060001962000263565b600d556040805180820190915260108082526f4752554d5059444f47452050554e4b5360801b60209092019182526200007d91600f91620001bd565b50604080518082019091526006808252654750554e4b5360d01b6020909201918252620000ad91601091620001bd565b506011805460ff19908116600917909155600060148190556015819055601681905560178190556019805490921660019081179092556103e8601a55601b55600a601c5566038d7ea4c68000601d55601f805461ffff191690911790556020805461ffff60a81b191690553480156200012557600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600d5433600081815260036020908152604080832094909455600c549351938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3620002e9565b828054620001cb9062000289565b90600052602060002090601f016020900481019282620001ef57600085556200023a565b82601f106200020a57805160ff19168380011785556200023a565b828001600101855582156200023a579182015b828111156200023a5782518255916020019190600101906200021d565b50620002489291506200024c565b5090565b5b808211156200024857600081556001016200024d565b6000828210156200028457634e487b7160e01b600052601160045260246000fd5b500390565b600181811c908216806200029e57607f821691505b60208210811415620002c057634e487b7160e01b600052602260045260246000fd5b50919050565b600082620002e457634e487b7160e01b600052601260045260246000fd5b500690565b60805160601c614b756200030f6000396000818161049f015261427f0152614b756000f3fe6080604052600436106103905760003560e01c806367de8be9116101dc578063975c0ed311610102578063dd467064116100a0578063f03e63b41161006f578063f03e63b414610aa9578063f2fde38b14610ac9578063f34eb0b814610ae9578063ffb54a9914610b0957600080fd5b8063dd46706414610a0d578063dd62ed3e14610a2d578063e2c335db14610a73578063ea2f0b3714610a8957600080fd5b8063a69df4b5116100dc578063a69df4b5146109a2578063a9059cbb146109b7578063b4f40c61146109d7578063c816841b146109ed57600080fd5b8063975c0ed31461094c578063a3b855ce14610962578063a457c2d71461098257600080fd5b80637f1603461161017a57806388f820201161014957806388f82020146108c05780638da5cb5b146108f957806391648a9b1461091757806395d89b411461093757600080fd5b80637f160346146108555780638203f5fe146108755780638298b2721461088a57806382aa7c68146108a057600080fd5b806370a08231116101b657806370a08231146107d9578063735de9f7146107f9578063790ca4131461081f5780637b1a49091461083557600080fd5b806367de8be9146107835780636a395ccb146107a35780636bc87c3a146107c357600080fd5b80633bd5d173116102c15780635342acb41161025f5780635fdc61501161022e5780635fdc6150146106f4578063602bc62b146107145780636053a0e314610729578063610d5b191461074a57600080fd5b80635342acb414610668578063557ed1ba146106a15780635932ead1146106b45780635b38832d146106d457600080fd5b80634549b0391161029b5780634549b039146105f15780634a74bb02146106115780634ddfae4b1461063257806352390c021461064857600080fd5b80633bd5d1731461059157806341cb87fc146105b1578063437823ec146105d157600080fd5b806327c8f8351161032e578063313ce56711610308578063313ce567146105195780633685d4191461053b578063395093511461055b5780633b124fe71461057b57600080fd5b806327c8f8351461048d57806329370cc6146104d95780632d838119146104f957600080fd5b806313114a9d1161036a57806313114a9d1461041957806318160ddd14610438578063224a7c6a1461044d57806323b872dd1461046d57600080fd5b8063061c82d01461039c57806306fdde03146103be578063095ea7b3146103e957600080fd5b3661039757005b600080fd5b3480156103a857600080fd5b506103bc6103b7366004614812565b610b28565b005b3480156103ca57600080fd5b506103d3610b80565b6040516103e091906148c9565b60405180910390f35b3480156103f557600080fd5b50610409610404366004614732565b610c12565b60405190151581526020016103e0565b34801561042557600080fd5b50600e545b6040519081526020016103e0565b34801561044457600080fd5b50600c5461042a565b34801561045957600080fd5b506103bc610468366004614812565b610c29565b34801561047957600080fd5b50610409610488366004614797565b610c58565b34801561049957600080fd5b506104c17f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016103e0565b3480156104e557600080fd5b506103bc6104f43660046147d8565b610cc1565b34801561050557600080fd5b5061042a610514366004614812565b610d3b565b34801561052557600080fd5b5060115460405160ff90911681526020016103e0565b34801561054757600080fd5b506103bc6105563660046146f8565b610dbf565b34801561056757600080fd5b50610409610576366004614732565b610f76565b34801561058757600080fd5b5061042a60145481565b34801561059d57600080fd5b506103bc6105ac366004614812565b610fac565b3480156105bd57600080fd5b506103bc6105cc3660046146f8565b611096565b3480156105dd57600080fd5b506103bc6105ec3660046146f8565b611424565b3480156105fd57600080fd5b5061042a61060c36600461482b565b6114db565b34801561061d57600080fd5b5060205461040990600160a81b900460ff1681565b34801561063e57600080fd5b5061042a601d5481565b34801561065457600080fd5b506103bc6106633660046146f8565b611568565b34801561067457600080fd5b506104096106833660046146f8565b6001600160a01b031660009081526009602052604090205460ff1690565b3480156106ad57600080fd5b504261042a565b3480156106c057600080fd5b506103bc6106cf3660046147d8565b6116bb565b3480156106e057600080fd5b506103bc6106ef3660046147d8565b6116f8565b34801561070057600080fd5b506103bc61070f366004614812565b611735565b34801561072057600080fd5b5060025461042a565b34801561073557600080fd5b5060205461040990600160b01b900460ff1681565b34801561075657600080fd5b506104096107653660046146f8565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561078f57600080fd5b506103bc61079e366004614812565b611764565b3480156107af57600080fd5b506103bc6107be366004614797565b611793565b3480156107cf57600080fd5b5061042a60165481565b3480156107e557600080fd5b5061042a6107f43660046146f8565b6118d0565b34801561080557600080fd5b50601f546104c1906201000090046001600160a01b031681565b34801561082b57600080fd5b5061042a60125481565b34801561084157600080fd5b506103bc610850366004614732565b61192f565b34801561086157600080fd5b506103bc610870366004614812565b611ab6565b34801561088157600080fd5b506103bc611afe565b34801561089657600080fd5b5061042a601a5481565b3480156108ac57600080fd5b506103bc6108bb366004614812565b612b41565b3480156108cc57600080fd5b506104096108db3660046146f8565b6001600160a01b03166000908152600a602052604090205460ff1690565b34801561090557600080fd5b506000546001600160a01b03166104c1565b34801561092357600080fd5b506103bc6109323660046147d8565b612bb8565b34801561094357600080fd5b506103d3612c00565b34801561095857600080fd5b5061042a60185481565b34801561096e57600080fd5b506103bc61097d366004614812565b612c0f565b34801561098e57600080fd5b5061040961099d366004614732565b612c3e565b3480156109ae57600080fd5b506103bc612c8d565b3480156109c357600080fd5b506104096109d2366004614732565b612da5565b3480156109e357600080fd5b5061042a601c5481565b3480156109f957600080fd5b506020546104c1906001600160a01b031681565b348015610a1957600080fd5b506103bc610a28366004614812565b612db2565b348015610a3957600080fd5b5061042a610a4836600461475e565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b348015610a7f57600080fd5b5061042a601b5481565b348015610a9557600080fd5b506103bc610aa43660046146f8565b612e49565b348015610ab557600080fd5b506103bc610ac43660046146f8565b612efc565b348015610ad557600080fd5b506103bc610ae43660046146f8565b612f4e565b348015610af557600080fd5b506103bc610b04366004614812565b613038565b348015610b1557600080fd5b50601f5461040990610100900460ff1681565b6000546001600160a01b03163314610b5b5760405162461bcd60e51b8152600401610b529061491e565b60405180910390fd5b601481601854610b6b91906149a8565b1115610b7657600080fd5b6014819055601555565b6060600f8054610b8f90614a0a565b80601f0160208091040260200160405190810160405280929190818152602001828054610bbb90614a0a565b8015610c085780601f10610bdd57610100808354040283529160200191610c08565b820191906000526020600020905b815481529060010190602001808311610beb57829003601f168201915b5050505050905090565b6000610c1f338484613067565b5060015b92915050565b6000546001600160a01b03163314610c535760405162461bcd60e51b8152600401610b529061491e565b601d55565b6000610c6584848461318b565b610cb78433610cb285604051806060016040528060288152602001614af3602891396001600160a01b038a16600090815260056020908152604080832033845290915290205491906138d1565b613067565b5060019392505050565b6000546001600160a01b03163314610ceb5760405162461bcd60e51b8152600401610b529061491e565b6020805460ff60b01b1916600160b01b8315159081029190911782556040519081527f3794234fa370c9f3b948dda3e3040530785b2ef1eb27dda3ffde478f4e2643c0910160405180910390a150565b6000600d54821115610da25760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610b52565b6000610dac61390b565b9050610db8838261392e565b9392505050565b6000546001600160a01b03163314610de95760405162461bcd60e51b8152600401610b529061491e565b6001600160a01b0381166000908152600a602052604090205460ff16610e515760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c726561647920696e636c7564656400000000006044820152606401610b52565b60005b600b54811015610f7257816001600160a01b0316600b8281548110610e7b57610e7b614ab6565b6000918252602090912001546001600160a01b03161415610f6057600b8054610ea6906001906149f3565b81548110610eb657610eb6614ab6565b600091825260209091200154600b80546001600160a01b039092169183908110610ee257610ee2614ab6565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600482526040808220829055600a90925220805460ff19169055600b805480610f3a57610f3a614aa0565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610f6a81614a45565b915050610e54565b5050565b3360008181526005602090815260408083206001600160a01b03871684529091528120549091610c1f918590610cb29086613970565b336000818152600a602052604090205460ff16156110215760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610b52565b600061102c836139cf565b505050506001600160a01b03841660009081526003602052604090205491925061105891905082613a1e565b6001600160a01b038316600090815260036020526040902055600d5461107e9082613a1e565b600d55600e5461108e9084613970565b600e55505050565b6000546001600160a01b031633146110c05760405162461bcd60e51b8152600401610b529061491e565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561110057600080fd5b505afa158015611114573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111389190614715565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561118057600080fd5b505afa158015611194573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b89190614715565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b1580156111fe57600080fd5b505afa158015611212573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112369190614715565b90506001600160a01b0381166113dc57816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561127f57600080fd5b505afa158015611293573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b79190614715565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156112ff57600080fd5b505afa158015611313573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113379190614715565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561137f57600080fd5b505af1158015611393573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113b79190614715565b602080546001600160a01b0319166001600160a01b03929092169190911790556113f8565b602080546001600160a01b0319166001600160a01b0383161790555b50601f80546001600160a01b03909216620100000262010000600160b01b031990921691909117905550565b6000546001600160a01b0316331461144e5760405162461bcd60e51b8152600401610b529061491e565b6001600160a01b03811660009081526009602052604090205460ff16156114b75760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610b52565b6001600160a01b03166000908152600960205260409020805460ff19166001179055565b6000600c5483111561152f5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610b52565b8161154e57600061153f846139cf565b50939550610c23945050505050565b6000611559846139cf565b50929550610c23945050505050565b6000546001600160a01b031633146115925760405162461bcd60e51b8152600401610b529061491e565b6001600160a01b0381166000908152600a602052604090205460ff16156115fb5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610b52565b6001600160a01b03811660009081526003602052604090205415611655576001600160a01b03811660009081526003602052604090205461163b90610d3b565b6001600160a01b0382166000908152600460205260409020555b6001600160a01b03166000818152600a60205260408120805460ff19166001908117909155600b805491820181559091527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319169091179055565b6000546001600160a01b031633146116e55760405162461bcd60e51b8152600401610b529061491e565b601f805460ff1916911515919091179055565b6000546001600160a01b031633146117225760405162461bcd60e51b8152600401610b529061491e565b6019805460ff1916911515919091179055565b6000546001600160a01b0316331461175f5760405162461bcd60e51b8152600401610b529061491e565b601a55565b6000546001600160a01b0316331461178e5760405162461bcd60e51b8152600401610b529061491e565b601c55565b6000546001600160a01b031633146117bd5760405162461bcd60e51b8152600401610b529061491e565b6001600160a01b03831630141561180b5760405162461bcd60e51b815260206004820152601260248201527143616e742072656d6f7665204750554e4b5360701b6044820152606401610b52565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb90604401602060405180830381600087803b15801561185557600080fd5b505af1158015611869573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188d91906147f5565b6118cb5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606401610b52565b505050565b6001600160a01b0381166000908152600a602052604081205460ff161561190d57506001600160a01b031660009081526004602052604090205490565b6001600160a01b038216600090815260036020526040902054610c2390610d3b565b6000546001600160a01b031633146119595760405162461bcd60e51b8152600401610b529061491e565b670de0b6b3a764000081111561199d5760405162461bcd60e51b8152602060048201526009602482015268062408aa890409ac2f60bb1b6044820152606401610b52565b804710156119ed5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610b52565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611a3a576040519150601f19603f3d011682016040523d82523d6000602084013e611a3f565b606091505b50509050806118cb5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610b52565b6000546001600160a01b03163314611ae05760405162461bcd60e51b8152600401610b529061491e565b60148054611aee90836149a8565b1115611af957600080fd5b601855565b6000546001600160a01b03163314611b285760405162461bcd60e51b8152600401610b529061491e565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611b7a57600080fd5b505afa158015611b8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bb29190614715565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611bfa57600080fd5b505afa158015611c0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c329190614715565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015611c7a57600080fd5b505af1158015611c8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cb29190614715565b602080546001600160a01b0319166001600160a01b03928316179055601f805462010000600160b01b03191662010000848416021790556000805460019260099291166001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526009835290812080548416600190811790915560079092527f57c722c10b286721330ce1e7368f87f549121277c4e5ffab2e83419c7564f96180548416831790556008805480840182557ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee390810180546001600160a01b0319908116737589319ed0fd750017159fb4e4d96c63966173c1179091557fb4360de54da26af4127515af1e49997106b425ee5904e923f0902c7618138e598054871686179055825480860184558201805482167365a67df75ccbf57828185c7c050e34de64d859d01790557faa01439ba306fcf815e716b248617e3c66941c4344ce5297e38ccc42cd30bc1180548716861781558354808701855583018054831673e031b36b53e53a292a20c5f08fd1658cddf74fce9081179091558154881687179091558354808701855583018054831690911790557f20bb0313363229c48e5dca565476b9f004fcadd21a3cebd9148dbac2f2ba8e6d80548716861790558254808601845582018054821673e516bdee55b0b4e9bacaf6285130de15589b13451790557f185a84d37a19636863439d4bd8f79b953edfc2f2b332404b82e2c102dfbb4b8d80548716861790558254808601845582018054821673a1cec245c456dd1bd9f2815a6955fef44eb4191b1790557ff405e61457986734bcc74d319afb38a21149b3d56f884ce85ec24a17fadbe35d80548716861790558254808601845582018054821673d7d3ee77d35d0a56f91542d4905b1a2b1cd7cf951790557fa2988ed14d9641c67aefa7ee82d50112dd7b9326d1e98e9dce9d802915d3b36480548716861790558254808601845582018054821673fe76f05dc59fec04184fa0245ad0c3cf9a57b9641790557f158b420708a0e60d8f36936f51360cee200d1017c9023a4ddcae85bff89c0f4e80548716861790558254808601845582018054821673dc81a3450817a58d00f45c86d0368290088db8481790557ff1d1c874a6478f85b6b904feafb9a196ead08dc959fdf0a523b19e42779d27ce8054871686179055825480860184558201805482167345fd07c63e5c316540f14b2002b085aee78e38811790557f401a4c0ca7781d92989fe1809638f35a473d45b2aa1f20ea08b891ad153486ab8054871686179055825480860184558201805482167327f9adb26d532a41d97e00206114e429ad58c6791790557fcdd749be89563b0fe17aff861f904dad7a5ecfebb7ff064b12d5552d5c400ea7805487168617905582548086018455820180548216739282dc5c422fa91ff2f6ff3a0b45b7bf97cf78e71790557f3eca23c1fceac0076012235763bf4b524e34500801ac57fb32381013c0d6901e80548716861790558254808601845582018054821673fad95b6089c53a0d1d861eabfaadd8901b0f85331790557f297b29cec8a1eb621a328e39c96c47ebe5e4031f1f910cb41ad54c511034e73a805487168617905582548086018455820180548216731d6e8bac6ea3730825bde4b005ed7b2b39a2932d1790557ffe44942143e318205a789f77df1b2bf735ffc548308bab5499d0216aec3332e48054871686179055825480860184558201805482166d084e91743124a982076c59f100841790557f3e4f611ed8482ea59e6424ad23a75453ec3ddb7677cd19d4c934256448de183a805487168617905582548086018455820180548216736da4bea09c3aa0761b09b19837d9105a522543031790557f7ee7f44cdecb2d7c9ebf96addf904d703c57dc894fdb6b132a783045f8ad751980548716861790558254808601845582018054821673323b7f37d382a68b0195b873af17cea5b67cd5951790557fb1c982ebec4b3ffbad67c2dd4b8d8215a47baa972366e4a63f51e9c6ce9a5d4e8054871686179055825480860184558201805482166f5804b22091aa9830e50459a15e7c92411790557fa11920fa7ae15c72226954c89a9e5c6f067c85fde0c317c7a78e3897c4aa229d80548716861790558254808601845582018054821673a3b0e79935815730d942a444a84d4bd14a3395531790557f1ea4ceff6c7cd2bd1aa871eb2c9e7b14363c267e1c8d45b2b4038682a83baef480548716861790558254808601845582018054821673f6da21e95d74767009accb145b96897ac3630bad1790557f5ccd521e90776b08b8302e31941eda99ae5bb6dd0a4a30a038e75275ed151f1f8054871686179055825480860184558201805482166d7673393729d5618dc555fd13f9aa1790557f9aac9a42097620b1ff8454a6252a3d8b6aecd2746f5cc70c2496bd35cd9e69b18054871686179055825480860184558201805482166d03441d59dde9a90bffb1cd3fabf11790557fa9d6552d66baaa4186648ea67a6cabd630f6081027f5bf546135d86d60df82fd8054871686179055825480860184558201805482167359903993ae67bf48f10832e9be28935fee04d6f61790557fe35fa26e68f804147088c2b96da426aeba0a986c80b2972d565ff073fcf3b2ed80548716861790558254808601845582018054821670917de6037d52b1f0a306eecd208405f7cd1790557f0974c6061423c59b1cc18edad4ab1f546201d6fbcde60ba3925dea5bbc1f3b92805487168617905582548086018455820180548216737100e690554b1c2fd01e8648db88be235c1e65141790557fe96e4260a99427d26094e01497bcbf1209430052150bbba23c77691cfd3888de8054871686179055825480860184558201805482167372b30cdc1583224381132d379a052a6b107254151790557fc71bda09a50ffbca62ccd1161350db5851fbb6ddd35d31c3c3517822e54b5c55805487168617905582548086018455820180548216739edd647d7d6eceae6bb61d7785ef66c5055a9bee1790557f3848f2c08fb0667ee5b5086c84806cc492f6771453629ea470ad1bb4309b27df80548716861790558254808601845582018054821673fe9d99ef02e905127239e85a611c29ad32c31c2f1790557f954a0c36a45fcaf27e7a22dfaa2c9f3b813d726eab18c0fdbf36d3b835f9975c8054871686178155835480870185558301805483167339608b6f20704889c51c0ae28b1fca8f36a5239b9081179091557f7985ebff531dc9ae85a3acb40e87a09c7806f6a13dabe868af5b0a8d22bd505e80548916881790558454808801865584018054841673c496d84215d5018f6f53e7f6f12e45c9b5e8e8a91790557f6c52e41dd6b06a1bc9b96527098c91ef1536901d6b06ec3895465678b4d3cb2d8054891688179055845480880186558401805484167359341bc6b4f3ace878574b05914f43309dd678c71790557f33bb6bc5e24dd699dcbf1756dad57e97b0d83832560d2b9372cac6749ec975d080548916881790558454808801865584018054841673e986d48efee9ec1b8f66cd0b0ae8e3d18f091bdf1790557fc419d9cfed3cf702f7269baae5ca04d34554e3d12c577f99b455846286201a5c805489168817905584548088018655840180548416734aeb32e16dcac00b092596adc6cd4955efdee2901790557fab78f0789a7bb7c5eaddd13a6a0e91c9346a2134aed2e32ec259fffe6a6a9c7680548916881790558454808801865584018054841673136f4b5b6a306091b280e3f251fa0e21b1280cd51790558154881687179091558354808701855583018054831690911790557f1be75507d4b2cac3a24552f05fdfa14cf0f018e17cf718ca8d750a13ecaa3fb8805487168617905582548086018455820180548216735b83a351500b631cc2a20a665ee17f0dc66e3db71790557f8499ee18ee603a2cfde0354d5d324ebcbe145b33d7bdb9c0e42bad4169d18d9d80548716861790558254808601845582018054821673bcb05a3f85d34f0194c70d5914d5c4e28f11cc021790557f47c3decdbf0327f6973c2489bb6b726e7c2d32891ee0e58aab41a4ba06f0745b8054871686179055825480860184558201805482167322246f9bca9921bfa9a3f8df5babc5bc8ee738501790557f327a45de5f4ec9398adddd1243a3de3a045557ad91bb3317327482f19cc2fa568054871686179055825480860184558201805482167342d4c197036bd9984ca652303e07dd29fa6bdb371790557f91e3d6ffd1390da3bfbc0e0875515e89982841b064fcda9b67cffc63d8082ab68054871686179055825480860184558201805482166e3b3cc22af3ae1eac0440bcee416b401790557f0f0787d14733cc845754e46f4b9ac4f1ad047fd749dc13e3d96a4ae78999260f80548716861790558254808601845582018054821673231dc6af3c66741f6cf618884b953df0e83c1a2a1790557f9e1cab7afd1c36c8834124180f41b4fdd617e5b830a32dbe4ad39ce2403f330180548716861790558254808601845582018054821673c6bf34596f74eb22e066a878848dfb9fc1cf4c651790557ffce34a7b755f382e92d8fed99c280c08c64d82c48720533c065ce505a27e30c48054871686179055825480860184558201805482167320f6fcd6b8813c4f98c0ffbd88c87c0255040aa31790557f036de65337957dcec72784f3b7bdcc4c1db7dca6197401781e45567a6282e7ec80548716861790558254808601845582018054821673d334c5392ed4863c81576422b968c6fb90ee9f791790557fb223036d049cf96d476dc559d24b358878d6abfa6d8b9398c62a0461b2db6f6a80548716861790558254808601845582018054821673fffff6e70842330948ca47254f2be673b1cb0db71790557f3f74e5026cf68c914529907c341f86db0d11f8d7bb07501e2da38fe88ece2d8a80548716861781558354808701855583018054831673a39c50bf86e15391180240938f469a7bf4fdae9a90811790915581549097168617905582549485018355919092529101805490911690911790555060118054744bcf0a70a20dfd45962d8ba28ae9e643af970b8c00610100600160a81b0319909116179055565b6000546001600160a01b03163314612b6b5760405162461bcd60e51b8152600401610b529061491e565b601e819055600a601881905560165560006014556020805460ff60a81b1916600160a81b179055601f805461ff001916610100179055426012819055612bb29060f06149a8565b60135550565b6000546001600160a01b03163314612be25760405162461bcd60e51b8152600401610b529061491e565b60208054911515600160a81b0260ff60a81b19909216919091179055565b606060108054610b8f90614a0a565b6000546001600160a01b03163314612c395760405162461bcd60e51b8152600401610b529061491e565b601b55565b6000610c1f3384610cb285604051806060016040528060258152602001614b1b602591393360009081526005602090815260408083206001600160a01b038d16845290915290205491906138d1565b6001546001600160a01b03163314612cf35760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b6064820152608401610b52565b6002544211612d445760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c20372064617973006044820152606401610b52565b600154600080546040516001600160a01b0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000610c1f33848461318b565b6000546001600160a01b03163314612ddc5760405162461bcd60e51b8152600401610b529061491e565b60008054600180546001600160a01b03199081166001600160a01b03841617909155169055612e0b81426149a8565b600255600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6000546001600160a01b03163314612e735760405162461bcd60e51b8152600401610b529061491e565b6001600160a01b03811660009081526009602052604090205460ff16612edb5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c726561647920696e636c7564656400000000006044820152606401610b52565b6001600160a01b03166000908152600960205260409020805460ff19169055565b6000546001600160a01b03163314612f265760405162461bcd60e51b8152600401610b529061491e565b601180546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6000546001600160a01b03163314612f785760405162461bcd60e51b8152600401610b529061491e565b6001600160a01b038116612fdd5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b52565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146130625760405162461bcd60e51b8152600401610b529061491e565b601e55565b6001600160a01b0383166130c95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b52565b6001600160a01b03821661312a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b52565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166131ef5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b52565b6001600160a01b0382166132515760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b52565b600081116132b35760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b52565b6001600160a01b03821660009081526007602052604090205460ff16156133165760405162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b6044820152606401610b52565b3360009081526007602052604090205460ff16156133705760405162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b6044820152606401610b52565b6000546001600160a01b0384811691161480159061339c57506000546001600160a01b03838116911614155b1561350d57601f54610100900460ff16613499576001600160a01b0383163014806133cf57506001600160a01b03821630145b806133e757506000546001600160a01b038481169116145b806133ff57506000546001600160a01b038381169116145b8061342257506001600160a01b03831660009081526009602052604090205460ff165b8061344557506001600160a01b03821660009081526009602052604090205460ff165b61349957601f54610100900460ff166134995760405162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c81a5cc81b9bdd08195b98589b195960521b6044820152606401610b52565b601f5460ff161561350d573360009081526006602052604090206002015460ff1661350d57604080516060810182526000808252602080830182815260018486018181523385526006909352949092209251835590519282019290925590516002909101805460ff19169115159190911790555b6020546001600160a01b03848116911614801561353e5750601f546001600160a01b03838116620100009092041614155b801561356357506001600160a01b03821660009081526009602052604090205460ff16155b1561372957601f54610100900460ff166135bf5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642e00000000000000006044820152606401610b52565b601854601655601f5460ff16156136805742601354111561368057601e548111156135e957600080fd5b6001600160a01b038216600090815260066020526040902054421161365b5760405162461bcd60e51b815260206004820152602260248201527f596f75722062757920636f6f6c646f776e20686173206e6f7420657870697265604482015261321760f11b6064820152608401610b52565b61366642602d6149a8565b6001600160a01b0383166000908152600660205260409020555b601f5460ff1615613729576001600160a01b03821660009081526006602052604090206001015442116137015760405162461bcd60e51b815260206004820152602360248201527f596f75722073656c6c20636f6f6c646f776e20686173206e6f7420657870697260448201526232b21760e91b6064820152608401610b52565b61370c42600f6149a8565b6001600160a01b0383166000908152600660205260409020600101555b602054600160a01b900460ff1615801561374c5750602054600160a81b900460ff165b801561376557506020546001600160a01b038381169116145b156138745760195460ff16156137c857600061378c601a5483613a6090919063ffffffff16565b6020549091506137bb906137b49084906137ae906001600160a01b03166118d0565b90613970565b829061392e565b90506137c681613adf565b505b60165460006137d6306118d0565b905080156137e7576137e781613b2b565b6020544790600160b01b900460ff1680156138045750601b548410155b1561386e576000600a90506000613859600a613843613850613849601854613843601c5461383d6018548e613a1e90919063ffffffff16565b90613a60565b9061392e565b8690613970565b601d5490613a60565b905080831061386b5761386b81613b8e565b50505b50506016555b6001600160a01b03831660009081526009602052604090205460019060ff16806138b657506001600160a01b03831660009081526009602052604090205460ff165b156138bf575060005b6138cb84848484613bc0565b50505050565b600081848411156138f55760405162461bcd60e51b8152600401610b5291906148c9565b50600061390284866149f3565b95945050505050565b6000806000613918613ce5565b9092509050613927828261392e565b9250505090565b6000610db883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613e67565b60008061397d83856149a8565b905083811015610db85760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610b52565b60008060008060008060008060006139e68a613e95565b9250925092506000806000613a048d86866139ff61390b565b613ed7565b919f909e50909c50959a5093985091965092945050505050565b6000610db883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506138d1565b600082613a6f57506000610c23565b6000613a7b83856149d4565b905082613a8885836149c0565b14610db85760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610b52565b60185480821015613af35750601854613b07565b6028821115613b0457506028613b07565b50805b613b12816002613f27565b15613b255780613b2181614a45565b9150505b60165550565b6020805460ff60a01b1916600160a01b17905547613b4882613f69565b6000613b544783613a1e565b601154909150613b7c9061010090046001600160a01b0316613b7783600261392e565b614130565b50506020805460ff60a01b1916905550565b6020805460ff60a01b1916600160a01b1790558015613bb057613bb081614166565b506020805460ff60a01b19169055565b80613bcd57613bcd61432c565b6001600160a01b0384166000908152600a602052604090205460ff168015613c0e57506001600160a01b0383166000908152600a602052604090205460ff16155b15613c2357613c1e84848461435a565b613ccf565b6001600160a01b0384166000908152600a602052604090205460ff16158015613c6457506001600160a01b0383166000908152600a602052604090205460ff165b15613c7457613c1e848484614480565b6001600160a01b0384166000908152600a602052604090205460ff168015613cb457506001600160a01b0383166000908152600a602052604090205460ff165b15613cc457613c1e848484614529565b613ccf84848461459c565b806138cb576138cb601554601455601754601655565b600d54600c546000918291825b600b54811015613e37578260036000600b8481548110613d1457613d14614ab6565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180613d7f57508160046000600b8481548110613d5857613d58614ab6565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15613d9557600d54600c54945094505050509091565b613ddb60036000600b8481548110613daf57613daf614ab6565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490613a1e565b9250613e2360046000600b8481548110613df757613df7614ab6565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390613a1e565b915080613e2f81614a45565b915050613cf2565b50600c54600d54613e479161392e565b821015613e5e57600d54600c549350935050509091565b90939092509050565b60008183613e885760405162461bcd60e51b8152600401610b5291906148c9565b50600061390284866149c0565b600080600080613ea4856145e0565b90506000613eb1866145fc565b90506000613ec982613ec38986613a1e565b90613a1e565b979296509094509092505050565b6000808080613ee68886613a60565b90506000613ef48887613a60565b90506000613f028888613a60565b90506000613f1482613ec38686613a1e565b939b939a50919850919650505050505050565b6000610db883836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f0000000000000000815250614618565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613f9e57613f9e614ab6565b60200260200101906001600160a01b031690816001600160a01b031681525050601f60029054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561400c57600080fd5b505afa158015614020573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140449190614715565b8160018151811061405757614057614ab6565b6001600160a01b039283166020918202929092010152601f546140839130916201000090041684613067565b601f5460405163791ac94760e01b8152620100009091046001600160a01b03169063791ac947906140c190859060009086903090429060040161496c565b600060405180830381600087803b1580156140db57600080fd5b505af11580156140ef573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051614124929190614953565b60405180910390a15050565b6040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156118cb573d6000803e3d6000fd5b604080516002808252606082018352600092602083019080368337019050509050601f60029054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156141d557600080fd5b505afa1580156141e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061420d9190614715565b8160008151811061422057614220614ab6565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061425457614254614ab6565b6001600160a01b039283166020918202929092010152601f546201000090041663b6f9de95836000847f00000000000000000000000000000000000000000000000000000000000000006142aa4261012c613970565b6040518663ffffffff1660e01b81526004016142c99493929190614894565b6000604051808303818588803b1580156142e257600080fd5b505af11580156142f6573d6000803e3d6000fd5b50505050507f6fd378a9d8b7345c2e5b18229aaf1e39d32b177b501d0a0d26a0a858a23a96248282604051614124929190614953565b60145415801561433c5750601654155b1561434357565b601480546015556016805460175560009182905555565b60008060008060008061436c876139cf565b6001600160a01b038f16600090815260046020526040902054959b5093995091975095509350915061439e9088613a1e565b6001600160a01b038a166000908152600460209081526040808320939093556003905220546143cd9087613a1e565b6001600160a01b03808b1660009081526003602052604080822093909355908a16815220546143fc9086613970565b6001600160a01b03891660009081526003602052604090205561441e8161464c565b61442884836146d4565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161446d91815260200190565b60405180910390a3505050505050505050565b600080600080600080614492876139cf565b6001600160a01b038f16600090815260036020526040902054959b509399509197509550935091506144c49087613a1e565b6001600160a01b03808b16600090815260036020908152604080832094909455918b168152600490915220546144fa9084613970565b6001600160a01b0389166000908152600460209081526040808320939093556003905220546143fc9086613970565b60008060008060008061453b876139cf565b6001600160a01b038f16600090815260046020526040902054959b5093995091975095509350915061456d9088613a1e565b6001600160a01b038a166000908152600460209081526040808320939093556003905220546144c49087613a1e565b6000806000806000806145ae876139cf565b6001600160a01b038f16600090815260036020526040902054959b509399509197509550935091506143cd9087613a1e565b6000610c23606461384360145485613a6090919063ffffffff16565b6000610c23606461384360165485613a6090919063ffffffff16565b600081836146395760405162461bcd60e51b8152600401610b5291906148c9565b506146448385614a60565b949350505050565b600061465661390b565b905060006146648383613a60565b306000908152600360205260409020549091506146819082613970565b30600090815260036020908152604080832093909355600a9052205460ff16156118cb57306000908152600460205260409020546146bf9084613970565b30600090815260046020526040902055505050565b600d546146e19083613a1e565b600d55600e546146f19082613970565b600e555050565b60006020828403121561470a57600080fd5b8135610db881614acc565b60006020828403121561472757600080fd5b8151610db881614acc565b6000806040838503121561474557600080fd5b823561475081614acc565b946020939093013593505050565b6000806040838503121561477157600080fd5b823561477c81614acc565b9150602083013561478c81614acc565b809150509250929050565b6000806000606084860312156147ac57600080fd5b83356147b781614acc565b925060208401356147c781614acc565b929592945050506040919091013590565b6000602082840312156147ea57600080fd5b8135610db881614ae4565b60006020828403121561480757600080fd5b8151610db881614ae4565b60006020828403121561482457600080fd5b5035919050565b6000806040838503121561483e57600080fd5b82359150602083013561478c81614ae4565b600081518084526020808501945080840160005b838110156148895781516001600160a01b031687529582019590820190600101614864565b509495945050505050565b8481526080602082015260006148ad6080830186614850565b6001600160a01b03949094166040830152506060015292915050565b600060208083528351808285015260005b818110156148f6578581018301518582016040015282016148da565b81811115614908576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b8281526040602082015260006146446040830184614850565b85815284602082015260a06040820152600061498b60a0830186614850565b6001600160a01b0394909416606083015250608001529392505050565b600082198211156149bb576149bb614a74565b500190565b6000826149cf576149cf614a8a565b500490565b60008160001904831182151516156149ee576149ee614a74565b500290565b600082821015614a0557614a05614a74565b500390565b600181811c90821680614a1e57607f821691505b60208210811415614a3f57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415614a5957614a59614a74565b5060010190565b600082614a6f57614a6f614a8a565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114614ae157600080fd5b50565b8015158114614ae157600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f56d43e2fe4498fbaf03b4dca35e502386e7b744cf494f8374ac1479c9c4c68064736f6c63430008070033

Deployed Bytecode

0x6080604052600436106103905760003560e01c806367de8be9116101dc578063975c0ed311610102578063dd467064116100a0578063f03e63b41161006f578063f03e63b414610aa9578063f2fde38b14610ac9578063f34eb0b814610ae9578063ffb54a9914610b0957600080fd5b8063dd46706414610a0d578063dd62ed3e14610a2d578063e2c335db14610a73578063ea2f0b3714610a8957600080fd5b8063a69df4b5116100dc578063a69df4b5146109a2578063a9059cbb146109b7578063b4f40c61146109d7578063c816841b146109ed57600080fd5b8063975c0ed31461094c578063a3b855ce14610962578063a457c2d71461098257600080fd5b80637f1603461161017a57806388f820201161014957806388f82020146108c05780638da5cb5b146108f957806391648a9b1461091757806395d89b411461093757600080fd5b80637f160346146108555780638203f5fe146108755780638298b2721461088a57806382aa7c68146108a057600080fd5b806370a08231116101b657806370a08231146107d9578063735de9f7146107f9578063790ca4131461081f5780637b1a49091461083557600080fd5b806367de8be9146107835780636a395ccb146107a35780636bc87c3a146107c357600080fd5b80633bd5d173116102c15780635342acb41161025f5780635fdc61501161022e5780635fdc6150146106f4578063602bc62b146107145780636053a0e314610729578063610d5b191461074a57600080fd5b80635342acb414610668578063557ed1ba146106a15780635932ead1146106b45780635b38832d146106d457600080fd5b80634549b0391161029b5780634549b039146105f15780634a74bb02146106115780634ddfae4b1461063257806352390c021461064857600080fd5b80633bd5d1731461059157806341cb87fc146105b1578063437823ec146105d157600080fd5b806327c8f8351161032e578063313ce56711610308578063313ce567146105195780633685d4191461053b578063395093511461055b5780633b124fe71461057b57600080fd5b806327c8f8351461048d57806329370cc6146104d95780632d838119146104f957600080fd5b806313114a9d1161036a57806313114a9d1461041957806318160ddd14610438578063224a7c6a1461044d57806323b872dd1461046d57600080fd5b8063061c82d01461039c57806306fdde03146103be578063095ea7b3146103e957600080fd5b3661039757005b600080fd5b3480156103a857600080fd5b506103bc6103b7366004614812565b610b28565b005b3480156103ca57600080fd5b506103d3610b80565b6040516103e091906148c9565b60405180910390f35b3480156103f557600080fd5b50610409610404366004614732565b610c12565b60405190151581526020016103e0565b34801561042557600080fd5b50600e545b6040519081526020016103e0565b34801561044457600080fd5b50600c5461042a565b34801561045957600080fd5b506103bc610468366004614812565b610c29565b34801561047957600080fd5b50610409610488366004614797565b610c58565b34801561049957600080fd5b506104c17f000000000000000000000000000000000000000000000000000000000000dead81565b6040516001600160a01b0390911681526020016103e0565b3480156104e557600080fd5b506103bc6104f43660046147d8565b610cc1565b34801561050557600080fd5b5061042a610514366004614812565b610d3b565b34801561052557600080fd5b5060115460405160ff90911681526020016103e0565b34801561054757600080fd5b506103bc6105563660046146f8565b610dbf565b34801561056757600080fd5b50610409610576366004614732565b610f76565b34801561058757600080fd5b5061042a60145481565b34801561059d57600080fd5b506103bc6105ac366004614812565b610fac565b3480156105bd57600080fd5b506103bc6105cc3660046146f8565b611096565b3480156105dd57600080fd5b506103bc6105ec3660046146f8565b611424565b3480156105fd57600080fd5b5061042a61060c36600461482b565b6114db565b34801561061d57600080fd5b5060205461040990600160a81b900460ff1681565b34801561063e57600080fd5b5061042a601d5481565b34801561065457600080fd5b506103bc6106633660046146f8565b611568565b34801561067457600080fd5b506104096106833660046146f8565b6001600160a01b031660009081526009602052604090205460ff1690565b3480156106ad57600080fd5b504261042a565b3480156106c057600080fd5b506103bc6106cf3660046147d8565b6116bb565b3480156106e057600080fd5b506103bc6106ef3660046147d8565b6116f8565b34801561070057600080fd5b506103bc61070f366004614812565b611735565b34801561072057600080fd5b5060025461042a565b34801561073557600080fd5b5060205461040990600160b01b900460ff1681565b34801561075657600080fd5b506104096107653660046146f8565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561078f57600080fd5b506103bc61079e366004614812565b611764565b3480156107af57600080fd5b506103bc6107be366004614797565b611793565b3480156107cf57600080fd5b5061042a60165481565b3480156107e557600080fd5b5061042a6107f43660046146f8565b6118d0565b34801561080557600080fd5b50601f546104c1906201000090046001600160a01b031681565b34801561082b57600080fd5b5061042a60125481565b34801561084157600080fd5b506103bc610850366004614732565b61192f565b34801561086157600080fd5b506103bc610870366004614812565b611ab6565b34801561088157600080fd5b506103bc611afe565b34801561089657600080fd5b5061042a601a5481565b3480156108ac57600080fd5b506103bc6108bb366004614812565b612b41565b3480156108cc57600080fd5b506104096108db3660046146f8565b6001600160a01b03166000908152600a602052604090205460ff1690565b34801561090557600080fd5b506000546001600160a01b03166104c1565b34801561092357600080fd5b506103bc6109323660046147d8565b612bb8565b34801561094357600080fd5b506103d3612c00565b34801561095857600080fd5b5061042a60185481565b34801561096e57600080fd5b506103bc61097d366004614812565b612c0f565b34801561098e57600080fd5b5061040961099d366004614732565b612c3e565b3480156109ae57600080fd5b506103bc612c8d565b3480156109c357600080fd5b506104096109d2366004614732565b612da5565b3480156109e357600080fd5b5061042a601c5481565b3480156109f957600080fd5b506020546104c1906001600160a01b031681565b348015610a1957600080fd5b506103bc610a28366004614812565b612db2565b348015610a3957600080fd5b5061042a610a4836600461475e565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b348015610a7f57600080fd5b5061042a601b5481565b348015610a9557600080fd5b506103bc610aa43660046146f8565b612e49565b348015610ab557600080fd5b506103bc610ac43660046146f8565b612efc565b348015610ad557600080fd5b506103bc610ae43660046146f8565b612f4e565b348015610af557600080fd5b506103bc610b04366004614812565b613038565b348015610b1557600080fd5b50601f5461040990610100900460ff1681565b6000546001600160a01b03163314610b5b5760405162461bcd60e51b8152600401610b529061491e565b60405180910390fd5b601481601854610b6b91906149a8565b1115610b7657600080fd5b6014819055601555565b6060600f8054610b8f90614a0a565b80601f0160208091040260200160405190810160405280929190818152602001828054610bbb90614a0a565b8015610c085780601f10610bdd57610100808354040283529160200191610c08565b820191906000526020600020905b815481529060010190602001808311610beb57829003601f168201915b5050505050905090565b6000610c1f338484613067565b5060015b92915050565b6000546001600160a01b03163314610c535760405162461bcd60e51b8152600401610b529061491e565b601d55565b6000610c6584848461318b565b610cb78433610cb285604051806060016040528060288152602001614af3602891396001600160a01b038a16600090815260056020908152604080832033845290915290205491906138d1565b613067565b5060019392505050565b6000546001600160a01b03163314610ceb5760405162461bcd60e51b8152600401610b529061491e565b6020805460ff60b01b1916600160b01b8315159081029190911782556040519081527f3794234fa370c9f3b948dda3e3040530785b2ef1eb27dda3ffde478f4e2643c0910160405180910390a150565b6000600d54821115610da25760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610b52565b6000610dac61390b565b9050610db8838261392e565b9392505050565b6000546001600160a01b03163314610de95760405162461bcd60e51b8152600401610b529061491e565b6001600160a01b0381166000908152600a602052604090205460ff16610e515760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c726561647920696e636c7564656400000000006044820152606401610b52565b60005b600b54811015610f7257816001600160a01b0316600b8281548110610e7b57610e7b614ab6565b6000918252602090912001546001600160a01b03161415610f6057600b8054610ea6906001906149f3565b81548110610eb657610eb6614ab6565b600091825260209091200154600b80546001600160a01b039092169183908110610ee257610ee2614ab6565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600482526040808220829055600a90925220805460ff19169055600b805480610f3a57610f3a614aa0565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610f6a81614a45565b915050610e54565b5050565b3360008181526005602090815260408083206001600160a01b03871684529091528120549091610c1f918590610cb29086613970565b336000818152600a602052604090205460ff16156110215760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610b52565b600061102c836139cf565b505050506001600160a01b03841660009081526003602052604090205491925061105891905082613a1e565b6001600160a01b038316600090815260036020526040902055600d5461107e9082613a1e565b600d55600e5461108e9084613970565b600e55505050565b6000546001600160a01b031633146110c05760405162461bcd60e51b8152600401610b529061491e565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561110057600080fd5b505afa158015611114573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111389190614715565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561118057600080fd5b505afa158015611194573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b89190614715565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b1580156111fe57600080fd5b505afa158015611212573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112369190614715565b90506001600160a01b0381166113dc57816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561127f57600080fd5b505afa158015611293573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b79190614715565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156112ff57600080fd5b505afa158015611313573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113379190614715565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561137f57600080fd5b505af1158015611393573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113b79190614715565b602080546001600160a01b0319166001600160a01b03929092169190911790556113f8565b602080546001600160a01b0319166001600160a01b0383161790555b50601f80546001600160a01b03909216620100000262010000600160b01b031990921691909117905550565b6000546001600160a01b0316331461144e5760405162461bcd60e51b8152600401610b529061491e565b6001600160a01b03811660009081526009602052604090205460ff16156114b75760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610b52565b6001600160a01b03166000908152600960205260409020805460ff19166001179055565b6000600c5483111561152f5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610b52565b8161154e57600061153f846139cf565b50939550610c23945050505050565b6000611559846139cf565b50929550610c23945050505050565b6000546001600160a01b031633146115925760405162461bcd60e51b8152600401610b529061491e565b6001600160a01b0381166000908152600a602052604090205460ff16156115fb5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610b52565b6001600160a01b03811660009081526003602052604090205415611655576001600160a01b03811660009081526003602052604090205461163b90610d3b565b6001600160a01b0382166000908152600460205260409020555b6001600160a01b03166000818152600a60205260408120805460ff19166001908117909155600b805491820181559091527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319169091179055565b6000546001600160a01b031633146116e55760405162461bcd60e51b8152600401610b529061491e565b601f805460ff1916911515919091179055565b6000546001600160a01b031633146117225760405162461bcd60e51b8152600401610b529061491e565b6019805460ff1916911515919091179055565b6000546001600160a01b0316331461175f5760405162461bcd60e51b8152600401610b529061491e565b601a55565b6000546001600160a01b0316331461178e5760405162461bcd60e51b8152600401610b529061491e565b601c55565b6000546001600160a01b031633146117bd5760405162461bcd60e51b8152600401610b529061491e565b6001600160a01b03831630141561180b5760405162461bcd60e51b815260206004820152601260248201527143616e742072656d6f7665204750554e4b5360701b6044820152606401610b52565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb90604401602060405180830381600087803b15801561185557600080fd5b505af1158015611869573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188d91906147f5565b6118cb5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606401610b52565b505050565b6001600160a01b0381166000908152600a602052604081205460ff161561190d57506001600160a01b031660009081526004602052604090205490565b6001600160a01b038216600090815260036020526040902054610c2390610d3b565b6000546001600160a01b031633146119595760405162461bcd60e51b8152600401610b529061491e565b670de0b6b3a764000081111561199d5760405162461bcd60e51b8152602060048201526009602482015268062408aa890409ac2f60bb1b6044820152606401610b52565b804710156119ed5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610b52565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611a3a576040519150601f19603f3d011682016040523d82523d6000602084013e611a3f565b606091505b50509050806118cb5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610b52565b6000546001600160a01b03163314611ae05760405162461bcd60e51b8152600401610b529061491e565b60148054611aee90836149a8565b1115611af957600080fd5b601855565b6000546001600160a01b03163314611b285760405162461bcd60e51b8152600401610b529061491e565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611b7a57600080fd5b505afa158015611b8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bb29190614715565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611bfa57600080fd5b505afa158015611c0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c329190614715565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015611c7a57600080fd5b505af1158015611c8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cb29190614715565b602080546001600160a01b0319166001600160a01b03928316179055601f805462010000600160b01b03191662010000848416021790556000805460019260099291166001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526009835290812080548416600190811790915560079092527f57c722c10b286721330ce1e7368f87f549121277c4e5ffab2e83419c7564f96180548416831790556008805480840182557ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee390810180546001600160a01b0319908116737589319ed0fd750017159fb4e4d96c63966173c1179091557fb4360de54da26af4127515af1e49997106b425ee5904e923f0902c7618138e598054871686179055825480860184558201805482167365a67df75ccbf57828185c7c050e34de64d859d01790557faa01439ba306fcf815e716b248617e3c66941c4344ce5297e38ccc42cd30bc1180548716861781558354808701855583018054831673e031b36b53e53a292a20c5f08fd1658cddf74fce9081179091558154881687179091558354808701855583018054831690911790557f20bb0313363229c48e5dca565476b9f004fcadd21a3cebd9148dbac2f2ba8e6d80548716861790558254808601845582018054821673e516bdee55b0b4e9bacaf6285130de15589b13451790557f185a84d37a19636863439d4bd8f79b953edfc2f2b332404b82e2c102dfbb4b8d80548716861790558254808601845582018054821673a1cec245c456dd1bd9f2815a6955fef44eb4191b1790557ff405e61457986734bcc74d319afb38a21149b3d56f884ce85ec24a17fadbe35d80548716861790558254808601845582018054821673d7d3ee77d35d0a56f91542d4905b1a2b1cd7cf951790557fa2988ed14d9641c67aefa7ee82d50112dd7b9326d1e98e9dce9d802915d3b36480548716861790558254808601845582018054821673fe76f05dc59fec04184fa0245ad0c3cf9a57b9641790557f158b420708a0e60d8f36936f51360cee200d1017c9023a4ddcae85bff89c0f4e80548716861790558254808601845582018054821673dc81a3450817a58d00f45c86d0368290088db8481790557ff1d1c874a6478f85b6b904feafb9a196ead08dc959fdf0a523b19e42779d27ce8054871686179055825480860184558201805482167345fd07c63e5c316540f14b2002b085aee78e38811790557f401a4c0ca7781d92989fe1809638f35a473d45b2aa1f20ea08b891ad153486ab8054871686179055825480860184558201805482167327f9adb26d532a41d97e00206114e429ad58c6791790557fcdd749be89563b0fe17aff861f904dad7a5ecfebb7ff064b12d5552d5c400ea7805487168617905582548086018455820180548216739282dc5c422fa91ff2f6ff3a0b45b7bf97cf78e71790557f3eca23c1fceac0076012235763bf4b524e34500801ac57fb32381013c0d6901e80548716861790558254808601845582018054821673fad95b6089c53a0d1d861eabfaadd8901b0f85331790557f297b29cec8a1eb621a328e39c96c47ebe5e4031f1f910cb41ad54c511034e73a805487168617905582548086018455820180548216731d6e8bac6ea3730825bde4b005ed7b2b39a2932d1790557ffe44942143e318205a789f77df1b2bf735ffc548308bab5499d0216aec3332e48054871686179055825480860184558201805482166d084e91743124a982076c59f100841790557f3e4f611ed8482ea59e6424ad23a75453ec3ddb7677cd19d4c934256448de183a805487168617905582548086018455820180548216736da4bea09c3aa0761b09b19837d9105a522543031790557f7ee7f44cdecb2d7c9ebf96addf904d703c57dc894fdb6b132a783045f8ad751980548716861790558254808601845582018054821673323b7f37d382a68b0195b873af17cea5b67cd5951790557fb1c982ebec4b3ffbad67c2dd4b8d8215a47baa972366e4a63f51e9c6ce9a5d4e8054871686179055825480860184558201805482166f5804b22091aa9830e50459a15e7c92411790557fa11920fa7ae15c72226954c89a9e5c6f067c85fde0c317c7a78e3897c4aa229d80548716861790558254808601845582018054821673a3b0e79935815730d942a444a84d4bd14a3395531790557f1ea4ceff6c7cd2bd1aa871eb2c9e7b14363c267e1c8d45b2b4038682a83baef480548716861790558254808601845582018054821673f6da21e95d74767009accb145b96897ac3630bad1790557f5ccd521e90776b08b8302e31941eda99ae5bb6dd0a4a30a038e75275ed151f1f8054871686179055825480860184558201805482166d7673393729d5618dc555fd13f9aa1790557f9aac9a42097620b1ff8454a6252a3d8b6aecd2746f5cc70c2496bd35cd9e69b18054871686179055825480860184558201805482166d03441d59dde9a90bffb1cd3fabf11790557fa9d6552d66baaa4186648ea67a6cabd630f6081027f5bf546135d86d60df82fd8054871686179055825480860184558201805482167359903993ae67bf48f10832e9be28935fee04d6f61790557fe35fa26e68f804147088c2b96da426aeba0a986c80b2972d565ff073fcf3b2ed80548716861790558254808601845582018054821670917de6037d52b1f0a306eecd208405f7cd1790557f0974c6061423c59b1cc18edad4ab1f546201d6fbcde60ba3925dea5bbc1f3b92805487168617905582548086018455820180548216737100e690554b1c2fd01e8648db88be235c1e65141790557fe96e4260a99427d26094e01497bcbf1209430052150bbba23c77691cfd3888de8054871686179055825480860184558201805482167372b30cdc1583224381132d379a052a6b107254151790557fc71bda09a50ffbca62ccd1161350db5851fbb6ddd35d31c3c3517822e54b5c55805487168617905582548086018455820180548216739edd647d7d6eceae6bb61d7785ef66c5055a9bee1790557f3848f2c08fb0667ee5b5086c84806cc492f6771453629ea470ad1bb4309b27df80548716861790558254808601845582018054821673fe9d99ef02e905127239e85a611c29ad32c31c2f1790557f954a0c36a45fcaf27e7a22dfaa2c9f3b813d726eab18c0fdbf36d3b835f9975c8054871686178155835480870185558301805483167339608b6f20704889c51c0ae28b1fca8f36a5239b9081179091557f7985ebff531dc9ae85a3acb40e87a09c7806f6a13dabe868af5b0a8d22bd505e80548916881790558454808801865584018054841673c496d84215d5018f6f53e7f6f12e45c9b5e8e8a91790557f6c52e41dd6b06a1bc9b96527098c91ef1536901d6b06ec3895465678b4d3cb2d8054891688179055845480880186558401805484167359341bc6b4f3ace878574b05914f43309dd678c71790557f33bb6bc5e24dd699dcbf1756dad57e97b0d83832560d2b9372cac6749ec975d080548916881790558454808801865584018054841673e986d48efee9ec1b8f66cd0b0ae8e3d18f091bdf1790557fc419d9cfed3cf702f7269baae5ca04d34554e3d12c577f99b455846286201a5c805489168817905584548088018655840180548416734aeb32e16dcac00b092596adc6cd4955efdee2901790557fab78f0789a7bb7c5eaddd13a6a0e91c9346a2134aed2e32ec259fffe6a6a9c7680548916881790558454808801865584018054841673136f4b5b6a306091b280e3f251fa0e21b1280cd51790558154881687179091558354808701855583018054831690911790557f1be75507d4b2cac3a24552f05fdfa14cf0f018e17cf718ca8d750a13ecaa3fb8805487168617905582548086018455820180548216735b83a351500b631cc2a20a665ee17f0dc66e3db71790557f8499ee18ee603a2cfde0354d5d324ebcbe145b33d7bdb9c0e42bad4169d18d9d80548716861790558254808601845582018054821673bcb05a3f85d34f0194c70d5914d5c4e28f11cc021790557f47c3decdbf0327f6973c2489bb6b726e7c2d32891ee0e58aab41a4ba06f0745b8054871686179055825480860184558201805482167322246f9bca9921bfa9a3f8df5babc5bc8ee738501790557f327a45de5f4ec9398adddd1243a3de3a045557ad91bb3317327482f19cc2fa568054871686179055825480860184558201805482167342d4c197036bd9984ca652303e07dd29fa6bdb371790557f91e3d6ffd1390da3bfbc0e0875515e89982841b064fcda9b67cffc63d8082ab68054871686179055825480860184558201805482166e3b3cc22af3ae1eac0440bcee416b401790557f0f0787d14733cc845754e46f4b9ac4f1ad047fd749dc13e3d96a4ae78999260f80548716861790558254808601845582018054821673231dc6af3c66741f6cf618884b953df0e83c1a2a1790557f9e1cab7afd1c36c8834124180f41b4fdd617e5b830a32dbe4ad39ce2403f330180548716861790558254808601845582018054821673c6bf34596f74eb22e066a878848dfb9fc1cf4c651790557ffce34a7b755f382e92d8fed99c280c08c64d82c48720533c065ce505a27e30c48054871686179055825480860184558201805482167320f6fcd6b8813c4f98c0ffbd88c87c0255040aa31790557f036de65337957dcec72784f3b7bdcc4c1db7dca6197401781e45567a6282e7ec80548716861790558254808601845582018054821673d334c5392ed4863c81576422b968c6fb90ee9f791790557fb223036d049cf96d476dc559d24b358878d6abfa6d8b9398c62a0461b2db6f6a80548716861790558254808601845582018054821673fffff6e70842330948ca47254f2be673b1cb0db71790557f3f74e5026cf68c914529907c341f86db0d11f8d7bb07501e2da38fe88ece2d8a80548716861781558354808701855583018054831673a39c50bf86e15391180240938f469a7bf4fdae9a90811790915581549097168617905582549485018355919092529101805490911690911790555060118054744bcf0a70a20dfd45962d8ba28ae9e643af970b8c00610100600160a81b0319909116179055565b6000546001600160a01b03163314612b6b5760405162461bcd60e51b8152600401610b529061491e565b601e819055600a601881905560165560006014556020805460ff60a81b1916600160a81b179055601f805461ff001916610100179055426012819055612bb29060f06149a8565b60135550565b6000546001600160a01b03163314612be25760405162461bcd60e51b8152600401610b529061491e565b60208054911515600160a81b0260ff60a81b19909216919091179055565b606060108054610b8f90614a0a565b6000546001600160a01b03163314612c395760405162461bcd60e51b8152600401610b529061491e565b601b55565b6000610c1f3384610cb285604051806060016040528060258152602001614b1b602591393360009081526005602090815260408083206001600160a01b038d16845290915290205491906138d1565b6001546001600160a01b03163314612cf35760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b6064820152608401610b52565b6002544211612d445760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c20372064617973006044820152606401610b52565b600154600080546040516001600160a01b0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000610c1f33848461318b565b6000546001600160a01b03163314612ddc5760405162461bcd60e51b8152600401610b529061491e565b60008054600180546001600160a01b03199081166001600160a01b03841617909155169055612e0b81426149a8565b600255600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6000546001600160a01b03163314612e735760405162461bcd60e51b8152600401610b529061491e565b6001600160a01b03811660009081526009602052604090205460ff16612edb5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c726561647920696e636c7564656400000000006044820152606401610b52565b6001600160a01b03166000908152600960205260409020805460ff19169055565b6000546001600160a01b03163314612f265760405162461bcd60e51b8152600401610b529061491e565b601180546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6000546001600160a01b03163314612f785760405162461bcd60e51b8152600401610b529061491e565b6001600160a01b038116612fdd5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b52565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146130625760405162461bcd60e51b8152600401610b529061491e565b601e55565b6001600160a01b0383166130c95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b52565b6001600160a01b03821661312a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b52565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166131ef5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b52565b6001600160a01b0382166132515760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b52565b600081116132b35760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b52565b6001600160a01b03821660009081526007602052604090205460ff16156133165760405162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b6044820152606401610b52565b3360009081526007602052604090205460ff16156133705760405162461bcd60e51b8152602060048201526017602482015276596f752068617665206e6f20706f77657220686572652160481b6044820152606401610b52565b6000546001600160a01b0384811691161480159061339c57506000546001600160a01b03838116911614155b1561350d57601f54610100900460ff16613499576001600160a01b0383163014806133cf57506001600160a01b03821630145b806133e757506000546001600160a01b038481169116145b806133ff57506000546001600160a01b038381169116145b8061342257506001600160a01b03831660009081526009602052604090205460ff165b8061344557506001600160a01b03821660009081526009602052604090205460ff165b61349957601f54610100900460ff166134995760405162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c81a5cc81b9bdd08195b98589b195960521b6044820152606401610b52565b601f5460ff161561350d573360009081526006602052604090206002015460ff1661350d57604080516060810182526000808252602080830182815260018486018181523385526006909352949092209251835590519282019290925590516002909101805460ff19169115159190911790555b6020546001600160a01b03848116911614801561353e5750601f546001600160a01b03838116620100009092041614155b801561356357506001600160a01b03821660009081526009602052604090205460ff16155b1561372957601f54610100900460ff166135bf5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642e00000000000000006044820152606401610b52565b601854601655601f5460ff16156136805742601354111561368057601e548111156135e957600080fd5b6001600160a01b038216600090815260066020526040902054421161365b5760405162461bcd60e51b815260206004820152602260248201527f596f75722062757920636f6f6c646f776e20686173206e6f7420657870697265604482015261321760f11b6064820152608401610b52565b61366642602d6149a8565b6001600160a01b0383166000908152600660205260409020555b601f5460ff1615613729576001600160a01b03821660009081526006602052604090206001015442116137015760405162461bcd60e51b815260206004820152602360248201527f596f75722073656c6c20636f6f6c646f776e20686173206e6f7420657870697260448201526232b21760e91b6064820152608401610b52565b61370c42600f6149a8565b6001600160a01b0383166000908152600660205260409020600101555b602054600160a01b900460ff1615801561374c5750602054600160a81b900460ff165b801561376557506020546001600160a01b038381169116145b156138745760195460ff16156137c857600061378c601a5483613a6090919063ffffffff16565b6020549091506137bb906137b49084906137ae906001600160a01b03166118d0565b90613970565b829061392e565b90506137c681613adf565b505b60165460006137d6306118d0565b905080156137e7576137e781613b2b565b6020544790600160b01b900460ff1680156138045750601b548410155b1561386e576000600a90506000613859600a613843613850613849601854613843601c5461383d6018548e613a1e90919063ffffffff16565b90613a60565b9061392e565b8690613970565b601d5490613a60565b905080831061386b5761386b81613b8e565b50505b50506016555b6001600160a01b03831660009081526009602052604090205460019060ff16806138b657506001600160a01b03831660009081526009602052604090205460ff165b156138bf575060005b6138cb84848484613bc0565b50505050565b600081848411156138f55760405162461bcd60e51b8152600401610b5291906148c9565b50600061390284866149f3565b95945050505050565b6000806000613918613ce5565b9092509050613927828261392e565b9250505090565b6000610db883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613e67565b60008061397d83856149a8565b905083811015610db85760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610b52565b60008060008060008060008060006139e68a613e95565b9250925092506000806000613a048d86866139ff61390b565b613ed7565b919f909e50909c50959a5093985091965092945050505050565b6000610db883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506138d1565b600082613a6f57506000610c23565b6000613a7b83856149d4565b905082613a8885836149c0565b14610db85760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610b52565b60185480821015613af35750601854613b07565b6028821115613b0457506028613b07565b50805b613b12816002613f27565b15613b255780613b2181614a45565b9150505b60165550565b6020805460ff60a01b1916600160a01b17905547613b4882613f69565b6000613b544783613a1e565b601154909150613b7c9061010090046001600160a01b0316613b7783600261392e565b614130565b50506020805460ff60a01b1916905550565b6020805460ff60a01b1916600160a01b1790558015613bb057613bb081614166565b506020805460ff60a01b19169055565b80613bcd57613bcd61432c565b6001600160a01b0384166000908152600a602052604090205460ff168015613c0e57506001600160a01b0383166000908152600a602052604090205460ff16155b15613c2357613c1e84848461435a565b613ccf565b6001600160a01b0384166000908152600a602052604090205460ff16158015613c6457506001600160a01b0383166000908152600a602052604090205460ff165b15613c7457613c1e848484614480565b6001600160a01b0384166000908152600a602052604090205460ff168015613cb457506001600160a01b0383166000908152600a602052604090205460ff165b15613cc457613c1e848484614529565b613ccf84848461459c565b806138cb576138cb601554601455601754601655565b600d54600c546000918291825b600b54811015613e37578260036000600b8481548110613d1457613d14614ab6565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180613d7f57508160046000600b8481548110613d5857613d58614ab6565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15613d9557600d54600c54945094505050509091565b613ddb60036000600b8481548110613daf57613daf614ab6565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490613a1e565b9250613e2360046000600b8481548110613df757613df7614ab6565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390613a1e565b915080613e2f81614a45565b915050613cf2565b50600c54600d54613e479161392e565b821015613e5e57600d54600c549350935050509091565b90939092509050565b60008183613e885760405162461bcd60e51b8152600401610b5291906148c9565b50600061390284866149c0565b600080600080613ea4856145e0565b90506000613eb1866145fc565b90506000613ec982613ec38986613a1e565b90613a1e565b979296509094509092505050565b6000808080613ee68886613a60565b90506000613ef48887613a60565b90506000613f028888613a60565b90506000613f1482613ec38686613a1e565b939b939a50919850919650505050505050565b6000610db883836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f0000000000000000815250614618565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613f9e57613f9e614ab6565b60200260200101906001600160a01b031690816001600160a01b031681525050601f60029054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561400c57600080fd5b505afa158015614020573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140449190614715565b8160018151811061405757614057614ab6565b6001600160a01b039283166020918202929092010152601f546140839130916201000090041684613067565b601f5460405163791ac94760e01b8152620100009091046001600160a01b03169063791ac947906140c190859060009086903090429060040161496c565b600060405180830381600087803b1580156140db57600080fd5b505af11580156140ef573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051614124929190614953565b60405180910390a15050565b6040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156118cb573d6000803e3d6000fd5b604080516002808252606082018352600092602083019080368337019050509050601f60029054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156141d557600080fd5b505afa1580156141e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061420d9190614715565b8160008151811061422057614220614ab6565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061425457614254614ab6565b6001600160a01b039283166020918202929092010152601f546201000090041663b6f9de95836000847f000000000000000000000000000000000000000000000000000000000000dead6142aa4261012c613970565b6040518663ffffffff1660e01b81526004016142c99493929190614894565b6000604051808303818588803b1580156142e257600080fd5b505af11580156142f6573d6000803e3d6000fd5b50505050507f6fd378a9d8b7345c2e5b18229aaf1e39d32b177b501d0a0d26a0a858a23a96248282604051614124929190614953565b60145415801561433c5750601654155b1561434357565b601480546015556016805460175560009182905555565b60008060008060008061436c876139cf565b6001600160a01b038f16600090815260046020526040902054959b5093995091975095509350915061439e9088613a1e565b6001600160a01b038a166000908152600460209081526040808320939093556003905220546143cd9087613a1e565b6001600160a01b03808b1660009081526003602052604080822093909355908a16815220546143fc9086613970565b6001600160a01b03891660009081526003602052604090205561441e8161464c565b61442884836146d4565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161446d91815260200190565b60405180910390a3505050505050505050565b600080600080600080614492876139cf565b6001600160a01b038f16600090815260036020526040902054959b509399509197509550935091506144c49087613a1e565b6001600160a01b03808b16600090815260036020908152604080832094909455918b168152600490915220546144fa9084613970565b6001600160a01b0389166000908152600460209081526040808320939093556003905220546143fc9086613970565b60008060008060008061453b876139cf565b6001600160a01b038f16600090815260046020526040902054959b5093995091975095509350915061456d9088613a1e565b6001600160a01b038a166000908152600460209081526040808320939093556003905220546144c49087613a1e565b6000806000806000806145ae876139cf565b6001600160a01b038f16600090815260036020526040902054959b509399509197509550935091506143cd9087613a1e565b6000610c23606461384360145485613a6090919063ffffffff16565b6000610c23606461384360165485613a6090919063ffffffff16565b600081836146395760405162461bcd60e51b8152600401610b5291906148c9565b506146448385614a60565b949350505050565b600061465661390b565b905060006146648383613a60565b306000908152600360205260409020549091506146819082613970565b30600090815260036020908152604080832093909355600a9052205460ff16156118cb57306000908152600460205260409020546146bf9084613970565b30600090815260046020526040902055505050565b600d546146e19083613a1e565b600d55600e546146f19082613970565b600e555050565b60006020828403121561470a57600080fd5b8135610db881614acc565b60006020828403121561472757600080fd5b8151610db881614acc565b6000806040838503121561474557600080fd5b823561475081614acc565b946020939093013593505050565b6000806040838503121561477157600080fd5b823561477c81614acc565b9150602083013561478c81614acc565b809150509250929050565b6000806000606084860312156147ac57600080fd5b83356147b781614acc565b925060208401356147c781614acc565b929592945050506040919091013590565b6000602082840312156147ea57600080fd5b8135610db881614ae4565b60006020828403121561480757600080fd5b8151610db881614ae4565b60006020828403121561482457600080fd5b5035919050565b6000806040838503121561483e57600080fd5b82359150602083013561478c81614ae4565b600081518084526020808501945080840160005b838110156148895781516001600160a01b031687529582019590820190600101614864565b509495945050505050565b8481526080602082015260006148ad6080830186614850565b6001600160a01b03949094166040830152506060015292915050565b600060208083528351808285015260005b818110156148f6578581018301518582016040015282016148da565b81811115614908576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b8281526040602082015260006146446040830184614850565b85815284602082015260a06040820152600061498b60a0830186614850565b6001600160a01b0394909416606083015250608001529392505050565b600082198211156149bb576149bb614a74565b500190565b6000826149cf576149cf614a8a565b500490565b60008160001904831182151516156149ee576149ee614a74565b500290565b600082821015614a0557614a05614a74565b500390565b600181811c90821680614a1e57607f821691505b60208210811415614a3f57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415614a5957614a59614a74565b5060010190565b600082614a6f57614a6f614a8a565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114614ae157600080fd5b50565b8015158114614ae157600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f56d43e2fe4498fbaf03b4dca35e502386e7b744cf494f8374ac1479c9c4c68064736f6c63430008070033

Deployed Bytecode Sourcemap

15280:32329:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44497:176;;;;;;;;;;-1:-1:-1;44497:176:0;;;;;:::i;:::-;;:::i;:::-;;26576:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27488:161;;;;;;;;;;-1:-1:-1;27488:161:0;;;;;:::i;:::-;;:::i;:::-;;;4656:14:1;;4649:22;4631:41;;4619:2;4604:18;27488:161:0;4491:187:1;28609:87:0;;;;;;;;;;-1:-1:-1;28678:10:0;;28609:87;;;16071:25:1;;;16059:2;16044:18;28609:87:0;15925:177:1;26853:95:0;;;;;;;;;;-1:-1:-1;26933:7:0;;26853:95;;43726:107;;;;;;;;;;-1:-1:-1;43726:107:0;;;;;:::i;:::-;;:::i;27657:313::-;;;;;;;;;;-1:-1:-1;27657:313:0;;;;;:::i;:::-;;:::i;15398:81::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3859:32:1;;;3841:51;;3829:2;3814:18;15398:81:0;3695:203:1;43230:150:0;;;;;;;;;;-1:-1:-1;43230:150:0;;;;;:::i;:::-;;:::i;29539:253::-;;;;;;;;;;-1:-1:-1;29539:253:0;;;;;:::i;:::-;;:::i;26762:83::-;;;;;;;;;;-1:-1:-1;26828:9:0;;26762:83;;26828:9;;;;17173:36:1;;17161:2;17146:18;26762:83:0;17031:184:1;45588:479:0;;;;;;;;;;-1:-1:-1;45588:479:0;;;;;:::i;:::-;;:::i;27978:218::-;;;;;;;;;;-1:-1:-1;27978:218:0;;;;;:::i;:::-;;:::i;16403:26::-;;;;;;;;;;;;;;;;28708:377;;;;;;;;;;-1:-1:-1;28708:377:0;;;;;:::i;:::-;;:::i;46902:608::-;;;;;;;;;;-1:-1:-1;46902:608:0;;;;;:::i;:::-;;:::i;44852:190::-;;;;;;;;;;-1:-1:-1;44852:190:0;;;;;:::i;:::-;;:::i;29095:436::-;;;;;;;;;;-1:-1:-1;29095:436:0;;;;;:::i;:::-;;:::i;17108:41::-;;;;;;;;;;-1:-1:-1;17108:41:0;;;;-1:-1:-1;;;17108:41:0;;;;;;16786:37;;;;;;;;;;;;;;;;45246:334;;;;;;;;;;-1:-1:-1;45246:334:0;;;;;:::i;:::-;;:::i;42956:123::-;;;;;;;;;;-1:-1:-1;42956:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;43044:27:0;43020:4;43044:27;;;:18;:27;;;;;;;;;42956:123;6747:90;;;;;;;;;;-1:-1:-1;6814:15:0;6747:90;;43845:124;;;;;;;;;;-1:-1:-1;43845:124:0;;;;;:::i;:::-;;:::i;43981:136::-;;;;;;;;;;-1:-1:-1;43981:136:0;;;;;:::i;:::-;;:::i;44366:119::-;;;;;;;;;;-1:-1:-1;44366:119:0;;;;;:::i;:::-;;:::i;6649:90::-;;;;;;;;;;-1:-1:-1;6722:9:0;;6649:90;;17156:34;;;;;;;;;;-1:-1:-1;17156:34:0;;;;-1:-1:-1;;;17156:34:0;;;;;;29800:113;;;;;;;;;;-1:-1:-1;29800:113:0;;;;;:::i;:::-;-1:-1:-1;;;;;29887:18:0;29863:4;29887:18;;;:9;:18;;;;;;;;;29800:113;43641:77;;;;;;;;;;-1:-1:-1;43641:77:0;;;;;:::i;:::-;;:::i;46151:258::-;;;;;;;;;;-1:-1:-1;46151:258:0;;;;;:::i;:::-;;:::i;16484:30::-;;;;;;;;;;;;;;;;26956:198;;;;;;;;;;-1:-1:-1;26956:198:0;;;;;:::i;:::-;;:::i;16999:39::-;;;;;;;;;;-1:-1:-1;16999:39:0;;;;;;;-1:-1:-1;;;;;16999:39:0;;;16325:25;;;;;;;;;;;;;;;;46417:472;;;;;;;;;;-1:-1:-1;46417:472:0;;;;;:::i;:::-;;:::i;44685:159::-;;;;;;;;;;-1:-1:-1;44685:159:0;;;;;:::i;:::-;;:::i;18151:8417::-;;;;;;;;;;;;;:::i;16666:36::-;;;;;;;;;;;;;;;;17786:357;;;;;;;;;;-1:-1:-1;17786:357:0;;;;;:::i;:::-;;:::i;28481:120::-;;;;;;;;;;-1:-1:-1;28481:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;28573:20:0;28549:4;28573:20;;;:11;:20;;;;;;;;;28481:120;6177:79;;;;;;;;;;-1:-1:-1;6215:7:0;6242:6;-1:-1:-1;;;;;6242:6:0;6177:79;;44252:102;;;;;;;;;;-1:-1:-1;44252:102:0;;;;;:::i;:::-;;:::i;26667:87::-;;;;;;;;;;;;;:::i;16581:26::-;;;;;;;;;;;;;;;;43522:107;;;;;;;;;;-1:-1:-1;43522:107:0;;;;;:::i;:::-;;:::i;28204:269::-;;;;;;;;;;-1:-1:-1;28204:269:0;;;;;:::i;:::-;;:::i;7079:305::-;;;;;;;;;;;;;:::i;27162:167::-;;;;;;;;;;-1:-1:-1;27162:167:0;;;;;:::i;:::-;;:::i;16758:21::-;;;;;;;;;;;;;;;;17045:26;;;;;;;;;;-1:-1:-1;17045:26:0;;;;-1:-1:-1;;;;;17045:26:0;;;6845:226;;;;;;;;;;-1:-1:-1;6845:226:0;;;;;:::i;:::-;;:::i;27337:143::-;;;;;;;;;;-1:-1:-1;27337:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;27445:18:0;;;27418:7;27445:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;27337:143;16721:30;;;;;;;;;;;;;;;;45050:188;;;;;;;;;;-1:-1:-1;45050:188:0;;;;;:::i;:::-;;:::i;43089:133::-;;;;;;;;;;-1:-1:-1;43089:133:0;;;;;:::i;:::-;;:::i;6397:244::-;;;;;;;;;;-1:-1:-1;6397:244:0;;;;;:::i;:::-;;:::i;44129:115::-;;;;;;;;;;-1:-1:-1;44129:115:0;;;;;:::i;:::-;;:::i;16908:31::-;;;;;;;;;;-1:-1:-1;16908:31:0;;;;;;;;;;;44497:176;6304:6;;-1:-1:-1;;;;;6304:6:0;575:10;6304:22;6296:67;;;;-1:-1:-1;;;6296:67:0;;;;;;;:::i;:::-;;;;;;;;;44601:2:::1;44592:6;44580:11;;:18;;;;:::i;:::-;44579:24;;44571:33;;;::::0;::::1;;44616:7;:16:::0;;;44643:15:::1;:22:::0;44497:176::o;26576:83::-;26613:13;26646:5;26639:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26576:83;:::o;27488:161::-;27563:4;27580:39;575:10;27603:7;27612:6;27580:8;:39::i;:::-;-1:-1:-1;27637:4:0;27488:161;;;;;:::o;43726:107::-;6304:6;;-1:-1:-1;;;;;6304:6:0;575:10;6304:22;6296:67;;;;-1:-1:-1;;;6296:67:0;;;;;;;:::i;:::-;43801:11:::1;:24:::0;43726:107::o;27657:313::-;27755:4;27772:36;27782:6;27790:9;27801:6;27772:9;:36::i;:::-;27819:121;27828:6;575:10;27850:89;27888:6;27850:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27850:19:0;;;;;;:11;:19;;;;;;;;575:10;27850:33;;;;;;;;;;:37;:89::i;:::-;27819:8;:121::i;:::-;-1:-1:-1;27958:4:0;27657:313;;;;;:::o;43230:150::-;6304:6;;-1:-1:-1;;;;;6304:6:0;575:10;6304:22;6296:67;;;;-1:-1:-1;;;6296:67:0;;;;;;;:::i;:::-;43300:14:::1;:25:::0;;-1:-1:-1;;;;43300:25:0::1;-1:-1:-1::0;;;43300:25:0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;43341:31:::1;::::0;4631:41:1;;;43341:31:0::1;::::0;4604:18:1;43341:31:0::1;;;;;;;43230:150:::0;:::o;29539:253::-;29605:7;29644;;29633;:18;;29625:73;;;;-1:-1:-1;;;29625:73:0;;6641:2:1;29625:73:0;;;6623:21:1;6680:2;6660:18;;;6653:30;6719:34;6699:18;;;6692:62;-1:-1:-1;;;6770:18:1;;;6763:40;6820:19;;29625:73:0;6439:406:1;29625:73:0;29709:19;29732:10;:8;:10::i;:::-;29709:33;-1:-1:-1;29760:24:0;:7;29709:33;29760:11;:24::i;:::-;29753:31;29539:253;-1:-1:-1;;;29539:253:0:o;45588:479::-;6304:6;;-1:-1:-1;;;;;6304:6:0;575:10;6304:22;6296:67;;;;-1:-1:-1;;;6296:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;45670:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;45662:60;;;::::0;-1:-1:-1;;;45662:60:0;;10457:2:1;45662:60:0::1;::::0;::::1;10439:21:1::0;10496:2;10476:18;;;10469:30;10535:29;10515:18;;;10508:57;10582:18;;45662:60:0::1;10255:351:1::0;45662:60:0::1;45738:9;45733:327;45757:9;:16:::0;45753:20;::::1;45733:327;;;45815:7;-1:-1:-1::0;;;;;45799:23:0::1;:9;45809:1;45799:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;45799:12:0::1;:23;45795:254;;;45858:9;45868:16:::0;;:20:::1;::::0;45887:1:::1;::::0;45868:20:::1;:::i;:::-;45858:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;45843:9:::1;:12:::0;;-1:-1:-1;;;;;45858:31:0;;::::1;::::0;45853:1;;45843:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;45843:46:0::1;-1:-1:-1::0;;;;;45843:46:0;;::::1;;::::0;;45908:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;45947:11:::1;:20:::0;;;;:28;;-1:-1:-1;;45947:28:0::1;::::0;;45994:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;45994:15:0;;;;;-1:-1:-1;;;;;;45994:15:0::1;::::0;;;;;45733:327:::1;45588:479:::0;:::o;45795:254::-:1;45775:3:::0;::::1;::::0;::::1;:::i;:::-;;;;45733:327;;;;45588:479:::0;:::o;27978:218::-;575:10;28066:4;28115:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;28115:34:0;;;;;;;;;;28066:4;;28083:83;;28106:7;;28115:50;;28154:10;28115:38;:50::i;28708:377::-;575:10;28760:14;28809:19;;;:11;:19;;;;;;;;28808:20;28800:77;;;;-1:-1:-1;;;28800:77:0;;14958:2:1;28800:77:0;;;14940:21:1;14997:2;14977:18;;;14970:30;15036:34;15016:18;;;15009:62;-1:-1:-1;;;15087:18:1;;;15080:42;15139:19;;28800:77:0;14756:408:1;28800:77:0;28889:15;28913:19;28924:7;28913:10;:19::i;:::-;-1:-1:-1;;;;;;;;;28961:15:0;;;;;;:7;:15;;;;;;28888:44;;-1:-1:-1;28961:28:0;;:15;-1:-1:-1;28888:44:0;28961:19;:28::i;:::-;-1:-1:-1;;;;;28943:15:0;;;;;;:7;:15;;;;;:46;29010:7;;:20;;29022:7;29010:11;:20::i;:::-;29000:7;:30;29054:10;;:23;;29069:7;29054:14;:23::i;:::-;29041:10;:36;-1:-1:-1;;;28708:377:0:o;46902:608::-;6304:6;;-1:-1:-1;;;;;6304:6:0;575:10;6304:22;6296:67;;;;-1:-1:-1;;;6296:67:0;;;;;;;:::i;:::-;47025:29:::1;47076:9;47025:61;;47097:16;47134:10;-1:-1:-1::0;;;;;47134:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;47116:47:0::1;;47172:4;47179:10;-1:-1:-1::0;;;;;47179:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;47116:81;::::0;-1:-1:-1;;;;;;47116:81:0::1;::::0;;;;;;-1:-1:-1;;;;;4133:15:1;;;47116:81:0::1;::::0;::::1;4115:34:1::0;4185:15;;4165:18;;;4158:43;4050:18;;47116:81:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;47097:100:::0;-1:-1:-1;;;;;;47253:22:0;::::1;47249:217;;47324:10;-1:-1:-1::0;;;;;47324:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;47306:50:0::1;;47365:4;47372:10;-1:-1:-1::0;;;;;47372:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;47306:84;::::0;-1:-1:-1;;;;;;47306:84:0::1;::::0;;;;;;-1:-1:-1;;;;;4133:15:1;;;47306:84:0::1;::::0;::::1;4115:34:1::0;4185:15;;4165:18;;;4158:43;4050:18;;47306:84:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;47292:11;:98:::0;;-1:-1:-1;;;;;;47292:98:0::1;-1:-1:-1::0;;;;;47292:98:0;;;::::1;::::0;;;::::1;::::0;;47249:217:::1;;;47432:11;:22:::0;;-1:-1:-1;;;;;;47432:22:0::1;-1:-1:-1::0;;;;;47432:22:0;::::1;;::::0;;47249:217:::1;-1:-1:-1::0;47476:13:0::1;:26:::0;;-1:-1:-1;;;;;47476:26:0;;::::1;::::0;::::1;-1:-1:-1::0;;;;;;47476:26:0;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;46902:608:0:o;44852:190::-;6304:6;;-1:-1:-1;;;;;6304:6:0;575:10;6304:22;6296:67;;;;-1:-1:-1;;;6296:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;44930:27:0;::::1;;::::0;;;:18:::1;:27;::::0;;;;;::::1;;44929:28;44921:68;;;::::0;-1:-1:-1;;;44921:68:0;;9316:2:1;44921:68:0::1;::::0;::::1;9298:21:1::0;9355:2;9335:18;;;9328:30;9394:29;9374:18;;;9367:57;9441:18;;44921:68:0::1;9114:351:1::0;44921:68:0::1;-1:-1:-1::0;;;;;45000:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;45000:34:0::1;45030:4;45000:34;::::0;;44852:190::o;29095:436::-;29185:7;29224;;29213;:18;;29205:62;;;;-1:-1:-1;;;29205:62:0;;11564:2:1;29205:62:0;;;11546:21:1;11603:2;11583:18;;;11576:30;11642:33;11622:18;;;11615:61;11693:18;;29205:62:0;11362:355:1;29205:62:0;29283:17;29278:246;;29318:15;29342:19;29353:7;29342:10;:19::i;:::-;-1:-1:-1;29317:44:0;;-1:-1:-1;29376:14:0;;-1:-1:-1;;;;;29376:14:0;29278:246;29425:23;29456:19;29467:7;29456:10;:19::i;:::-;-1:-1:-1;29423:52:0;;-1:-1:-1;29490:22:0;;-1:-1:-1;;;;;29490:22:0;45246:334;6304:6;;-1:-1:-1;;;;;6304:6:0;575:10;6304:22;6296:67;;;;-1:-1:-1;;;6296:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;45329:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;45328:21;45320:61;;;::::0;-1:-1:-1;;;45320:61:0;;9316:2:1;45320:61:0::1;::::0;::::1;9298:21:1::0;9355:2;9335:18;;;9328:30;9394:29;9374:18;;;9367:57;9441:18;;45320:61:0::1;9114:351:1::0;45320:61:0::1;-1:-1:-1::0;;;;;45396:16:0;::::1;45415:1;45396:16:::0;;;:7:::1;:16;::::0;;;;;:20;45392:109:::1;;-1:-1:-1::0;;;;;45472:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;45452:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;45433:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;45392:109:::1;-1:-1:-1::0;;;;;45511:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;45511:27:0::1;45534:4;45511:27:::0;;::::1;::::0;;;45549:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;45549:23:0::1;::::0;;::::1;::::0;;45246:334::o;43845:124::-;6304:6;;-1:-1:-1;;;;;6304:6:0;575:10;6304:22;6296:67;;;;-1:-1:-1;;;6296:67:0;;;;;;;:::i;:::-;43927:16:::1;:34:::0;;-1:-1:-1;;43927:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;43845:124::o;43981:136::-;6304:6;;-1:-1:-1;;;;;6304:6:0;575:10;6304:22;6296:67;;;;-1:-1:-1;;;6296:67:0;;;;;;;:::i;:::-;44069:19:::1;:40:::0;;-1:-1:-1;;44069:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;43981:136::o;44366:119::-;6304:6;;-1:-1:-1;;;;;6304:6:0;575:10;6304:22;6296:67;;;;-1:-1:-1;;;6296:67:0;;;;;;;:::i;:::-;44447:14:::1;:30:::0;44366:119::o;43641:77::-;6304:6;;-1:-1:-1;;;;;6304:6:0;575:10;6304:22;6296:67;;;;-1:-1:-1;;;6296:67:0;;;;;;;:::i;:::-;43702:1:::1;:8:::0;43641:77::o;46151:258::-;6304:6;;-1:-1:-1;;;;;6304:6:0;575:10;6304:22;6296:67;;;;-1:-1:-1;;;6296:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;46271:27:0;::::1;46293:4;46271:27;;46263:58;;;::::0;-1:-1:-1;;;46263:58:0;;11217:2:1;46263:58:0::1;::::0;::::1;11199:21:1::0;11256:2;11236:18;;;11229:30;-1:-1:-1;;;11275:18:1;;;11268:48;11333:18;;46263:58:0::1;11015:342:1::0;46263:58:0::1;46340:41;::::0;-1:-1:-1;;;46340:41:0;;-1:-1:-1;;;;;4404:32:1;;;46340:41:0::1;::::0;::::1;4386:51:1::0;4453:18;;;4446:34;;;46340:27:0;::::1;::::0;::::1;::::0;4359:18:1;;46340:41:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;46332:69;;;::::0;-1:-1:-1;;;46332:69:0;;7862:2:1;46332:69:0::1;::::0;::::1;7844:21:1::0;7901:2;7881:18;;;7874:30;-1:-1:-1;;;7920:18:1;;;7913:45;7975:18;;46332:69:0::1;7660:339:1::0;46332:69:0::1;46151:258:::0;;;:::o;26956:198::-;-1:-1:-1;;;;;27046:20:0;;27022:7;27046:20;;;:11;:20;;;;;;;;27042:49;;;-1:-1:-1;;;;;;27075:16:0;;;;;:7;:16;;;;;;;26956:198::o;27042:49::-;-1:-1:-1;;;;;27129:16:0;;;;;;:7;:16;;;;;;27109:37;;:19;:37::i;46417:472::-;6304:6;;-1:-1:-1;;;;;6304:6:0;575:10;6304:22;6296:67;;;;-1:-1:-1;;;6296:67:0;;;;;;;:::i;:::-;46530:19:::1;46520:6;:29;;46512:51;;;::::0;-1:-1:-1;;;46512:51:0;;11924:2:1;46512:51:0::1;::::0;::::1;11906:21:1::0;11963:1;11943:18;;;11936:29;-1:-1:-1;;;11981:18:1;;;11974:39;12030:18;;46512:51:0::1;11722:332:1::0;46512:51:0::1;46607:6;46582:21;:31;;46574:73;;;::::0;-1:-1:-1;;;46574:73:0;;10099:2:1;46574:73:0::1;::::0;::::1;10081:21:1::0;10138:2;10118:18;;;10111:30;10177:31;10157:18;;;10150:59;10226:18;;46574:73:0::1;9897:353:1::0;46574:73:0::1;46739:12;46757:9;-1:-1:-1::0;;;;;46757:14:0::1;46780:6;46757:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46738:54;;;46811:7;46803:78;;;::::0;-1:-1:-1;;;46803:78:0;;9672:2:1;46803:78:0::1;::::0;::::1;9654:21:1::0;9711:2;9691:18;;;9684:30;9750:34;9730:18;;;9723:62;9821:28;9801:18;;;9794:56;9867:19;;46803:78:0::1;9470:422:1::0;44685:159:0;6304:6;;-1:-1:-1;;;;;6304:6:0;575:10;6304:22;6296:67;;;;-1:-1:-1;;;6296:67:0;;;;;;;:::i;:::-;44797:2:::1;44787:7:::0;;44776:18:::1;::::0;:10;:18:::1;:::i;:::-;44775:24;;44767:33;;;::::0;::::1;;44812:11;:24:::0;44685:159::o;18151:8417::-;6304:6;;-1:-1:-1;;;;;6304:6:0;575:10;6304:22;6296:67;;;;-1:-1:-1;;;6296:67:0;;;;;;;:::i;:::-;18207:33:::1;18262:42;18207:98;;18348:14;-1:-1:-1::0;;;;;18348:22:0::1;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18330:64:0::1;;18403:4;18410:14;-1:-1:-1::0;;;;;18410:19:0::1;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18330:102;::::0;-1:-1:-1;;;;;;18330:102:0::1;::::0;;;;;;-1:-1:-1;;;;;4133:15:1;;;18330:102:0::1;::::0;::::1;4115:34:1::0;4185:15;;4165:18;;;4158:43;4050:18;;18330:102:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18316:11;:116:::0;;-1:-1:-1;;;;;;18316:116:0::1;-1:-1:-1::0;;;;;18316:116:0;;::::1;;::::0;;18445:13:::1;:30:::0;;-1:-1:-1;;;;;;18445:30:0::1;::::0;;;::::1;;;::::0;;-1:-1:-1;6242:6:0;;-1:-1:-1;;18488:18:0::1;::::0;-1:-1:-1;6242:6:0;-1:-1:-1;;;;;18488:27:0::1;::::0;;::::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;18488:27:0;;;:34;;;::::1;;-1:-1:-1::0;;18488:34:0;;::::1;;::::0;;18560:4:::1;18533:33:::0;;:18:::1;:33:::0;;;;;:40;;;::::1;18488:34:::0;18533:40;;::::1;::::0;;;18596:9:::1;:62:::0;;;;:69;;;::::1;::::0;::::1;::::0;;18676:17:::1;:75:::0;;;;::::1;::::0;;;;;::::1;::::0;;-1:-1:-1;;;;;;18676:75:0;;::::1;18614:42;18676:75;::::0;;;18764:62;:69;;;::::1;::::0;::::1;::::0;;18844:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;18782:42;18844:75;::::0;;18932:62;:69;;;::::1;::::0;::::1;::::0;;19012:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;18950:42;19012:75:::0;;::::1;::::0;;;19100:69;;;::::1;::::0;::::1;::::0;;;19180:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;19268:62;:69;;;::::1;::::0;::::1;::::0;;19348:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;19286:42;19348:75;::::0;;19436:62;:69;;;::::1;::::0;::::1;::::0;;19516:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;19454:42;19516:75;::::0;;19604:62;:69;;;::::1;::::0;::::1;::::0;;19684:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;19622:42;19684:75;::::0;;19772:62;:69;;;::::1;::::0;::::1;::::0;;19852:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;19790:42;19852:75;::::0;;19940:62;:69;;;::::1;::::0;::::1;::::0;;20020:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;19958:42;20020:75;::::0;;20108:62;:69;;;::::1;::::0;::::1;::::0;;20188:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;20126:42;20188:75;::::0;;20276:62;:69;;;::::1;::::0;::::1;::::0;;20356:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;20294:42;20356:75;::::0;;20444:62;:69;;;::::1;::::0;::::1;::::0;;20524:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;20462:42;20524:75;::::0;;20612:62;:69;;;::::1;::::0;::::1;::::0;;20692:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;20630:42;20692:75;::::0;;20780:62;:69;;;::::1;::::0;::::1;::::0;;20860:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;20798:42;20860:75;::::0;;20948:62;:69;;;::::1;::::0;::::1;::::0;;21028:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;20966:42;21028:75;::::0;;21116:62;:69;;;::::1;::::0;::::1;::::0;;21196:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;21134:42;21196:75;::::0;;21284:62;:69;;;::::1;::::0;::::1;::::0;;21364:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;21302:42;21364:75;::::0;;21452:62;:69;;;::::1;::::0;::::1;::::0;;21532:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;21470:42;21532:75;::::0;;21620:62;:69;;;::::1;::::0;::::1;::::0;;21700:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;21638:42;21700:75;::::0;;21788:62;:69;;;::::1;::::0;::::1;::::0;;21868:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;21806:42;21868:75;::::0;;21956:62;:69;;;::::1;::::0;::::1;::::0;;22036:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;21974:42;22036:75;::::0;;22124:62;:69;;;::::1;::::0;::::1;::::0;;22204:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;22142:42;22204:75;::::0;;22292:62;:69;;;::::1;::::0;::::1;::::0;;22372:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;22310:42;22372:75;::::0;;22460:62;:69;;;::::1;::::0;::::1;::::0;;22540:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;22478:42;22540:75;::::0;;22628:62;:69;;;::::1;::::0;::::1;::::0;;22708:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;22646:42;22708:75;::::0;;22796:62;:69;;;::::1;::::0;::::1;::::0;;22876:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;22814:42;22876:75;::::0;;22964:62;:69;;;::::1;::::0;::::1;::::0;;23044:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;22982:42;23044:75;::::0;;23132:62;:69;;;::::1;::::0;::::1;::::0;;23212:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;23150:42;23212:75;::::0;;23300:62;:69;;;::::1;::::0;::::1;::::0;;23380:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;23318:42;23380:75:::0;;::::1;::::0;;;23468:62;:69;;;::::1;::::0;::::1;::::0;;23548:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;23486:42;23548:75;::::0;;23636:62;:69;;;::::1;::::0;::::1;::::0;;23716:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;23654:42;23716:75;::::0;;23804:62;:69;;;::::1;::::0;::::1;::::0;;23884:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;23822:42;23884:75;::::0;;23972:62;:69;;;::::1;::::0;::::1;::::0;;24052:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;23990:42;24052:75;::::0;;24140:62;:69;;;::::1;::::0;::::1;::::0;;24220:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;24158:42;24220:75;::::0;;24308:69;;;::::1;::::0;::::1;::::0;;;24388:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;24476:62;:69;;;::::1;::::0;::::1;::::0;;24556:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;24494:42;24556:75;::::0;;24644:62;:69;;;::::1;::::0;::::1;::::0;;24724:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;24662:42;24724:75;::::0;;24812:62;:69;;;::::1;::::0;::::1;::::0;;24892:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;24830:42;24892:75;::::0;;24980:62;:69;;;::::1;::::0;::::1;::::0;;25060:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;24998:42;25060:75;::::0;;25148:62;:69;;;::::1;::::0;::::1;::::0;;25228:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;25166:42;25228:75;::::0;;25316:62;:69;;;::::1;::::0;::::1;::::0;;25396:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;25334:42;25396:75;::::0;;25484:62;:69;;;::::1;::::0;::::1;::::0;;25564:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;25502:42;25564:75;::::0;;25652:62;:69;;;::::1;::::0;::::1;::::0;;25732:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;25670:42;25732:75;::::0;;25820:62;:69;;;::::1;::::0;::::1;::::0;;25900:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;25838:42;25900:75;::::0;;25988:62;:69;;;::::1;::::0;::::1;::::0;;26068:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;26006:42;26068:75;::::0;;26156:62;:69;;;::::1;::::0;::::1;::::0;;26236:75;;;;::::1;::::0;;;::::1;::::0;;;::::1;26174:42;26236:75:::0;;::::1;::::0;;;26324:69;;;;::::1;::::0;::::1;::::0;;26404:75;;;;::::1;::::0;;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;::::0;;-1:-1:-1;26492:14:0::1;:68:::0;;;-1:-1:-1;;;;;;26492:68:0;;::::1;;::::0;;18151:8417::o;17786:357::-;6304:6;;-1:-1:-1;;;;;6304:6:0;575:10;6304:22;6296:67;;;;-1:-1:-1;;;6296:67:0;;;;;;;:::i;:::-;17863:13:::1;:28:::0;;;17914:2:::1;17902:11;:14:::0;;;17927:13:::1;:25:::0;-1:-1:-1;17963:7:0::1;:9:::0;17983:21:::1;:28:::0;;-1:-1:-1;;;;17983:28:0::1;-1:-1:-1::0;;;17983:28:0::1;::::0;;18022:11:::1;:18:::0;;-1:-1:-1;;18022:18:0::1;17983:28;18022:18;::::0;;18064:15:::1;18051:10;:28:::0;;;18104:31:::1;::::0;18123:11:::1;18104:31;:::i;:::-;18090:11;:45:::0;-1:-1:-1;17786:357:0:o;44252:102::-;6304:6;;-1:-1:-1;;;;;6304:6:0;575:10;6304:22;6296:67;;;;-1:-1:-1;;;6296:67:0;;;;;;;:::i;:::-;44318:21:::1;:28:::0;;;::::1;;-1:-1:-1::0;;;44318:28:0::1;-1:-1:-1::0;;;;44318:28:0;;::::1;::::0;;;::::1;::::0;;44252:102::o;26667:87::-;26706:13;26739:7;26732:14;;;;;:::i;43522:107::-;6304:6;;-1:-1:-1;;;;;6304:6:0;575:10;6304:22;6296:67;;;;-1:-1:-1;;;6296:67:0;;;;;;;:::i;:::-;43597:11:::1;:24:::0;43522:107::o;28204:269::-;28297:4;28314:129;575:10;28337:7;28346:96;28385:15;28346:96;;;;;;;;;;;;;;;;;575:10;28346:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;28346:34:0;;;;;;;;;;;;:38;:96::i;7079:305::-;7131:14;;-1:-1:-1;;;;;7131:14:0;7149:10;7131:28;7123:76;;;;-1:-1:-1;;;7123:76:0;;15371:2:1;7123:76:0;;;15353:21:1;15410:2;15390:18;;;15383:30;15449:34;15429:18;;;15422:62;-1:-1:-1;;;15500:18:1;;;15493:33;15543:19;;7123:76:0;15169:399:1;7123:76:0;7236:9;;7218:15;:27;7210:72;;;;-1:-1:-1;;;7210:72:0;;14245:2:1;7210:72:0;;;14227:21:1;14284:2;14264:18;;;14257:30;14323:33;14303:18;;;14296:61;14374:18;;7210:72:0;14043:355:1;7210:72:0;7327:14;;;7319:6;;7298:44;;-1:-1:-1;;;;;7327:14:0;;;;7319:6;;;;7298:44;;;7362:14;;;7353:23;;-1:-1:-1;;;;;;7353:23:0;-1:-1:-1;;;;;7362:14:0;;;7353:23;;;;;;7079:305::o;27162:167::-;27240:4;27257:42;575:10;27281:9;27292:6;27257:9;:42::i;6845:226::-;6304:6;;-1:-1:-1;;;;;6304:6:0;575:10;6304:22;6296:67;;;;-1:-1:-1;;;6296:67:0;;;;;;;:::i;:::-;6926:6:::1;::::0;;;6909:23;;-1:-1:-1;;;;;;6909:23:0;;::::1;-1:-1:-1::0;;;;;6926:6:0;::::1;6909:23;::::0;;;6943:19:::1;::::0;;6985:22:::1;7003:4:::0;6985:15:::1;:22;:::i;:::-;6973:9;:34:::0;7060:1:::1;7044:6:::0;;7023:40:::1;::::0;-1:-1:-1;;;;;7044:6:0;;::::1;::::0;7023:40:::1;::::0;7060:1;;7023:40:::1;6845:226:::0;:::o;45050:188::-;6304:6;;-1:-1:-1;;;;;6304:6:0;575:10;6304:22;6296:67;;;;-1:-1:-1;;;6296:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;45125:27:0;::::1;;::::0;;;:18:::1;:27;::::0;;;;;::::1;;45117:67;;;::::0;-1:-1:-1;;;45117:67:0;;10457:2:1;45117:67:0::1;::::0;::::1;10439:21:1::0;10496:2;10476:18;;;10469:30;10535:29;10515:18;;;10508:57;10582:18;;45117:67:0::1;10255:351:1::0;45117:67:0::1;-1:-1:-1::0;;;;;45195:27:0::1;45225:5;45195:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;45195:35:0::1;::::0;;45050:188::o;43089:133::-;6304:6;;-1:-1:-1;;;;;6304:6:0;575:10;6304:22;6296:67;;;;-1:-1:-1;;;6296:67:0;;;;;;;:::i;:::-;43173:14:::1;:41:::0;;-1:-1:-1;;;;;43173:41:0;;::::1;;;-1:-1:-1::0;;;;;;43173:41:0;;::::1;::::0;;;::::1;::::0;;43089:133::o;6397:244::-;6304:6;;-1:-1:-1;;;;;6304:6:0;575:10;6304:22;6296:67;;;;-1:-1:-1;;;6296:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6486:22:0;::::1;6478:73;;;::::0;-1:-1:-1;;;6478:73:0;;7052:2:1;6478:73:0::1;::::0;::::1;7034:21:1::0;7091:2;7071:18;;;7064:30;7130:34;7110:18;;;7103:62;-1:-1:-1;;;7181:18:1;;;7174:36;7227:19;;6478:73:0::1;6850:402:1::0;6478:73:0::1;6588:6;::::0;;6567:38:::1;::::0;-1:-1:-1;;;;;6567:38:0;;::::1;::::0;6588:6;::::1;::::0;6567:38:::1;::::0;::::1;6616:6;:17:::0;;-1:-1:-1;;;;;;6616:17:0::1;-1:-1:-1::0;;;;;6616:17:0;;;::::1;::::0;;;::::1;::::0;;6397:244::o;44129:115::-;6304:6;;-1:-1:-1;;;;;6304:6:0;575:10;6304:22;6296:67;;;;-1:-1:-1;;;6296:67:0;;;;;;;:::i;:::-;44208:13:::1;:28:::0;44129:115::o;29921:337::-;-1:-1:-1;;;;;30014:19:0;;30006:68;;;;-1:-1:-1;;;30006:68:0;;13840:2:1;30006:68:0;;;13822:21:1;13879:2;13859:18;;;13852:30;13918:34;13898:18;;;13891:62;-1:-1:-1;;;13969:18:1;;;13962:34;14013:19;;30006:68:0;13638:400:1;30006:68:0;-1:-1:-1;;;;;30093:21:0;;30085:68;;;;-1:-1:-1;;;30085:68:0;;7459:2:1;30085:68:0;;;7441:21:1;7498:2;7478:18;;;7471:30;7537:34;7517:18;;;7510:62;-1:-1:-1;;;7588:18:1;;;7581:32;7630:19;;30085:68:0;7257:398:1;30085:68:0;-1:-1:-1;;;;;30166:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;30218:32;;16071:25:1;;;30218:32:0;;16044:18:1;30218:32:0;;;;;;;29921:337;;;:::o;30266:3816::-;-1:-1:-1;;;;;30397:20:0;;30389:70;;;;-1:-1:-1;;;30389:70:0;;13434:2:1;30389:70:0;;;13416:21:1;13473:2;13453:18;;;13446:30;13512:34;13492:18;;;13485:62;-1:-1:-1;;;13563:18:1;;;13556:35;13608:19;;30389:70:0;13232:401:1;30389:70:0;-1:-1:-1;;;;;30478:23:0;;30470:71;;;;-1:-1:-1;;;30470:71:0;;6237:2:1;30470:71:0;;;6219:21:1;6276:2;6256:18;;;6249:30;6315:34;6295:18;;;6288:62;-1:-1:-1;;;6366:18:1;;;6359:33;6409:19;;30470:71:0;6035:399:1;30470:71:0;30569:1;30560:6;:10;30552:64;;;;-1:-1:-1;;;30552:64:0;;13024:2:1;30552:64:0;;;13006:21:1;13063:2;13043:18;;;13036:30;13102:34;13082:18;;;13075:62;-1:-1:-1;;;13153:18:1;;;13146:39;13202:19;;30552:64:0;12822:405:1;30552:64:0;-1:-1:-1;;;;;30636:20:0;;;;;;:9;:20;;;;;;;;30635:21;30627:57;;;;-1:-1:-1;;;30627:57:0;;15775:2:1;30627:57:0;;;15757:21:1;15814:2;15794:18;;;15787:30;-1:-1:-1;;;15833:18:1;;;15826:53;15896:18;;30627:57:0;15573:347:1;30627:57:0;30714:10;30704:21;;;;:9;:21;;;;;;;;30703:22;30695:58;;;;-1:-1:-1;;;30695:58:0;;15775:2:1;30695:58:0;;;15757:21:1;15814:2;15794:18;;;15787:30;-1:-1:-1;;;15833:18:1;;;15826:53;15896:18;;30695:58:0;15573:347:1;30695:58:0;6215:7;6242:6;-1:-1:-1;;;;;30771:17:0;;;6242:6;;30771:17;;;;:41;;-1:-1:-1;6215:7:0;6242:6;-1:-1:-1;;;;;30792:20:0;;;6242:6;;30792:20;;30771:41;30768:631;;;30848:11;;;;;;;30843:361;;-1:-1:-1;;;;;30886:23:0;;30904:4;30886:23;;:53;;-1:-1:-1;;;;;;30913:26:0;;30934:4;30913:26;30886:53;:100;;;-1:-1:-1;6215:7:0;6242:6;-1:-1:-1;;;;;30960:26:0;;;6242:6;;30960:26;30886:100;:133;;;-1:-1:-1;6215:7:0;6242:6;-1:-1:-1;;;;;30990:29:0;;;6242:6;;30990:29;30886:133;:179;;;-1:-1:-1;;;;;;43044:27:0;;43020:4;43044:27;;;:18;:27;;;;;;;;31040:25;30886:211;;;-1:-1:-1;;;;;;43044:27:0;;43020:4;43044:27;;;:18;:27;;;;;;;;31069:28;30880:309;;31131:11;;;;;;;31123:46;;;;-1:-1:-1;;;31123:46:0;;8965:2:1;31123:46:0;;;8947:21:1;9004:2;8984:18;;;8977:30;-1:-1:-1;;;9023:18:1;;;9016:52;9085:18;;31123:46:0;8763:346:1;31123:46:0;31223:16;;;;31220:168;;;31273:10;31264:20;;;;:8;:20;;;;;:27;;;;;31260:113;;31339:14;;;;;;;;-1:-1:-1;31339:14:0;;;;;;;;;;31348:4;31339:14;;;;;;31325:10;31316:20;;:8;:20;;;;;;;:37;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;31316:37:0;;;;;;;;;;31260:113;31457:11;;-1:-1:-1;;;;;31447:21:0;;;31457:11;;31447:21;:60;;;;-1:-1:-1;31493:13:0;;-1:-1:-1;;;;;31472:35:0;;;31493:13;;;;;31472:35;;31447:60;:94;;;;-1:-1:-1;;;;;;31512:29:0;;;;;;:18;:29;;;;;;;;31511:30;31447:94;31444:906;;;31570:11;;;;;;;31562:48;;;;-1:-1:-1;;;31562:48:0;;14605:2:1;31562:48:0;;;14587:21:1;14644:2;14624:18;;;14617:30;14683:26;14663:18;;;14656:54;14727:18;;31562:48:0;14403:348:1;31562:48:0;31661:11;;31647:13;:25;31712:16;;;;31709:378;;;31770:15;31756:11;;:29;31753:315;;;31832:13;;31822:6;:23;;31814:32;;;;;;-1:-1:-1;;;;;31881:19:0;;;;;;:8;:19;;;;;:23;31907:15;-1:-1:-1;31873:88:0;;;;-1:-1:-1;;;31873:88:0;;8206:2:1;31873:88:0;;;8188:21:1;8245:2;8225:18;;;8218:30;8284:34;8264:18;;;8257:62;-1:-1:-1;;;8335:18:1;;;8328:32;8377:19;;31873:88:0;8004:398:1;31873:88:0;32014:30;:15;32033:10;32014:30;:::i;:::-;-1:-1:-1;;;;;31988:19:0;;;;;;:8;:19;;;;;:56;31753:315;32108:16;;;;32105:234;;;-1:-1:-1;;;;;32157:19:0;;;;;;:8;:19;;;;;:24;;;32184:15;-1:-1:-1;32149:90:0;;;;-1:-1:-1;;;32149:90:0;;10813:2:1;32149:90:0;;;10795:21:1;10852:2;10832:18;;;10825:30;10891:34;10871:18;;;10864:62;-1:-1:-1;;;10942:18:1;;;10935:33;10985:19;;32149:90:0;10611:399:1;32149:90:0;32289:30;:15;32308:10;32289:30;:::i;:::-;-1:-1:-1;;;;;32262:19:0;;;;;;:8;:19;;;;;:24;;:57;32105:234;32383:16;;-1:-1:-1;;;32383:16:0;;;;32382:17;:42;;;;-1:-1:-1;32403:21:0;;-1:-1:-1;;;32403:21:0;;;;32382:42;:70;;;;-1:-1:-1;32441:11:0;;-1:-1:-1;;;;;32428:24:0;;;32441:11;;32428:24;32382:70;32378:1375;;;32517:19;;;;32514:229;;;32561:16;32580:26;32591:14;;32580:6;:10;;:26;;;;:::i;:::-;32663:11;;32561:45;;-1:-1:-1;32640:48:0;;32653:34;;32680:6;;32653:22;;-1:-1:-1;;;;;32663:11:0;32653:9;:22::i;:::-;:26;;:34::i;:::-;32640:8;;:12;:48::i;:::-;32629:59;;32711:16;32718:8;32711:6;:16::i;:::-;32538:205;32514:229;32792:13;;32771:18;32911:24;32929:4;32911:9;:24::i;:::-;32880:55;-1:-1:-1;32954:24:0;;32951:96;;32999:32;33010:20;32999:10;:32::i;:::-;33228:14;;33116:21;;-1:-1:-1;;;33228:14:0;;;;:39;;;;;33256:11;;33246:6;:21;;33228:39;33224:415;;;33306:11;33320:2;33306:16;;33381:21;33405:89;33491:2;33405:81;33421:64;33429:55;33472:11;;33430:36;33464:1;;33431:27;33446:11;;33431:10;:14;;:27;;;;:::i;:::-;33430:33;;:36::i;:::-;33429:42;;:55::i;:::-;33421:3;;:7;:64::i;:::-;33405:11;;;:15;:81::i;:89::-;33381:113;;33578:13;33567:7;:24;33563:60;;33595:28;33609:13;33595;:28::i;:::-;33269:370;;33224:415;-1:-1:-1;;33715:13:0;:26;32378:1375;-1:-1:-1;;;;;33884:26:0;;33765:12;33884:26;;;:18;:26;;;;;;33780:4;;33884:26;;;:59;;-1:-1:-1;;;;;;33914:29:0;;;;;;:18;:29;;;;;;;;33884:59;33881:105;;;-1:-1:-1;33969:5:0;33881:105;34026:48;34041:6;34049:9;34059:6;34066:7;34026:14;:48::i;:::-;30378:3704;30266:3816;;;:::o;1886:192::-;1972:7;2008:12;2000:6;;;;1992:29;;;;-1:-1:-1;;;1992:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2032:9:0;2044:5;2048:1;2044;:5;:::i;:::-;2032:17;1886:192;-1:-1:-1;;;;;1886:192:0:o;41148:163::-;41189:7;41210:15;41227;41246:19;:17;:19::i;:::-;41209:56;;-1:-1:-1;41209:56:0;-1:-1:-1;41283:20:0;41209:56;;41283:11;:20::i;:::-;41276:27;;;;41148:163;:::o;2346:132::-;2404:7;2431:39;2435:1;2438;2431:39;;;;;;;;;;;;;;;;;:3;:39::i;1553:181::-;1611:7;;1643:5;1647:1;1643;:5;:::i;:::-;1631:17;;1672:1;1667;:6;;1659:46;;;;-1:-1:-1;;;1659:46:0;;8609:2:1;1659:46:0;;;8591:21:1;8648:2;8628:18;;;8621:30;8687:29;8667:18;;;8660:57;8734:18;;1659:46:0;8407:351:1;39946:419:0;40005:7;40014;40023;40032;40041;40050;40071:23;40096:12;40110:18;40132:20;40144:7;40132:11;:20::i;:::-;40070:82;;;;;;40164:15;40181:23;40206:12;40222:50;40234:7;40243:4;40249:10;40261;:8;:10::i;:::-;40222:11;:50::i;:::-;40163:109;;;;-1:-1:-1;40163:109:0;;-1:-1:-1;40323:15:0;;-1:-1:-1;40340:4:0;;-1:-1:-1;40346:10:0;;-1:-1:-1;39946:419:0;;-1:-1:-1;;;;;39946:419:0:o;1742:136::-;1800:7;1827:43;1831:1;1834;1827:43;;;;;;;;;;;;;;;;;:3;:43::i;2086:250::-;2144:7;2168:6;2164:47;;-1:-1:-1;2198:1:0;2191:8;;2164:47;2223:9;2235:5;2239:1;2235;:5;:::i;:::-;2223:17;-1:-1:-1;2268:1:0;2259:5;2263:1;2223:17;2259:5;:::i;:::-;:10;2251:56;;;;-1:-1:-1;;;2251:56:0;;12261:2:1;2251:56:0;;;12243:21:1;12300:2;12280:18;;;12273:30;12339:34;12319:18;;;12312:62;-1:-1:-1;;;12390:18:1;;;12383:31;12431:19;;2251:56:0;12059:397:1;34602:428:0;34677:11;;34702:23;;;34699:201;;;-1:-1:-1;34755:11:0;;34699:201;;;34799:2;34787:9;:14;34784:116;;;-1:-1:-1;34831:2:0;34784:116;;;-1:-1:-1;34879:9:0;34784:116;34913:17;:10;34928:1;34913:14;:17::i;:::-;:22;34910:66;;34952:12;;;;:::i;:::-;;;;34910:66;34996:13;:26;-1:-1:-1;34602:428:0:o;34090:346::-;17568:16;:23;;-1:-1:-1;;;;17568:23:0;-1:-1:-1;;;17568:23:0;;;34198:21:::1;34230:38;34247:20:::0;34230:16:::1;:38::i;:::-;34279:26;34308:41;:21;34334:14:::0;34308:25:::1;:41::i;:::-;34384:14;::::0;34279:70;;-1:-1:-1;34363:63:0::1;::::0;34384:14:::1;::::0;::::1;-1:-1:-1::0;;;;;34384:14:0::1;34400:25;34279:70:::0;34423:1:::1;34400:22;:25::i;:::-;34363:20;:63::i;:::-;-1:-1:-1::0;;17614:16:0;:24;;-1:-1:-1;;;;17614:24:0;;;-1:-1:-1;34090:346:0:o;34446:144::-;17568:16;:23;;-1:-1:-1;;;;17568:23:0;-1:-1:-1;;;17568:23:0;;;34520:10;;34516:67:::1;;34547:24;34564:6;34547:16;:24::i;:::-;-1:-1:-1::0;17614:16:0;:24;;-1:-1:-1;;;;17614:24:0;;;34446:144::o;36789:688::-;36900:7;36896:40;;36922:14;:12;:14::i;:::-;-1:-1:-1;;;;;36953:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;36977:22:0;;;;;;:11;:22;;;;;;;;36976:23;36953:46;36949:467;;;37016:48;37038:6;37046:9;37057:6;37016:21;:48::i;:::-;36949:467;;;-1:-1:-1;;;;;37087:19:0;;;;;;:11;:19;;;;;;;;37086:20;:46;;;;-1:-1:-1;;;;;;37110:22:0;;;;;;:11;:22;;;;;;;;37086:46;37082:334;;;37149:46;37169:6;37177:9;37188:6;37149:19;:46::i;37082:334::-;-1:-1:-1;;;;;37217:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;37240:22:0;;;;;;:11;:22;;;;;;;;37217:45;37213:203;;;37279:48;37301:6;37309:9;37320:6;37279:21;:48::i;37213:203::-;37360:44;37378:6;37386:9;37397:6;37360:17;:44::i;:::-;37432:7;37428:41;;37454:15;42877;;42867:7;:25;42919:21;;42903:13;:37;42823:125;41319:555;41416:7;;41452;;41369;;;;;41470:289;41494:9;:16;41490:20;;41470:289;;;41560:7;41536;:21;41544:9;41554:1;41544:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;41544:12:0;41536:21;;;;;;;;;;;;;:31;;:66;;;41595:7;41571;:21;41579:9;41589:1;41579:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;41579:12:0;41571:21;;;;;;;;;;;;;:31;41536:66;41532:97;;;41612:7;;41621;;41604:25;;;;;;;41319:555;;:::o;41532:97::-;41654:34;41666:7;:21;41674:9;41684:1;41674:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;41674:12:0;41666:21;;;;;;;;;;;;;41654:7;;:11;:34::i;:::-;41644:44;;41713:34;41725:7;:21;41733:9;41743:1;41733:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;41733:12:0;41725:21;;;;;;;;;;;;;41713:7;;:11;:34::i;:::-;41703:44;-1:-1:-1;41512:3:0;;;;:::i;:::-;;;;41470:289;;;-1:-1:-1;41795:7:0;;41783;;:20;;:11;:20::i;:::-;41773:7;:30;41769:61;;;41813:7;;41822;;41805:25;;;;;;41319:555;;:::o;41769:61::-;41849:7;;41858;;-1:-1:-1;41319:555:0;-1:-1:-1;41319:555:0:o;2486:278::-;2572:7;2607:12;2600:5;2592:28;;;;-1:-1:-1;;;2592:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2631:9:0;2643:5;2647:1;2643;:5;:::i;40373:330::-;40433:7;40442;40451;40471:12;40486:24;40502:7;40486:15;:24::i;:::-;40471:39;;40521:18;40542:30;40564:7;40542:21;:30::i;:::-;40521:51;-1:-1:-1;40583:23:0;40609:33;40521:51;40609:17;:7;40621:4;40609:11;:17::i;:::-;:21;;:33::i;:::-;40583:59;40678:4;;-1:-1:-1;40684:10:0;;-1:-1:-1;40373:330:0;;-1:-1:-1;;;40373:330:0:o;40711:429::-;40826:7;;;;40882:24;:7;40894:11;40882;:24::i;:::-;40864:42;-1:-1:-1;40917:12:0;40932:21;:4;40941:11;40932:8;:21::i;:::-;40917:36;-1:-1:-1;40964:18:0;40985:27;:10;41000:11;40985:14;:27::i;:::-;40964:48;-1:-1:-1;41023:23:0;41049:33;40964:48;41049:17;:7;41061:4;41049:11;:17::i;:33::-;41101:7;;;;-1:-1:-1;41127:4:0;;-1:-1:-1;40711:429:0;;-1:-1:-1;;;;;;;40711:429:0:o;2772:130::-;2830:7;2857:37;2861:1;2864;2857:37;;;;;;;;;;;;;;;;;:3;:37::i;35038:651::-;35187:16;;;35201:1;35187:16;;;;;;;;35163:21;;35187:16;;;;;;;;;;-1:-1:-1;35187:16:0;35163:40;;35232:4;35214;35219:1;35214:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;35214:23:0;;;-1:-1:-1;;;;;35214:23:0;;;;;35258:13;;;;;;;;;-1:-1:-1;;;;;35258:13:0;-1:-1:-1;;;;;35258:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35248:4;35253:1;35248:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;35248:30:0;;;:7;;;;;;;;;:30;35323:13;;35291:60;;35308:4;;35323:13;;;;35339:11;35291:8;:60::i;:::-;35390:13;;:238;;-1:-1:-1;;;35390:238:0;;:13;;;;-1:-1:-1;;;;;35390:13:0;;:64;;:238;;35469:11;;35495:1;;35539:4;;35566;;35602:15;;35390:238;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35646:35;35663:11;35676:4;35646:35;;;;;;;:::i;:::-;;;;;;;;35093:596;35038:651;:::o;43388:126::-;43480:26;;-1:-1:-1;;;;;43480:18:0;;;:26;;;;;43499:6;;43480:26;;;;43499:6;43480:18;:26;;;;;;;;;;;;;;;;;;;35697:567;35841:16;;;35855:1;35841:16;;;;;;;;35817:21;;35841:16;;;;;;;;;;-1:-1:-1;35841:16:0;35817:40;;35878:13;;;;;;;;;-1:-1:-1;;;;;35878:13:0;-1:-1:-1;;;;;35878:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35868:4;35873:1;35868:7;;;;;;;;:::i;:::-;;;;;;:30;-1:-1:-1;;;;;35868:30:0;;;-1:-1:-1;;;;;35868:30:0;;;;;35927:4;35909;35914:1;35909:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;35909:23:0;;;:7;;;;;;;;;:23;35971:13;;;;;;:64;36043:6;36065:1;36112:4;36131:11;36173:24;:15;36193:3;36173:19;:24::i;:::-;35971:237;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36226:30;36243:6;36251:4;36226:30;;;;;;;:::i;42581:234::-;42627:7;;:12;:34;;;;-1:-1:-1;42643:13:0;;:18;42627:34;42624:46;;;42581:234::o;42624:46::-;42700:7;;;42682:15;:25;42742:13;;;42718:21;:37;-1:-1:-1;42768:11:0;;;;42790:17;42581:234::o;38578:563::-;38681:15;38698:23;38723:12;38737:23;38762:12;38776:18;38798:19;38809:7;38798:10;:19::i;:::-;-1:-1:-1;;;;;38846:15:0;;;;;;:7;:15;;;;;;38680:137;;-1:-1:-1;38680:137:0;;-1:-1:-1;38680:137:0;;-1:-1:-1;38680:137:0;-1:-1:-1;38680:137:0;-1:-1:-1;38680:137:0;-1:-1:-1;38846:28:0;;38866:7;38846:19;:28::i;:::-;-1:-1:-1;;;;;38828:15:0;;;;;;:7;:15;;;;;;;;:46;;;;38903:7;:15;;;;:28;;38923:7;38903:19;:28::i;:::-;-1:-1:-1;;;;;38885:15:0;;;;;;;:7;:15;;;;;;:46;;;;38963:18;;;;;;;:39;;38986:15;38963:22;:39::i;:::-;-1:-1:-1;;;;;38942:18:0;;;;;;:7;:18;;;;;:60;39013:26;39028:10;39013:14;:26::i;:::-;39050:23;39062:4;39068;39050:11;:23::i;:::-;39106:9;-1:-1:-1;;;;;39089:44:0;39098:6;-1:-1:-1;;;;;39089:44:0;;39117:15;39089:44;;;;16071:25:1;;16059:2;16044:18;;15925:177;39089:44:0;;;;;;;;38669:472;;;;;;38578:563;;;:::o;37995:575::-;38096:15;38113:23;38138:12;38152:23;38177:12;38191:18;38213:19;38224:7;38213:10;:19::i;:::-;-1:-1:-1;;;;;38261:15:0;;;;;;:7;:15;;;;;;38095:137;;-1:-1:-1;38095:137:0;;-1:-1:-1;38095:137:0;;-1:-1:-1;38095:137:0;-1:-1:-1;38095:137:0;-1:-1:-1;38095:137:0;-1:-1:-1;38261:28:0;;38095:137;38261:19;:28::i;:::-;-1:-1:-1;;;;;38243:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;38321:18;;;;;:7;:18;;;;;:39;;38344:15;38321:22;:39::i;:::-;-1:-1:-1;;;;;38300:18:0;;;;;;:7;:18;;;;;;;;:60;;;;38392:7;:18;;;;:39;;38415:15;38392:22;:39::i;39149:634::-;39252:15;39269:23;39294:12;39308:23;39333:12;39347:18;39369:19;39380:7;39369:10;:19::i;:::-;-1:-1:-1;;;;;39417:15:0;;;;;;:7;:15;;;;;;39251:137;;-1:-1:-1;39251:137:0;;-1:-1:-1;39251:137:0;;-1:-1:-1;39251:137:0;-1:-1:-1;39251:137:0;-1:-1:-1;39251:137:0;-1:-1:-1;39417:28:0;;39437:7;39417:19;:28::i;:::-;-1:-1:-1;;;;;39399:15:0;;;;;;:7;:15;;;;;;;;:46;;;;39474:7;:15;;;;:28;;39494:7;39474:19;:28::i;37485:502::-;37584:15;37601:23;37626:12;37640:23;37665:12;37679:18;37701:19;37712:7;37701:10;:19::i;:::-;-1:-1:-1;;;;;37749:15:0;;;;;;:7;:15;;;;;;37583:137;;-1:-1:-1;37583:137:0;;-1:-1:-1;37583:137:0;;-1:-1:-1;37583:137:0;-1:-1:-1;37583:137:0;-1:-1:-1;37583:137:0;-1:-1:-1;37749:28:0;;37583:137;37749:19;:28::i;42245:154::-;42309:7;42336:55;42375:5;42336:20;42348:7;;42336;:11;;:20;;;;:::i;42407:166::-;42477:7;42504:61;42549:5;42504:26;42516:13;;42504:7;:11;;:26;;;;:::i;2910:166::-;2996:7;3032:12;3024:6;3016:29;;;;-1:-1:-1;;;3016:29:0;;;;;;;;:::i;:::-;-1:-1:-1;3063:5:0;3067:1;3063;:5;:::i;:::-;3056:12;2910:166;-1:-1:-1;;;;2910:166:0:o;41882:355::-;41945:19;41968:10;:8;:10::i;:::-;41945:33;-1:-1:-1;41989:18:0;42010:27;:10;41945:33;42010:14;:27::i;:::-;42089:4;42073:22;;;;:7;:22;;;;;;41989:48;;-1:-1:-1;42073:38:0;;41989:48;42073:26;:38::i;:::-;42064:4;42048:22;;;;:7;:22;;;;;;;;:63;;;;42125:11;:26;;;;;;42122:107;;;42207:4;42191:22;;;;:7;:22;;;;;;:38;;42218:10;42191:26;:38::i;:::-;42182:4;42166:22;;;;:7;:22;;;;;:63;41934:303;;41882:355;:::o;39791:147::-;39869:7;;:17;;39881:4;39869:11;:17::i;:::-;39859:7;:27;39910:10;;:20;;39925:4;39910:14;:20::i;:::-;39897:10;:33;-1:-1:-1;;39791:147:0:o;14:247:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;181:9;168:23;200:31;225:5;200:31;:::i;266:251::-;336:6;389:2;377:9;368:7;364:23;360:32;357:52;;;405:1;402;395:12;357:52;437:9;431:16;456:31;481:5;456:31;:::i;522:323::-;598:6;606;659:2;647:9;638:7;634:23;630:32;627:52;;;675:1;672;665:12;627:52;714:9;701:23;733:31;758:5;733:31;:::i;:::-;783:5;835:2;820:18;;;;807:32;;-1:-1:-1;;;522:323:1:o;850:388::-;918:6;926;979:2;967:9;958:7;954:23;950:32;947:52;;;995:1;992;985:12;947:52;1034:9;1021:23;1053:31;1078:5;1053:31;:::i;:::-;1103:5;-1:-1:-1;1160:2:1;1145:18;;1132:32;1173:33;1132:32;1173:33;:::i;:::-;1225:7;1215:17;;;850:388;;;;;:::o;1243:456::-;1320:6;1328;1336;1389:2;1377:9;1368:7;1364:23;1360:32;1357:52;;;1405:1;1402;1395:12;1357:52;1444:9;1431:23;1463:31;1488:5;1463:31;:::i;:::-;1513:5;-1:-1:-1;1570:2:1;1555:18;;1542:32;1583:33;1542:32;1583:33;:::i;:::-;1243:456;;1635:7;;-1:-1:-1;;;1689:2:1;1674:18;;;;1661:32;;1243:456::o;2024:241::-;2080:6;2133:2;2121:9;2112:7;2108:23;2104:32;2101:52;;;2149:1;2146;2139:12;2101:52;2188:9;2175:23;2207:28;2229:5;2207:28;:::i;2270:245::-;2337:6;2390:2;2378:9;2369:7;2365:23;2361:32;2358:52;;;2406:1;2403;2396:12;2358:52;2438:9;2432:16;2457:28;2479:5;2457:28;:::i;2520:180::-;2579:6;2632:2;2620:9;2611:7;2607:23;2603:32;2600:52;;;2648:1;2645;2638:12;2600:52;-1:-1:-1;2671:23:1;;2520:180;-1:-1:-1;2520:180:1:o;2705:309::-;2770:6;2778;2831:2;2819:9;2810:7;2806:23;2802:32;2799:52;;;2847:1;2844;2837:12;2799:52;2883:9;2870:23;2860:33;;2943:2;2932:9;2928:18;2915:32;2956:28;2978:5;2956:28;:::i;3019:461::-;3072:3;3110:5;3104:12;3137:6;3132:3;3125:19;3163:4;3192:2;3187:3;3183:12;3176:19;;3229:2;3222:5;3218:14;3250:1;3260:195;3274:6;3271:1;3268:13;3260:195;;;3339:13;;-1:-1:-1;;;;;3335:39:1;3323:52;;3395:12;;;;3430:15;;;;3371:1;3289:9;3260:195;;;-1:-1:-1;3471:3:1;;3019:461;-1:-1:-1;;;;;3019:461:1:o;4918:510::-;5189:6;5178:9;5171:25;5232:3;5227:2;5216:9;5212:18;5205:31;5152:4;5253:57;5305:3;5294:9;5290:19;5282:6;5253:57;:::i;:::-;-1:-1:-1;;;;;5346:32:1;;;;5341:2;5326:18;;5319:60;-1:-1:-1;5410:2:1;5395:18;5388:34;5245:65;4918:510;-1:-1:-1;;4918:510:1:o;5433:597::-;5545:4;5574:2;5603;5592:9;5585:21;5635:6;5629:13;5678:6;5673:2;5662:9;5658:18;5651:34;5703:1;5713:140;5727:6;5724:1;5721:13;5713:140;;;5822:14;;;5818:23;;5812:30;5788:17;;;5807:2;5784:26;5777:66;5742:10;;5713:140;;;5871:6;5868:1;5865:13;5862:91;;;5941:1;5936:2;5927:6;5916:9;5912:22;5908:31;5901:42;5862:91;-1:-1:-1;6014:2:1;5993:15;-1:-1:-1;;5989:29:1;5974:45;;;;6021:2;5970:54;;5433:597;-1:-1:-1;;;5433:597:1:o;12461:356::-;12663:2;12645:21;;;12682:18;;;12675:30;12741:34;12736:2;12721:18;;12714:62;12808:2;12793:18;;12461:356::o;16107:332::-;16314:6;16303:9;16296:25;16357:2;16352;16341:9;16337:18;16330:30;16277:4;16377:56;16429:2;16418:9;16414:18;16406:6;16377:56;:::i;16444:582::-;16743:6;16732:9;16725:25;16786:6;16781:2;16770:9;16766:18;16759:34;16829:3;16824:2;16813:9;16809:18;16802:31;16706:4;16850:57;16902:3;16891:9;16887:19;16879:6;16850:57;:::i;:::-;-1:-1:-1;;;;;16943:32:1;;;;16938:2;16923:18;;16916:60;-1:-1:-1;17007:3:1;16992:19;16985:35;16842:65;16444:582;-1:-1:-1;;;16444:582:1:o;17220:128::-;17260:3;17291:1;17287:6;17284:1;17281:13;17278:39;;;17297:18;;:::i;:::-;-1:-1:-1;17333:9:1;;17220:128::o;17353:120::-;17393:1;17419;17409:35;;17424:18;;:::i;:::-;-1:-1:-1;17458:9:1;;17353:120::o;17478:168::-;17518:7;17584:1;17580;17576:6;17572:14;17569:1;17566:21;17561:1;17554:9;17547:17;17543:45;17540:71;;;17591:18;;:::i;:::-;-1:-1:-1;17631:9:1;;17478:168::o;17651:125::-;17691:4;17719:1;17716;17713:8;17710:34;;;17724:18;;:::i;:::-;-1:-1:-1;17761:9:1;;17651:125::o;17781:380::-;17860:1;17856:12;;;;17903;;;17924:61;;17978:4;17970:6;17966:17;17956:27;;17924:61;18031:2;18023:6;18020:14;18000:18;17997:38;17994:161;;;18077:10;18072:3;18068:20;18065:1;18058:31;18112:4;18109:1;18102:15;18140:4;18137:1;18130:15;17994:161;;17781:380;;;:::o;18166:135::-;18205:3;-1:-1:-1;;18226:17:1;;18223:43;;;18246:18;;:::i;:::-;-1:-1:-1;18293:1:1;18282:13;;18166:135::o;18306:112::-;18338:1;18364;18354:35;;18369:18;;:::i;:::-;-1:-1:-1;18403:9:1;;18306:112::o;18423:127::-;18484:10;18479:3;18475:20;18472:1;18465:31;18515:4;18512:1;18505:15;18539:4;18536:1;18529:15;18555:127;18616:10;18611:3;18607:20;18604:1;18597:31;18647:4;18644:1;18637:15;18671:4;18668:1;18661:15;18687:127;18748:10;18743:3;18739:20;18736:1;18729:31;18779:4;18776:1;18769:15;18803:4;18800:1;18793:15;18819:127;18880:10;18875:3;18871:20;18868:1;18861:31;18911:4;18908:1;18901:15;18935:4;18932:1;18925:15;19083:131;-1:-1:-1;;;;;19158:31:1;;19148:42;;19138:70;;19204:1;19201;19194:12;19138:70;19083:131;:::o;19219:118::-;19305:5;19298:13;19291:21;19284:5;19281:32;19271:60;;19327:1;19324;19317:12

Swarm Source

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