ETH Price: $3,472.41 (-0.26%)
Gas: 3 Gwei

Token

Deci Floki (DeciFloki)
 

Overview

Max Total Supply

999,999,999,999,999,999 DeciFloki

Holders

40

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 0 Decimals)

Balance
6,083,637,001,059,539 DeciFloki

Value
$0.00
0x81e87ce7d7a32bba25e992ff7a0df5b83eeb68d5
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:
DeciFloki

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/**
 *Launching with love. The king of meme tokens. The king of dog tokens. 
*/

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

abstract contract Context {
    function _msgSender() internal view virtual returns (address payable) {
        return 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;
    }
}


/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}



/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
 
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

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

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be 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;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    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);
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    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");
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain`call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    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");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    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");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    uint256 private _lockTime;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () internal {
        address msgSender = _msgSender();
        _owner = _msgSender();
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

     /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current 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 geUnlockTime() public view returns (uint256) {
        return _lockTime;
    }

    //Locks the contract for owner for the amount of time provided
    function lock(uint256 time) public virtual onlyOwner {
        _previousOwner = _owner;
        _owner = address(0);
        _lockTime = now + time;
        emit OwnershipTransferred(_owner, address(0));
    }
    
    //Unlocks the contract for owner when _lockTime is exceeds
    function unlock() public virtual {
        require(_previousOwner == msg.sender, "You don't have permission to unlock");
        require(now > _lockTime , "Contract is locked until 7 days");
        emit OwnershipTransferred(_owner, _previousOwner);
        _owner = _previousOwner;
    }
}

// pragma solidity >=0.5.0;

interface IPancakeFactory {
    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 IPancakePair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

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

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

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

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

    event Mint(address indexed sender, uint amount0, uint amount1);
    event 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 mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

// pragma solidity >=0.6.2;

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

    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;

    mapping (address => bool) private _isExcluded;
    address[] private _excluded;
   
    uint256 private constant MAX = ~uint256(0);
    uint256 private _tTotal = 0.999999999999999999 * 10**18;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;

    string private _name = "Deci Floki";
    string private _symbol = "DeciFloki";
    uint8 private _decimals = 18;
    
    uint256 public _taxFee = 1;
    uint256 private _previousTaxFee = _taxFee;
    
    uint256 public _liquidityFee = 5; 
    uint256 private _previousLiquidityFee = _liquidityFee;
    
    address [] public tokenHolder;
    uint256 public numberOfTokenHolders = 0;
    mapping(address => bool) public exist;

    //No limit
    uint256 public _maxTxAmount = 9* (10**16);
    address payable wallet;
    address payable rewardsWallet;
    IPancakeRouter02 public immutable pancakeRouter;
    IPancakeRouter02 _pancakeRouter = IPancakeRouter02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address public immutable pancakePair;
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = false;
    uint256 private minTokensBeforeSwap = 8;
    
    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
         _;
        inSwapAndLiquify = false;
    }
    
    constructor () public {
        _rOwned[_msgSender()] = _rTotal;
        wallet = 0x9FA0742822d9322A3cEEaD6CD60a8089C83ac9C6; //Marketing And Dev Expense Wallet
        rewardsWallet= 0x9FA0742822d9322A3cEEaD6CD60a8089C83ac9C6;  //Marketing And Dev Expense Wallet
    
         // Create a pancake pair for this new token
        pancakePair = IPancakeFactory(_pancakeRouter.factory())
            .createPair(address(this), _pancakeRouter.WETH());

        // set the rest of the contract variables
        pancakeRouter = _pancakeRouter;
        
        //exclude owner and this contract from fee
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    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 marketingWalletChange(address payable _MarketingWallet) public onlyOwner(){
       
            wallet = _MarketingWallet;
    }
     function changeTradingRouter(IPancakeRouter02 changedRouter) public onlyOwner(){
         _pancakeRouter=IPancakeRouter02(changedRouter);
     }
    function transferToDistribute() external onlyOwner{
        wallet.transfer(address(this).balance);
        
    }
    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 excludeFromReward(address account) public onlyOwner() {
        // require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not exclude pancake router.');
        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 excluded");
        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;
            }
        }
    }
    
    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0));
        require(spender != address(0));

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

    bool public limit = true;
    function changeLimit() public onlyOwner(){
        require(limit == true, 'limit is already false');
            limit = false;
    }
    
 

    
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        if(limit ==  true && from != owner() && to != owner()){
            if(to != pancakePair){
                require(((balanceOf(to).add(amount)) <= 500 ether));
            }
            require(amount <= 10000000 ether, 'Transfer amount must be less than 100 tokens');
            }
        if(from != owner() && to != owner())
            require(amount <= _maxTxAmount);

        // is the token balance of this contract address over the min number of
        // tokens that we need to initiate a swap + liquidity lock?
        // also, don't get caught in a circular liquidity event.
        // also, don't swap & liquify if sender is pancake pair.
        if(!exist[to]){
            tokenHolder.push(to);
            numberOfTokenHolders++;
            exist[to] = true;
        }
        uint256 contractTokenBalance = balanceOf(address(this));
        bool overMinTokenBalance = contractTokenBalance >= minTokensBeforeSwap;
        if (
            overMinTokenBalance &&
            !inSwapAndLiquify &&
            from != pancakePair &&
            swapAndLiquifyEnabled
        ) {
            //add liquidity
            swapAndLiquify(contractTokenBalance);
        }
        
        //indicates if fee should be deducted from transfer
        bool takeFee = true;
        
        //if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFee[from] || _isExcludedFromFee[to]){
            takeFee = false;
        }
        
        //transfer amount, it will take tax, burn, liquidity fee
        _tokenTransfer(from,to,amount,takeFee);
    }
    mapping(address => uint256) public myRewards;
    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        // split the contract balance into halves
        uint256 forLiquidity = contractTokenBalance.div(2);
        uint256 devExp = contractTokenBalance.div(4);
        uint256 forRewards = contractTokenBalance.div(4);
        // split the liquidity
        uint256 half = forLiquidity.div(2);
        uint256 otherHalf = forLiquidity.sub(half);
        // capture the contract's current ETH balance.
        // this is so that we can capture exactly the amount of ETH that the
        // swap creates, and not make the liquidity event include any ETH that
        // has been manually sent to the contract
        uint256 initialBalance = address(this).balance;

        // swap tokens for ETH
        swapTokensForEth(half.add(devExp).add(forRewards)); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered

        // how much ETH did we just swap into?
        uint256 Balance = address(this).balance.sub(initialBalance);
        uint256 oneThird = Balance.div(3);
        wallet.transfer(oneThird);
        rewardsWallet.transfer(oneThird);
       // for(uint256 i = 0; i < numberOfTokenHolders; i++){
         //   uint256 share = (balanceOf(tokenHolder[i]).mul(ethFees)).div(totalSupply());
           // myRewards[tokenHolder[i]] = myRewards[tokenHolder[i]].add(share);
        //}
        // add liquidity to pancake
        addLiquidity(otherHalf, oneThird);
        
        emit SwapAndLiquify(half, oneThird, otherHalf);
    }
       

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

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

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

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

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

    //this method is responsible for taking all fee, if takeFee is true
    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]) {
            _transferStandard(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 excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }
    
    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }
    
    function setTaxFeePercent(uint256 taxFee) external onlyOwner() {
         require(taxFee <= 10, "Maximum fee limit is 10 percent");
        _taxFee = taxFee;
    }
    
    function setLiquidityFeePercent(uint256 liquidityFee) external onlyOwner() {
        require(liquidityFee <= 10, "Maximum fee limit is 10 percent");
        _liquidityFee = liquidityFee;
    }
   
    function setMaxTxPercent(uint256 maxTxPercent) external onlyOwner() {
         require(maxTxPercent >= 1, "Minimum Transaction can be set is 1 percent");
        _maxTxAmount = _tTotal.mul(maxTxPercent).div(
            10**2
        );
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }
    
     //to recieve ETH from pancakeRouter when swaping
    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":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_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":"changeLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IPancakeRouter02","name":"changedRouter","type":"address"}],"name":"changeTradingRouter","outputs":[],"stateMutability":"nonpayable","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":"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":[{"internalType":"address","name":"","type":"address"}],"name":"exist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"geUnlockTime","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":[{"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":[],"name":"limit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_MarketingWallet","type":"address"}],"name":"marketingWalletChange","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"myRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numberOfTokenHolders","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pancakePair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pancakeRouter","outputs":[{"internalType":"contract IPancakeRouter02","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":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"}],"name":"setLiquidityFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setTaxFeePercent","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":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenHolder","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferToDistribute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052670de0b6b3a763ffff600955600954600019816200001e57fe5b0660001903600a556040518060400160405280600a81526020017f4465636920466c6f6b6900000000000000000000000000000000000000000000815250600c9080519060200190620000739291906200076c565b506040518060400160405280600981526020017f44656369466c6f6b690000000000000000000000000000000000000000000000815250600d9080519060200190620000c19291906200076c565b506012600e60006101000a81548160ff021916908360ff1602179055506001600f55600f546010556005601155601154601255600060145567013fbe85edc90000601655737a250d5630b4cf539739df2c5dacb4c659f2488d601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601960156101000a81548160ff0219169083151502179055506008601a556001601b60006101000a81548160ff021916908315150217905550348015620001a257600080fd5b506000620001b56200073b60201b60201c565b9050620001c76200073b60201b60201c565b6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600a5460036000620002796200073b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550739fa0742822d9322a3ceead6cd60a8089c83ac9c6601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550739fa0742822d9322a3ceead6cd60a8089c83ac9c6601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620003ca57600080fd5b505afa158015620003df573d6000803e3d6000fd5b505050506040513d6020811015620003f657600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200048c57600080fd5b505afa158015620004a1573d6000803e3d6000fd5b505050506040513d6020811015620004b857600080fd5b81019080805190602001909291905050506040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1580156200053357600080fd5b505af115801562000548573d6000803e3d6000fd5b505050506040513d60208110156200055f57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b81525050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b81525050600160066000620006156200074360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620006ce6200073b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009546040518082815260200191505060405180910390a362000812565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620007af57805160ff1916838001178555620007e0565b82800160010185558215620007e0579182015b82811115620007df578251825591602001919060010190620007c2565b5b509050620007ef9190620007f3565b5090565b5b808211156200080e576000816000905550600101620007f4565b5090565b60805160601c60a05160601c615a646200085f600039806129c852806137cc5280613a975250806129ec52806148d852806149c452806149eb5280614af65280614b1d5250615a646000f3fe6080604052600436106102815760003560e01c806370a082311161014f578063a9059cbb116100c1578063d543dbeb1161007a578063d543dbeb14610e50578063dd46706414610e8b578063dd62ed3e14610ec6578063e3ecded014610f4b578063ea2f0b3714610f62578063f2fde38b14610fb357610288565b8063a9059cbb14610ca4578063b6c5232414610d15578063b8c9d25c14610d40578063c21ebd0714610d81578063c49b9a8014610dc2578063c6c278b614610dff57610288565b80638da5cb5b116101135780638da5cb5b14610ae35780638ee88c5314610b2457806395d89b4114610b5f578063a457c2d714610bef578063a4d66daf14610c60578063a69df4b514610c8d57610288565b806370a0823114610970578063715018a6146109d55780637d1db4a5146109ec578063862a4bf214610a1757806388f8202014610a7c57610288565b80633685d419116101f35780634a74bb02116101ac5780634a74bb02146107a85780634dfefc4b146107d557806351b8dc7b1461083c57806352390c021461088d5780635342acb4146108de5780636bc87c3a1461094557610288565b80633685d419146105d457806339509351146106255780633b124fe7146106965780633bd5d173146106c1578063437823ec146106fc5780634549b0391461074d57610288565b806318160ddd1161024557806318160ddd1461041f57806320b9588c1461044a57806323b872dd146104af5780632cde6081146105405780632d83811914610557578063313ce567146105a657610288565b8063061c82d01461028d57806306fdde03146102c8578063095ea7b31461035857806313114a9d146103c9578063178ef307146103f457610288565b3661028857005b600080fd5b34801561029957600080fd5b506102c6600480360360208110156102b057600080fd5b8101908080359060200190929190505050611004565b005b3480156102d457600080fd5b506102dd61114d565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561031d578082015181840152602081019050610302565b50505050905090810190601f16801561034a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561036457600080fd5b506103b16004803603604081101561037b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506111ef565b60405180821515815260200191505060405180910390f35b3480156103d557600080fd5b506103de61120d565b6040518082815260200191505060405180910390f35b34801561040057600080fd5b50610409611217565b6040518082815260200191505060405180910390f35b34801561042b57600080fd5b5061043461121d565b6040518082815260200191505060405180910390f35b34801561045657600080fd5b506104996004803603602081101561046d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611227565b6040518082815260200191505060405180910390f35b3480156104bb57600080fd5b50610528600480360360608110156104d257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061123f565b60405180821515815260200191505060405180910390f35b34801561054c57600080fd5b50610555611318565b005b34801561056357600080fd5b506105906004803603602081101561057a57600080fd5b8101908080359060200190929190505050611486565b6040518082815260200191505060405180910390f35b3480156105b257600080fd5b506105bb61150a565b604051808260ff16815260200191505060405180910390f35b3480156105e057600080fd5b50610623600480360360208110156105f757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611521565b005b34801561063157600080fd5b5061067e6004803603604081101561064857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506118ab565b60405180821515815260200191505060405180910390f35b3480156106a257600080fd5b506106ab61195e565b6040518082815260200191505060405180910390f35b3480156106cd57600080fd5b506106fa600480360360208110156106e457600080fd5b8101908080359060200190929190505050611964565b005b34801561070857600080fd5b5061074b6004803603602081101561071f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611af5565b005b34801561075957600080fd5b506107926004803603604081101561077057600080fd5b8101908080359060200190929190803515159060200190929190505050611c18565b6040518082815260200191505060405180910390f35b3480156107b457600080fd5b506107bd611ccf565b60405180821515815260200191505060405180910390f35b3480156107e157600080fd5b50610824600480360360208110156107f857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ce2565b60405180821515815260200191505060405180910390f35b34801561084857600080fd5b5061088b6004803603602081101561085f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d02565b005b34801561089957600080fd5b506108dc600480360360208110156108b057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e0e565b005b3480156108ea57600080fd5b5061092d6004803603602081101561090157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612128565b60405180821515815260200191505060405180910390f35b34801561095157600080fd5b5061095a61217e565b6040518082815260200191505060405180910390f35b34801561097c57600080fd5b506109bf6004803603602081101561099357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612184565b6040518082815260200191505060405180910390f35b3480156109e157600080fd5b506109ea61226f565b005b3480156109f857600080fd5b50610a016123f5565b6040518082815260200191505060405180910390f35b348015610a2357600080fd5b50610a5060048036036020811015610a3a57600080fd5b81019080803590602001909291905050506123fb565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a8857600080fd5b50610acb60048036036020811015610a9f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612437565b60405180821515815260200191505060405180910390f35b348015610aef57600080fd5b50610af861248d565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b3057600080fd5b50610b5d60048036036020811015610b4757600080fd5b81019080803590602001909291905050506124b6565b005b348015610b6b57600080fd5b50610b746125ff565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610bb4578082015181840152602081019050610b99565b50505050905090810190601f168015610be15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610bfb57600080fd5b50610c4860048036036040811015610c1257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506126a1565b60405180821515815260200191505060405180910390f35b348015610c6c57600080fd5b50610c7561276e565b60405180821515815260200191505060405180910390f35b348015610c9957600080fd5b50610ca2612781565b005b348015610cb057600080fd5b50610cfd60048036036040811015610cc757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061299e565b60405180821515815260200191505060405180910390f35b348015610d2157600080fd5b50610d2a6129bc565b6040518082815260200191505060405180910390f35b348015610d4c57600080fd5b50610d556129c6565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610d8d57600080fd5b50610d966129ea565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610dce57600080fd5b50610dfd60048036036020811015610de557600080fd5b81019080803515159060200190929190505050612a0e565b005b348015610e0b57600080fd5b50610e4e60048036036020811015610e2257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b2c565b005b348015610e5c57600080fd5b50610e8960048036036020811015610e7357600080fd5b8101908080359060200190929190505050612c38565b005b348015610e9757600080fd5b50610ec460048036036020811015610eae57600080fd5b8101908080359060200190929190505050612d8b565b005b348015610ed257600080fd5b50610f3560048036036040811015610ee957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612f7c565b6040518082815260200191505060405180910390f35b348015610f5757600080fd5b50610f60613003565b005b348015610f6e57600080fd5b50610fb160048036036020811015610f8557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613136565b005b348015610fbf57600080fd5b5061100260048036036020811015610fd657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613259565b005b61100c613464565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600a811115611143576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4d6178696d756d20666565206c696d69742069732031302070657263656e740081525060200191505060405180910390fd5b80600f8190555050565b6060600c8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111e55780601f106111ba576101008083540402835291602001916111e5565b820191906000526020600020905b8154815290600101906020018083116111c857829003601f168201915b5050505050905090565b60006112036111fc613464565b848461346c565b6001905092915050565b6000600b54905090565b60145481565b6000600954905090565b601c6020528060005260406000206000915090505481565b600061124c8484846135cb565b61130d84611258613464565b6113088560405180606001604052806028815260200161594560289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006112be613464565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bd29092919063ffffffff16565b61346c565b600190509392505050565b611320613464565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60011515601b60009054906101000a900460ff16151514611469576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6c696d697420697320616c72656164792066616c73650000000000000000000081525060200191505060405180910390fd5b6000601b60006101000a81548160ff021916908315150217905550565b6000600a548211156114e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806158a9602a913960400191505060405180910390fd5b60006114ed613c92565b90506115028184613cbd90919063ffffffff16565b915050919050565b6000600e60009054906101000a900460ff16905090565b611529613464565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166116a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b60005b6008805490508110156118a7578173ffffffffffffffffffffffffffffffffffffffff16600882815481106116dc57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561189a5760086001600880549050038154811061173857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008828154811061177057fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600880548061186057fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556118a7565b80806001019150506116ab565b5050565b60006119546118b8613464565b8461194f85600560006118c9613464565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d0790919063ffffffff16565b61346c565b6001905092915050565b600f5481565b600061196e613464565b9050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611a13576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806159bb602c913960400191505060405180910390fd5b6000611a1e83613d8f565b50505050509050611a7781600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613deb90919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611acf81600a54613deb90919063ffffffff16565b600a81905550611aea83600b54613d0790919063ffffffff16565b600b81905550505050565b611afd613464565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bbd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600954831115611c92576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b81611cb2576000611ca284613d8f565b5050505050905080915050611cc9565b6000611cbd84613d8f565b50505050915050809150505b92915050565b601960159054906101000a900460ff1681565b60156020528060005260406000206000915054906101000a900460ff1681565b611d0a613464565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611e16613464565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ed6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611f96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561206a57612026600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611486565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60115481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561221f57600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905061226a565b612267600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611486565b90505b919050565b612277613464565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612337576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b6013818154811061240857fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6124be613464565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461257e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600a8111156125f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4d6178696d756d20666565206c696d69742069732031302070657263656e740081525060200191505060405180910390fd5b8060118190555050565b6060600d8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156126975780601f1061266c57610100808354040283529160200191612697565b820191906000526020600020905b81548152906001019060200180831161267a57829003601f168201915b5050505050905090565b60006127646126ae613464565b8461275f85604051806060016040528060258152602001615a0a60259139600560006126d8613464565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bd29092919063ffffffff16565b61346c565b6001905092915050565b601b60009054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612827576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806159e76023913960400191505060405180910390fd5b600254421161289e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f6e7472616374206973206c6f636b656420756e74696c203720646179730081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006129b26129ab613464565b84846135cb565b6001905092915050565b6000600254905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b612a16613464565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ad6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601960156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405180821515815260200191505060405180910390a150565b612b34613464565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bf4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612c40613464565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001811015612d5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001806158f9602b913960400191505060405180910390fd5b612d826064612d7483600954613e3590919063ffffffff16565b613cbd90919063ffffffff16565b60168190555050565b612d93613464565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612e53576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550804201600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61300b613464565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146130cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015613133573d6000803e3d6000fd5b50565b61313e613464565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146131fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b613261613464565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613321576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156133a7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806158d36026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156134a657600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156134e057600080fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613651576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806159966025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156136d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061585a6023913960400191505060405180910390fd5b60008111613730576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602981526020018061596d6029913960400191505060405180910390fd5b60011515601b60009054906101000a900460ff161515148015613786575061375661248d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156137c5575061379561248d565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156138b3577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461384e57681b1ae4d6e2ef5000006138428261383485612184565b613d0790919063ffffffff16565b111561384d57600080fd5b5b6a084595161401484a0000008111156138b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061587d602c913960400191505060405180910390fd5b5b6138bb61248d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561392957506138f961248d565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561393e5760165481111561393d57600080fd5b5b601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613a5d576013829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506014600081548092919060010191905055506001601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b6000613a6830612184565b90506000601a548210159050808015613a8e5750601960149054906101000a900460ff16155b8015613ae657507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015613afe5750601960159054906101000a900460ff165b15613b0d57613b0c82613ebb565b5b600060019050600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613bb45750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613bbe57600090505b613bca868686846140f7565b505050505050565b6000838311158290613c7f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613c44578082015181840152602081019050613c29565b50505050905090810190601f168015613c715780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000806000613c9f614408565b91509150613cb68183613cbd90919063ffffffff16565b9250505090565b6000613cff83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614699565b905092915050565b600080828401905083811015613d85576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000806000806000806000806000613da68a61475f565b9250925092506000806000613dc48d8686613dbf613c92565b6147b9565b9250925092508282828888889b509b509b509b509b509b5050505050505091939550919395565b6000613e2d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613bd2565b905092915050565b600080831415613e485760009050613eb5565b6000828402905082848281613e5957fe5b0414613eb0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806159246021913960400191505060405180910390fd5b809150505b92915050565b6001601960146101000a81548160ff0219169083151502179055506000613eec600283613cbd90919063ffffffff16565b90506000613f04600484613cbd90919063ffffffff16565b90506000613f1c600485613cbd90919063ffffffff16565b90506000613f34600285613cbd90919063ffffffff16565b90506000613f4b8286613deb90919063ffffffff16565b90506000479050613f7f613f7a85613f6c8887613d0790919063ffffffff16565b613d0790919063ffffffff16565b614842565b6000613f948247613deb90919063ffffffff16565b90506000613fac600383613cbd90919063ffffffff16565b9050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015614016573d6000803e3d6000fd5b50601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561407f573d6000803e3d6000fd5b5061408a8482614af0565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56185828660405180848152602001838152602001828152602001935050505060405180910390a150505050505050506000601960146101000a81548160ff02191690831515021790555050565b8061410557614104614c41565b5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156141a85750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156141bd576141b8848484614c84565b6143f4565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156142605750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561427557614270848484614ee4565b6143f3565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156143195750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561432e57614329848484615144565b6143f2565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156143d05750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156143e5576143e084848461530f565b6143f1565b6143f0848484615144565b5b5b5b5b8061440257614401615604565b5b50505050565b6000806000600a5490506000600954905060005b60088054905081101561465c5782600360006008848154811061443b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061452257508160046000600884815481106144ba57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561453957600a5460095494509450505050614695565b6145c2600360006008848154811061454d57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613deb90919063ffffffff16565b925061464d60046000600884815481106145d857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613deb90919063ffffffff16565b9150808060010191505061441c565b50614674600954600a54613cbd90919063ffffffff16565b82101561468c57600a54600954935093505050614695565b81819350935050505b9091565b60008083118290614745576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561470a5780820151818401526020810190506146ef565b50505050905090810190601f1680156147375780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161475157fe5b049050809150509392505050565b60008060008061476e85615618565b9050600061477b86615649565b905060006147a482614796858a613deb90919063ffffffff16565b613deb90919063ffffffff16565b90508083839550955095505050509193909250565b6000806000806147d28589613e3590919063ffffffff16565b905060006147e98689613e3590919063ffffffff16565b905060006148008789613e3590919063ffffffff16565b905060006148298261481b8587613deb90919063ffffffff16565b613deb90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6060600267ffffffffffffffff8111801561485c57600080fd5b5060405190808252806020026020018201604052801561488b5781602001602082028036833780820191505090505b509050308160008151811061489c57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561493c57600080fd5b505afa158015614950573d6000803e3d6000fd5b505050506040513d602081101561496657600080fd5b81019080805190602001909291905050508160018151811061498457fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506149e9307f00000000000000000000000000000000000000000000000000000000000000008461346c565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015614aab578082015181840152602081019050614a90565b505050509050019650505050505050600060405180830381600087803b158015614ad457600080fd5b505af1158015614ae8573d6000803e3d6000fd5b505050505050565b614b1b307f00000000000000000000000000000000000000000000000000000000000000008461346c565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080614b6561248d565b426040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506060604051808303818588803b158015614bea57600080fd5b505af1158015614bfe573d6000803e3d6000fd5b50505050506040513d6060811015614c1557600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050505050505050565b6000600f54148015614c5557506000601154145b15614c5f57614c82565b600f546010819055506011546012819055506000600f8190555060006011819055505b565b600080600080600080614c9687613d8f565b955095509550955095509550614cf487600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613deb90919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614d8986600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613deb90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614e1e85600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d0790919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614e6a8161567a565b614e74848361581f565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080614ef687613d8f565b955095509550955095509550614f5486600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613deb90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614fe983600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d0790919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061507e85600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d0790919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506150ca8161567a565b6150d4848361581f565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b60008060008060008061515687613d8f565b9550955095509550955095506151b486600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613deb90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061524985600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d0790919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506152958161567a565b61529f848361581f565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b60008060008060008061532187613d8f565b95509550955095509550955061537f87600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613deb90919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061541486600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613deb90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506154a983600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d0790919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061553e85600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d0790919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061558a8161567a565b615594848361581f565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b601054600f81905550601254601181905550565b60006156426064615634600f5485613e3590919063ffffffff16565b613cbd90919063ffffffff16565b9050919050565b6000615673606461566560115485613e3590919063ffffffff16565b613cbd90919063ffffffff16565b9050919050565b6000615684613c92565b9050600061569b8284613e3590919063ffffffff16565b90506156ef81600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d0790919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561581a576157d683600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d0790919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b61583482600a54613deb90919063ffffffff16565b600a8190555061584f81600b54613d0790919063ffffffff16565b600b81905550505056fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573735472616e7366657220616d6f756e74206d757374206265206c657373207468616e2031303020746f6b656e73416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734d696e696d756d205472616e73616374696f6e2063616e2062652073657420697320312070657263656e74536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f20616464726573734578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6f636b45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220bb6ed4d0fc6e177592b6ab9f4574462345b7d5c00ab0eb8e820a487cae35eb2a64736f6c634300060c0033

Deployed Bytecode

0x6080604052600436106102815760003560e01c806370a082311161014f578063a9059cbb116100c1578063d543dbeb1161007a578063d543dbeb14610e50578063dd46706414610e8b578063dd62ed3e14610ec6578063e3ecded014610f4b578063ea2f0b3714610f62578063f2fde38b14610fb357610288565b8063a9059cbb14610ca4578063b6c5232414610d15578063b8c9d25c14610d40578063c21ebd0714610d81578063c49b9a8014610dc2578063c6c278b614610dff57610288565b80638da5cb5b116101135780638da5cb5b14610ae35780638ee88c5314610b2457806395d89b4114610b5f578063a457c2d714610bef578063a4d66daf14610c60578063a69df4b514610c8d57610288565b806370a0823114610970578063715018a6146109d55780637d1db4a5146109ec578063862a4bf214610a1757806388f8202014610a7c57610288565b80633685d419116101f35780634a74bb02116101ac5780634a74bb02146107a85780634dfefc4b146107d557806351b8dc7b1461083c57806352390c021461088d5780635342acb4146108de5780636bc87c3a1461094557610288565b80633685d419146105d457806339509351146106255780633b124fe7146106965780633bd5d173146106c1578063437823ec146106fc5780634549b0391461074d57610288565b806318160ddd1161024557806318160ddd1461041f57806320b9588c1461044a57806323b872dd146104af5780632cde6081146105405780632d83811914610557578063313ce567146105a657610288565b8063061c82d01461028d57806306fdde03146102c8578063095ea7b31461035857806313114a9d146103c9578063178ef307146103f457610288565b3661028857005b600080fd5b34801561029957600080fd5b506102c6600480360360208110156102b057600080fd5b8101908080359060200190929190505050611004565b005b3480156102d457600080fd5b506102dd61114d565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561031d578082015181840152602081019050610302565b50505050905090810190601f16801561034a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561036457600080fd5b506103b16004803603604081101561037b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506111ef565b60405180821515815260200191505060405180910390f35b3480156103d557600080fd5b506103de61120d565b6040518082815260200191505060405180910390f35b34801561040057600080fd5b50610409611217565b6040518082815260200191505060405180910390f35b34801561042b57600080fd5b5061043461121d565b6040518082815260200191505060405180910390f35b34801561045657600080fd5b506104996004803603602081101561046d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611227565b6040518082815260200191505060405180910390f35b3480156104bb57600080fd5b50610528600480360360608110156104d257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061123f565b60405180821515815260200191505060405180910390f35b34801561054c57600080fd5b50610555611318565b005b34801561056357600080fd5b506105906004803603602081101561057a57600080fd5b8101908080359060200190929190505050611486565b6040518082815260200191505060405180910390f35b3480156105b257600080fd5b506105bb61150a565b604051808260ff16815260200191505060405180910390f35b3480156105e057600080fd5b50610623600480360360208110156105f757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611521565b005b34801561063157600080fd5b5061067e6004803603604081101561064857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506118ab565b60405180821515815260200191505060405180910390f35b3480156106a257600080fd5b506106ab61195e565b6040518082815260200191505060405180910390f35b3480156106cd57600080fd5b506106fa600480360360208110156106e457600080fd5b8101908080359060200190929190505050611964565b005b34801561070857600080fd5b5061074b6004803603602081101561071f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611af5565b005b34801561075957600080fd5b506107926004803603604081101561077057600080fd5b8101908080359060200190929190803515159060200190929190505050611c18565b6040518082815260200191505060405180910390f35b3480156107b457600080fd5b506107bd611ccf565b60405180821515815260200191505060405180910390f35b3480156107e157600080fd5b50610824600480360360208110156107f857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ce2565b60405180821515815260200191505060405180910390f35b34801561084857600080fd5b5061088b6004803603602081101561085f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d02565b005b34801561089957600080fd5b506108dc600480360360208110156108b057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e0e565b005b3480156108ea57600080fd5b5061092d6004803603602081101561090157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612128565b60405180821515815260200191505060405180910390f35b34801561095157600080fd5b5061095a61217e565b6040518082815260200191505060405180910390f35b34801561097c57600080fd5b506109bf6004803603602081101561099357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612184565b6040518082815260200191505060405180910390f35b3480156109e157600080fd5b506109ea61226f565b005b3480156109f857600080fd5b50610a016123f5565b6040518082815260200191505060405180910390f35b348015610a2357600080fd5b50610a5060048036036020811015610a3a57600080fd5b81019080803590602001909291905050506123fb565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610a8857600080fd5b50610acb60048036036020811015610a9f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612437565b60405180821515815260200191505060405180910390f35b348015610aef57600080fd5b50610af861248d565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b3057600080fd5b50610b5d60048036036020811015610b4757600080fd5b81019080803590602001909291905050506124b6565b005b348015610b6b57600080fd5b50610b746125ff565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610bb4578082015181840152602081019050610b99565b50505050905090810190601f168015610be15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610bfb57600080fd5b50610c4860048036036040811015610c1257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506126a1565b60405180821515815260200191505060405180910390f35b348015610c6c57600080fd5b50610c7561276e565b60405180821515815260200191505060405180910390f35b348015610c9957600080fd5b50610ca2612781565b005b348015610cb057600080fd5b50610cfd60048036036040811015610cc757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061299e565b60405180821515815260200191505060405180910390f35b348015610d2157600080fd5b50610d2a6129bc565b6040518082815260200191505060405180910390f35b348015610d4c57600080fd5b50610d556129c6565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610d8d57600080fd5b50610d966129ea565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610dce57600080fd5b50610dfd60048036036020811015610de557600080fd5b81019080803515159060200190929190505050612a0e565b005b348015610e0b57600080fd5b50610e4e60048036036020811015610e2257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b2c565b005b348015610e5c57600080fd5b50610e8960048036036020811015610e7357600080fd5b8101908080359060200190929190505050612c38565b005b348015610e9757600080fd5b50610ec460048036036020811015610eae57600080fd5b8101908080359060200190929190505050612d8b565b005b348015610ed257600080fd5b50610f3560048036036040811015610ee957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612f7c565b6040518082815260200191505060405180910390f35b348015610f5757600080fd5b50610f60613003565b005b348015610f6e57600080fd5b50610fb160048036036020811015610f8557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613136565b005b348015610fbf57600080fd5b5061100260048036036020811015610fd657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613259565b005b61100c613464565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600a811115611143576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4d6178696d756d20666565206c696d69742069732031302070657263656e740081525060200191505060405180910390fd5b80600f8190555050565b6060600c8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111e55780601f106111ba576101008083540402835291602001916111e5565b820191906000526020600020905b8154815290600101906020018083116111c857829003601f168201915b5050505050905090565b60006112036111fc613464565b848461346c565b6001905092915050565b6000600b54905090565b60145481565b6000600954905090565b601c6020528060005260406000206000915090505481565b600061124c8484846135cb565b61130d84611258613464565b6113088560405180606001604052806028815260200161594560289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006112be613464565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bd29092919063ffffffff16565b61346c565b600190509392505050565b611320613464565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60011515601b60009054906101000a900460ff16151514611469576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f6c696d697420697320616c72656164792066616c73650000000000000000000081525060200191505060405180910390fd5b6000601b60006101000a81548160ff021916908315150217905550565b6000600a548211156114e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806158a9602a913960400191505060405180910390fd5b60006114ed613c92565b90506115028184613cbd90919063ffffffff16565b915050919050565b6000600e60009054906101000a900460ff16905090565b611529613464565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166116a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b60005b6008805490508110156118a7578173ffffffffffffffffffffffffffffffffffffffff16600882815481106116dc57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561189a5760086001600880549050038154811061173857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008828154811061177057fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600880548061186057fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556118a7565b80806001019150506116ab565b5050565b60006119546118b8613464565b8461194f85600560006118c9613464565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d0790919063ffffffff16565b61346c565b6001905092915050565b600f5481565b600061196e613464565b9050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611a13576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806159bb602c913960400191505060405180910390fd5b6000611a1e83613d8f565b50505050509050611a7781600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613deb90919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611acf81600a54613deb90919063ffffffff16565b600a81905550611aea83600b54613d0790919063ffffffff16565b600b81905550505050565b611afd613464565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bbd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600954831115611c92576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b81611cb2576000611ca284613d8f565b5050505050905080915050611cc9565b6000611cbd84613d8f565b50505050915050809150505b92915050565b601960159054906101000a900460ff1681565b60156020528060005260406000206000915054906101000a900460ff1681565b611d0a613464565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611e16613464565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ed6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611f96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561206a57612026600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611486565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60115481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561221f57600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905061226a565b612267600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611486565b90505b919050565b612277613464565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612337576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b6013818154811061240857fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6124be613464565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461257e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600a8111156125f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4d6178696d756d20666565206c696d69742069732031302070657263656e740081525060200191505060405180910390fd5b8060118190555050565b6060600d8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156126975780601f1061266c57610100808354040283529160200191612697565b820191906000526020600020905b81548152906001019060200180831161267a57829003601f168201915b5050505050905090565b60006127646126ae613464565b8461275f85604051806060016040528060258152602001615a0a60259139600560006126d8613464565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bd29092919063ffffffff16565b61346c565b6001905092915050565b601b60009054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612827576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806159e76023913960400191505060405180910390fd5b600254421161289e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f6e7472616374206973206c6f636b656420756e74696c203720646179730081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006129b26129ab613464565b84846135cb565b6001905092915050565b6000600254905090565b7f000000000000000000000000f63c8ec3ffd34cd2fedbad9a9d47cb2a0081ad3281565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b612a16613464565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ad6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601960156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405180821515815260200191505060405180910390a150565b612b34613464565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bf4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612c40613464565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001811015612d5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001806158f9602b913960400191505060405180910390fd5b612d826064612d7483600954613e3590919063ffffffff16565b613cbd90919063ffffffff16565b60168190555050565b612d93613464565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612e53576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550804201600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61300b613464565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146130cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015613133573d6000803e3d6000fd5b50565b61313e613464565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146131fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b613261613464565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613321576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156133a7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806158d36026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156134a657600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156134e057600080fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613651576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806159966025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156136d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061585a6023913960400191505060405180910390fd5b60008111613730576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602981526020018061596d6029913960400191505060405180910390fd5b60011515601b60009054906101000a900460ff161515148015613786575061375661248d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156137c5575061379561248d565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156138b3577f000000000000000000000000f63c8ec3ffd34cd2fedbad9a9d47cb2a0081ad3273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461384e57681b1ae4d6e2ef5000006138428261383485612184565b613d0790919063ffffffff16565b111561384d57600080fd5b5b6a084595161401484a0000008111156138b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061587d602c913960400191505060405180910390fd5b5b6138bb61248d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561392957506138f961248d565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561393e5760165481111561393d57600080fd5b5b601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613a5d576013829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506014600081548092919060010191905055506001601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b6000613a6830612184565b90506000601a548210159050808015613a8e5750601960149054906101000a900460ff16155b8015613ae657507f000000000000000000000000f63c8ec3ffd34cd2fedbad9a9d47cb2a0081ad3273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015613afe5750601960159054906101000a900460ff165b15613b0d57613b0c82613ebb565b5b600060019050600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613bb45750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613bbe57600090505b613bca868686846140f7565b505050505050565b6000838311158290613c7f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613c44578082015181840152602081019050613c29565b50505050905090810190601f168015613c715780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000806000613c9f614408565b91509150613cb68183613cbd90919063ffffffff16565b9250505090565b6000613cff83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614699565b905092915050565b600080828401905083811015613d85576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000806000806000806000806000613da68a61475f565b9250925092506000806000613dc48d8686613dbf613c92565b6147b9565b9250925092508282828888889b509b509b509b509b509b5050505050505091939550919395565b6000613e2d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613bd2565b905092915050565b600080831415613e485760009050613eb5565b6000828402905082848281613e5957fe5b0414613eb0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806159246021913960400191505060405180910390fd5b809150505b92915050565b6001601960146101000a81548160ff0219169083151502179055506000613eec600283613cbd90919063ffffffff16565b90506000613f04600484613cbd90919063ffffffff16565b90506000613f1c600485613cbd90919063ffffffff16565b90506000613f34600285613cbd90919063ffffffff16565b90506000613f4b8286613deb90919063ffffffff16565b90506000479050613f7f613f7a85613f6c8887613d0790919063ffffffff16565b613d0790919063ffffffff16565b614842565b6000613f948247613deb90919063ffffffff16565b90506000613fac600383613cbd90919063ffffffff16565b9050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015614016573d6000803e3d6000fd5b50601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561407f573d6000803e3d6000fd5b5061408a8482614af0565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56185828660405180848152602001838152602001828152602001935050505060405180910390a150505050505050506000601960146101000a81548160ff02191690831515021790555050565b8061410557614104614c41565b5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156141a85750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156141bd576141b8848484614c84565b6143f4565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156142605750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561427557614270848484614ee4565b6143f3565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156143195750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561432e57614329848484615144565b6143f2565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156143d05750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156143e5576143e084848461530f565b6143f1565b6143f0848484615144565b5b5b5b5b8061440257614401615604565b5b50505050565b6000806000600a5490506000600954905060005b60088054905081101561465c5782600360006008848154811061443b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061452257508160046000600884815481106144ba57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561453957600a5460095494509450505050614695565b6145c2600360006008848154811061454d57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484613deb90919063ffffffff16565b925061464d60046000600884815481106145d857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483613deb90919063ffffffff16565b9150808060010191505061441c565b50614674600954600a54613cbd90919063ffffffff16565b82101561468c57600a54600954935093505050614695565b81819350935050505b9091565b60008083118290614745576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561470a5780820151818401526020810190506146ef565b50505050905090810190601f1680156147375780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161475157fe5b049050809150509392505050565b60008060008061476e85615618565b9050600061477b86615649565b905060006147a482614796858a613deb90919063ffffffff16565b613deb90919063ffffffff16565b90508083839550955095505050509193909250565b6000806000806147d28589613e3590919063ffffffff16565b905060006147e98689613e3590919063ffffffff16565b905060006148008789613e3590919063ffffffff16565b905060006148298261481b8587613deb90919063ffffffff16565b613deb90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6060600267ffffffffffffffff8111801561485c57600080fd5b5060405190808252806020026020018201604052801561488b5781602001602082028036833780820191505090505b509050308160008151811061489c57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561493c57600080fd5b505afa158015614950573d6000803e3d6000fd5b505050506040513d602081101561496657600080fd5b81019080805190602001909291905050508160018151811061498457fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506149e9307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461346c565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015614aab578082015181840152602081019050614a90565b505050509050019650505050505050600060405180830381600087803b158015614ad457600080fd5b505af1158015614ae8573d6000803e3d6000fd5b505050505050565b614b1b307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461346c565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080614b6561248d565b426040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506060604051808303818588803b158015614bea57600080fd5b505af1158015614bfe573d6000803e3d6000fd5b50505050506040513d6060811015614c1557600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050505050505050565b6000600f54148015614c5557506000601154145b15614c5f57614c82565b600f546010819055506011546012819055506000600f8190555060006011819055505b565b600080600080600080614c9687613d8f565b955095509550955095509550614cf487600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613deb90919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614d8986600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613deb90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614e1e85600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d0790919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614e6a8161567a565b614e74848361581f565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080614ef687613d8f565b955095509550955095509550614f5486600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613deb90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614fe983600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d0790919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061507e85600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d0790919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506150ca8161567a565b6150d4848361581f565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b60008060008060008061515687613d8f565b9550955095509550955095506151b486600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613deb90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061524985600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d0790919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506152958161567a565b61529f848361581f565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b60008060008060008061532187613d8f565b95509550955095509550955061537f87600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613deb90919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061541486600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613deb90919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506154a983600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d0790919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061553e85600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d0790919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061558a8161567a565b615594848361581f565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b601054600f81905550601254601181905550565b60006156426064615634600f5485613e3590919063ffffffff16565b613cbd90919063ffffffff16565b9050919050565b6000615673606461566560115485613e3590919063ffffffff16565b613cbd90919063ffffffff16565b9050919050565b6000615684613c92565b9050600061569b8284613e3590919063ffffffff16565b90506156ef81600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d0790919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561581a576157d683600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d0790919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b61583482600a54613deb90919063ffffffff16565b600a8190555061584f81600b54613d0790919063ffffffff16565b600b81905550505056fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573735472616e7366657220616d6f756e74206d757374206265206c657373207468616e2031303020746f6b656e73416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734d696e696d756d205472616e73616374696f6e2063616e2062652073657420697320312070657263656e74536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f20616464726573734578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6f636b45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220bb6ed4d0fc6e177592b6ab9f4574462345b7d5c00ab0eb8e820a487cae35eb2a64736f6c634300060c0033

Deployed Bytecode Sourcemap

25829:20260:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45180:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;28566:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29478:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;30599:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;26837:39;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;28843:95;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;35603:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;29647:313;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;33454:136;;;;;;;;;;;;;:::i;:::-;;31949:253;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;28752:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;32665:479;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;29968:218;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;26608:26;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;30694:377;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;44935:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;31505:436;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;27290:41;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;26883:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;31083:140;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;32210:447;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;44800:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;26695:32;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;28946:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16436:148;;;;;;;;;;;;;:::i;:::-;;26945:41;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;26801:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;30471:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15793:79;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;45358:195;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;28657:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30194:269;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;33423:24;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17446:293;;;;;;;;;;;;;:::i;:::-;;29152:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16991:89;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;27213:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;27058:47;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;45819:171;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;31230:146;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;45564:247;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17156:214;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;29327:143;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;31382:117;;;;;;;;;;;;;:::i;:::-;;45058:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16739:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;45180:166;16015:12;:10;:12::i;:::-;16005:22;;:6;;;;;;;;;;:22;;;15997:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45273:2:::1;45263:6;:12;;45255:56;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;45332:6;45322:7;:16;;;;45180:166:::0;:::o;28566:83::-;28603:13;28636:5;28629:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28566:83;:::o;29478:161::-;29553:4;29570:39;29579:12;:10;:12::i;:::-;29593:7;29602:6;29570:8;:39::i;:::-;29627:4;29620:11;;29478:161;;;;:::o;30599:87::-;30641:7;30668:10;;30661:17;;30599:87;:::o;26837:39::-;;;;:::o;28843:95::-;28896:7;28923;;28916:14;;28843:95;:::o;35603:44::-;;;;;;;;;;;;;;;;;:::o;29647:313::-;29745:4;29762:36;29772:6;29780:9;29791:6;29762:9;:36::i;:::-;29809:121;29818:6;29826:12;:10;:12::i;:::-;29840:89;29878:6;29840:89;;;;;;;;;;;;;;;;;:11;:19;29852:6;29840:19;;;;;;;;;;;;;;;:33;29860:12;:10;:12::i;:::-;29840:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;29809:8;:121::i;:::-;29948:4;29941:11;;29647:313;;;;;:::o;33454:136::-;16015:12;:10;:12::i;:::-;16005:22;;:6;;;;;;;;;;:22;;;15997:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33523:4:::1;33514:13;;:5;;;;;;;;;;;:13;;;33506:48;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;33577:5;33569;;:13;;;;;;;;;;;;;;;;;;33454:136::o:0;31949:253::-;32015:7;32054;;32043;:18;;32035:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32119:19;32142:10;:8;:10::i;:::-;32119:33;;32170:24;32182:11;32170:7;:11;;:24;;;;:::i;:::-;32163:31;;;31949:253;;;:::o;28752:83::-;28793:5;28818:9;;;;;;;;;;;28811:16;;28752:83;:::o;32665:479::-;16015:12;:10;:12::i;:::-;16005:22;;:6;;;;;;;;;;:22;;;15997:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32747:11:::1;:20;32759:7;32747:20;;;;;;;;;;;;;;;;;;;;;;;;;32739:60;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;32815:9;32810:327;32834:9;:16;;;;32830:1;:20;32810:327;;;32892:7;32876:23;;:9;32886:1;32876:12;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;32872:254;;;32935:9;32964:1;32945:9;:16;;;;:20;32935:31;;;;;;;;;;;;;;;;;;;;;;;;;32920:9;32930:1;32920:12;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;33004:1;32985:7;:16;32993:7;32985:16;;;;;;;;;;;;;;;:20;;;;33047:5;33024:11;:20;33036:7;33024:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;33071:9;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33105:5;;32872:254;32852:3;;;;;;;32810:327;;;;32665:479:::0;:::o;29968:218::-;30056:4;30073:83;30082:12;:10;:12::i;:::-;30096:7;30105:50;30144:10;30105:11;:25;30117:12;:10;:12::i;:::-;30105:25;;;;;;;;;;;;;;;:34;30131:7;30105:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;30073:8;:83::i;:::-;30174:4;30167:11;;29968:218;;;;:::o;26608:26::-;;;;:::o;30694:377::-;30746:14;30763:12;:10;:12::i;:::-;30746:29;;30795:11;:19;30807:6;30795:19;;;;;;;;;;;;;;;;;;;;;;;;;30794:20;30786:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30875:15;30899:19;30910:7;30899:10;:19::i;:::-;30874:44;;;;;;;30947:28;30967:7;30947;:15;30955:6;30947:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;30929:7;:15;30937:6;30929:15;;;;;;;;;;;;;;;:46;;;;30996:20;31008:7;30996;;:11;;:20;;;;:::i;:::-;30986:7;:30;;;;31040:23;31055:7;31040:10;;:14;;:23;;;;:::i;:::-;31027:10;:36;;;;30694:377;;;:::o;44935:111::-;16015:12;:10;:12::i;:::-;16005:22;;:6;;;;;;;;;;:22;;;15997:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45034:4:::1;45004:18;:27;45023:7;45004:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;44935:111:::0;:::o;31505:436::-;31595:7;31634;;31623;:18;;31615:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31693:17;31688:246;;31728:15;31752:19;31763:7;31752:10;:19::i;:::-;31727:44;;;;;;;31793:7;31786:14;;;;;31688:246;31835:23;31866:19;31877:7;31866:10;:19::i;:::-;31833:52;;;;;;;31907:15;31900:22;;;31505:436;;;;;:::o;27290:41::-;;;;;;;;;;;;;:::o;26883:37::-;;;;;;;;;;;;;;;;;;;;;;:::o;31083:140::-;16015:12;:10;:12::i;:::-;16005:22;;:6;;;;;;;;;;:22;;;15997:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31199:16:::1;31190:6;;:25;;;;;;;;;;;;;;;;;;31083:140:::0;:::o;32210:447::-;16015:12;:10;:12::i;:::-;16005:22;;:6;;;;;;;;;;:22;;;15997:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32407:11:::1;:20;32419:7;32407:20;;;;;;;;;;;;;;;;;;;;;;;;;32406:21;32398:61;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;32492:1;32473:7;:16;32481:7;32473:16;;;;;;;;;;;;;;;;:20;32470:108;;;32529:37;32549:7;:16;32557:7;32549:16;;;;;;;;;;;;;;;;32529:19;:37::i;:::-;32510:7;:16;32518:7;32510:16;;;;;;;;;;;;;;;:56;;;;32470:108;32611:4;32588:11;:20;32600:7;32588:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;32626:9;32641:7;32626:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32210:447:::0;:::o;44800:123::-;44864:4;44888:18;:27;44907:7;44888:27;;;;;;;;;;;;;;;;;;;;;;;;;44881:34;;44800:123;;;:::o;26695:32::-;;;;:::o;28946:198::-;29012:7;29036:11;:20;29048:7;29036:20;;;;;;;;;;;;;;;;;;;;;;;;;29032:49;;;29065:7;:16;29073:7;29065:16;;;;;;;;;;;;;;;;29058:23;;;;29032:49;29099:37;29119:7;:16;29127:7;29119:16;;;;;;;;;;;;;;;;29099:19;:37::i;:::-;29092:44;;28946:198;;;;:::o;16436:148::-;16015:12;:10;:12::i;:::-;16005:22;;:6;;;;;;;;;;:22;;;15997:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16543:1:::1;16506:40;;16527:6;::::0;::::1;;;;;;;;16506:40;;;;;;;;;;;;16574:1;16557:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;16436:148::o:0;26945:41::-;;;;:::o;26801:29::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;30471:120::-;30539:4;30563:11;:20;30575:7;30563:20;;;;;;;;;;;;;;;;;;;;;;;;;30556:27;;30471:120;;;:::o;15793:79::-;15831:7;15858:6;;;;;;;;;;;15851:13;;15793:79;:::o;45358:195::-;16015:12;:10;:12::i;:::-;16005:22;;:6;;;;;;;;;;:22;;;15997:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45468:2:::1;45452:12;:18;;45444:62;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;45533:12;45517:13;:28;;;;45358:195:::0;:::o;28657:87::-;28696:13;28729:7;28722:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28657:87;:::o;30194:269::-;30287:4;30304:129;30313:12;:10;:12::i;:::-;30327:7;30336:96;30375:15;30336:96;;;;;;;;;;;;;;;;;:11;:25;30348:12;:10;:12::i;:::-;30336:25;;;;;;;;;;;;;;;:34;30362:7;30336:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;30304:8;:129::i;:::-;30451:4;30444:11;;30194:269;;;;:::o;33423:24::-;;;;;;;;;;;;;:::o;17446:293::-;17516:10;17498:28;;:14;;;;;;;;;;;:28;;;17490:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17591:9;;17585:3;:15;17577:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17682:14;;;;;;;;;;;17653:44;;17674:6;;;;;;;;;;17653:44;;;;;;;;;;;;17717:14;;;;;;;;;;;17708:6;;:23;;;;;;;;;;;;;;;;;;17446:293::o;29152:167::-;29230:4;29247:42;29257:12;:10;:12::i;:::-;29271:9;29282:6;29247:9;:42::i;:::-;29307:4;29300:11;;29152:167;;;;:::o;16991:89::-;17036:7;17063:9;;17056:16;;16991:89;:::o;27213:36::-;;;:::o;27058:47::-;;;:::o;45819:171::-;16015:12;:10;:12::i;:::-;16005:22;;:6;;;;;;;;;;:22;;;15997:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45920:8:::1;45896:21;;:32;;;;;;;;;;;;;;;;;;45944:38;45973:8;45944:38;;;;;;;;;;;;;;;;;;;;45819:171:::0;:::o;31230:146::-;16015:12;:10;:12::i;:::-;16005:22;;:6;;;;;;;;;;:22;;;15997:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31353:13:::1;31321:14;;:46;;;;;;;;;;;;;;;;;;31230:146:::0;:::o;45564:247::-;16015:12;:10;:12::i;:::-;16005:22;;:6;;;;;;;;;;:22;;;15997:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45668:1:::1;45652:12;:17;;45644:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45743:60;45787:5;45743:25;45755:12;45743:7;;:11;;:25;;;;:::i;:::-;:29;;:60;;;;:::i;:::-;45728:12;:75;;;;45564:247:::0;:::o;17156:214::-;16015:12;:10;:12::i;:::-;16005:22;;:6;;;;;;;;;;:22;;;15997:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17237:6:::1;::::0;::::1;;;;;;;;17220:14;;:23;;;;;;;;;;;;;;;;;;17271:1;17254:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;17302:4;17296:3;:10;17284:9;:22;;;;17359:1;17322:40;;17343:6;::::0;::::1;;;;;;;;17322:40;;;;;;;;;;;;17156:214:::0;:::o;29327:143::-;29408:7;29435:11;:18;29447:5;29435:18;;;;;;;;;;;;;;;:27;29454:7;29435:27;;;;;;;;;;;;;;;;29428:34;;29327:143;;;;:::o;31382:117::-;16015:12;:10;:12::i;:::-;16005:22;;:6;;;;;;;;;;:22;;;15997:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31443:6:::1;;;;;;;;;;;:15;;:38;31459:21;31443:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;31382:117::o:0;45058:110::-;16015:12;:10;:12::i;:::-;16005:22;;:6;;;;;;;;;;:22;;;15997:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45155:5:::1;45125:18;:27;45144:7;45125:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;45058:110:::0;:::o;16739:244::-;16015:12;:10;:12::i;:::-;16005:22;;:6;;;;;;;;;;:22;;;15997:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16848:1:::1;16828:22;;:8;:22;;;;16820:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16938:8;16909:38;;16930:6;::::0;::::1;;;;;;;;16909:38;;;;;;;;;;;;16967:8;16958:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;16739:244:::0;:::o;178:106::-;231:15;266:10;259:17;;178:106;:::o;33156:259::-;33266:1;33249:19;;:5;:19;;;;33241:28;;;;;;33307:1;33288:21;;:7;:21;;;;33280:30;;;;;;33353:6;33323:11;:18;33335:5;33323:18;;;;;;;;;;;;;;;:27;33342:7;33323:27;;;;;;;;;;;;;;;:36;;;;33391:7;33375:32;;33384:5;33375:32;;;33400:6;33375:32;;;;;;;;;;;;;;;;;;33156:259;;;:::o;33613:1984::-;33751:1;33735:18;;:4;:18;;;;33727:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33828:1;33814:16;;:2;:16;;;;33806:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33898:1;33889:6;:10;33881:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33969:4;33959:14;;:5;;;;;;;;;;;:14;;;:33;;;;;33985:7;:5;:7::i;:::-;33977:15;;:4;:15;;;;33959:33;:50;;;;;34002:7;:5;:7::i;:::-;33996:13;;:2;:13;;;;33959:50;33956:287;;;34034:11;34028:17;;:2;:17;;;34025:107;;34105:9;34075:25;34093:6;34075:13;34085:2;34075:9;:13::i;:::-;:17;;:25;;;;:::i;:::-;34074:40;;34065:51;;;;;;34025:107;34164:14;34154:6;:24;;34146:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33956:287;34264:7;:5;:7::i;:::-;34256:15;;:4;:15;;;;:32;;;;;34281:7;:5;:7::i;:::-;34275:13;;:2;:13;;;;34256:32;34253:81;;;34321:12;;34311:6;:22;;34303:31;;;;;;34253:81;34633:5;:9;34639:2;34633:9;;;;;;;;;;;;;;;;;;;;;;;;;34629:129;;34658:11;34675:2;34658:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34693;;:22;;;;;;;;;;;;;34742:4;34730:5;:9;34736:2;34730:9;;;;;;;;;;;;;;;;:16;;;;;;;;;;;;;;;;;;34629:129;34768:28;34799:24;34817:4;34799:9;:24::i;:::-;34768:55;;34834:24;34885:19;;34861:20;:43;;34834:70;;34933:19;:53;;;;;34970:16;;;;;;;;;;;34969:17;34933:53;:89;;;;;35011:11;35003:19;;:4;:19;;;;34933:89;:127;;;;;35039:21;;;;;;;;;;;34933:127;34915:249;;;35116:36;35131:20;35116:14;:36::i;:::-;34915:249;35245:12;35260:4;35245:19;;35372:18;:24;35391:4;35372:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;35400:18;:22;35419:2;35400:22;;;;;;;;;;;;;;;;;;;;;;;;;35372:50;35369:96;;;35448:5;35438:15;;35369:96;35551:38;35566:4;35571:2;35574:6;35581:7;35551:14;:38::i;:::-;33613:1984;;;;;;:::o;4997:192::-;5083:7;5116:1;5111;:6;;5119:12;5103:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5143:9;5159:1;5155;:5;5143:17;;5180:1;5173:8;;;4997:192;;;;;:::o;42950:163::-;42991:7;43012:15;43029;43048:19;:17;:19::i;:::-;43011:56;;;;43085:20;43097:7;43085;:11;;:20;;;;:::i;:::-;43078:27;;;;42950:163;:::o;6395:132::-;6453:7;6480:39;6484:1;6487;6480:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;6473:46;;6395:132;;;;:::o;4094:181::-;4152:7;4172:9;4188:1;4184;:5;4172:17;;4213:1;4208;:6;;4200:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4266:1;4259:8;;;4094:181;;;;:::o;41748:419::-;41807:7;41816;41825;41834;41843;41852;41873:23;41898:12;41912:18;41934:20;41946:7;41934:11;:20::i;:::-;41872:82;;;;;;41966:15;41983:23;42008:12;42024:50;42036:7;42045:4;42051:10;42063;:8;:10::i;:::-;42024:11;:50::i;:::-;41965:109;;;;;;42093:7;42102:15;42119:4;42125:15;42142:4;42148:10;42085:74;;;;;;;;;;;;;;;;;;41748:419;;;;;;;:::o;4558:136::-;4616:7;4643:43;4647:1;4650;4643:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;4636:50;;4558:136;;;;:::o;5448:471::-;5506:7;5756:1;5751;:6;5747:47;;;5781:1;5774:8;;;;5747:47;5806:9;5822:1;5818;:5;5806:17;;5851:1;5846;5842;:5;;;;;;:10;5834:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5910:1;5903:8;;;5448:471;;;;;:::o;35654:1564::-;27703:4;27684:16;;:23;;;;;;;;;;;;;;;;;;35790:20:::1;35813:27;35838:1;35813:20;:24;;:27;;;;:::i;:::-;35790:50;;35851:14;35868:27;35893:1;35868:20;:24;;:27;;;;:::i;:::-;35851:44;;35906:18;35927:27;35952:1;35927:20;:24;;:27;;;;:::i;:::-;35906:48;;35997:12;36012:19;36029:1;36012:12;:16;;:19;;;;:::i;:::-;35997:34;;36042:17;36062:22;36079:4;36062:12;:16;;:22;;;;:::i;:::-;36042:42;;36360:22;36385:21;36360:46;;36451:50;36468:32;36489:10;36468:16;36477:6;36468:4;:8;;:16;;;;:::i;:::-;:20;;:32;;;;:::i;:::-;36451:16;:50::i;:::-;36632:15;36650:41;36676:14;36650:21;:25;;:41;;;;:::i;:::-;36632:59;;36702:16;36721:14;36733:1;36721:7;:11;;:14;;;;:::i;:::-;36702:33;;36746:6;;;;;;;;;;;:15;;:25;36762:8;36746:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;36782:13;;;;;;;;;;;:22;;:32;36805:8;36782:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;37110:33;37123:9;37134:8;37110:12;:33::i;:::-;37169:41;37184:4;37190:8;37200:9;37169:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27719:1;;;;;;;;27750:5:::0;27731:16;;:24;;;;;;;;;;;;;;;;;;35654:1564;:::o;38423:834::-;38534:7;38530:40;;38556:14;:12;:14::i;:::-;38530:40;38595:11;:19;38607:6;38595:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;38619:11;:22;38631:9;38619:22;;;;;;;;;;;;;;;;;;;;;;;;;38618:23;38595:46;38591:597;;;38658:48;38680:6;38688:9;38699:6;38658:21;:48::i;:::-;38591:597;;;38729:11;:19;38741:6;38729:19;;;;;;;;;;;;;;;;;;;;;;;;;38728:20;:46;;;;;38752:11;:22;38764:9;38752:22;;;;;;;;;;;;;;;;;;;;;;;;;38728:46;38724:464;;;38791:46;38811:6;38819:9;38830:6;38791:19;:46::i;:::-;38724:464;;;38860:11;:19;38872:6;38860:19;;;;;;;;;;;;;;;;;;;;;;;;;38859:20;:47;;;;;38884:11;:22;38896:9;38884:22;;;;;;;;;;;;;;;;;;;;;;;;;38883:23;38859:47;38855:333;;;38923:44;38941:6;38949:9;38960:6;38923:17;:44::i;:::-;38855:333;;;38989:11;:19;39001:6;38989:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;39012:11;:22;39024:9;39012:22;;;;;;;;;;;;;;;;;;;;;;;;;38989:45;38985:203;;;39051:48;39073:6;39081:9;39092:6;39051:21;:48::i;:::-;38985:203;;;39132:44;39150:6;39158:9;39169:6;39132:17;:44::i;:::-;38985:203;38855:333;38724:464;38591:597;39212:7;39208:41;;39234:15;:13;:15::i;:::-;39208:41;38423:834;;;;:::o;43121:561::-;43171:7;43180;43200:15;43218:7;;43200:25;;43236:15;43254:7;;43236:25;;43283:9;43278:289;43302:9;:16;;;;43298:1;:20;43278:289;;;43368:7;43344;:21;43352:9;43362:1;43352:12;;;;;;;;;;;;;;;;;;;;;;;;;43344:21;;;;;;;;;;;;;;;;:31;:66;;;;43403:7;43379;:21;43387:9;43397:1;43387:12;;;;;;;;;;;;;;;;;;;;;;;;;43379:21;;;;;;;;;;;;;;;;:31;43344:66;43340:97;;;43420:7;;43429;;43412:25;;;;;;;;;43340:97;43462:34;43474:7;:21;43482:9;43492:1;43482:12;;;;;;;;;;;;;;;;;;;;;;;;;43474:21;;;;;;;;;;;;;;;;43462:7;:11;;:34;;;;:::i;:::-;43452:44;;43521:34;43533:7;:21;43541:9;43551:1;43541:12;;;;;;;;;;;;;;;;;;;;;;;;;43533:21;;;;;;;;;;;;;;;;43521:7;:11;;:34;;;;:::i;:::-;43511:44;;43320:3;;;;;;;43278:289;;;;43591:20;43603:7;;43591;;:11;;:20;;;;:::i;:::-;43581:7;:30;43577:61;;;43621:7;;43630;;43613:25;;;;;;;;43577:61;43657:7;43666;43649:25;;;;;;43121:561;;;:::o;7023:278::-;7109:7;7141:1;7137;:5;7144:12;7129:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7168:9;7184:1;7180;:5;;;;;;7168:17;;7292:1;7285:8;;;7023:278;;;;;:::o;42175:330::-;42235:7;42244;42253;42273:12;42288:24;42304:7;42288:15;:24::i;:::-;42273:39;;42323:18;42344:30;42366:7;42344:21;:30::i;:::-;42323:51;;42385:23;42411:33;42433:10;42411:17;42423:4;42411:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;42385:59;;42463:15;42480:4;42486:10;42455:42;;;;;;;;;42175:330;;;;;:::o;42513:429::-;42628:7;42637;42646;42666:15;42684:24;42696:11;42684:7;:11;;:24;;;;:::i;:::-;42666:42;;42719:12;42734:21;42743:11;42734:4;:8;;:21;;;;:::i;:::-;42719:36;;42766:18;42787:27;42802:11;42787:10;:14;;:27;;;;:::i;:::-;42766:48;;42825:23;42851:33;42873:10;42851:17;42863:4;42851:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;42825:59;;42903:7;42912:15;42929:4;42895:39;;;;;;;;;;42513:429;;;;;;;;:::o;37242:583::-;37368:21;37406:1;37392:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37368:40;;37437:4;37419;37424:1;37419:7;;;;;;;;;;;;;:23;;;;;;;;;;;37463:13;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37453:4;37458:1;37453:7;;;;;;;;;;;;;:30;;;;;;;;;;;37496:60;37513:4;37528:13;37544:11;37496:8;:60::i;:::-;37595:13;:64;;;37674:11;37700:1;37744:4;37771;37791:15;37595:222;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37242:583;;:::o;37833:509::-;37981:60;37998:4;38013:13;38029:11;37981:8;:60::i;:::-;38084:13;:29;;;38121:9;38154:4;38174:11;38200:1;38243;38286:7;:5;:7::i;:::-;38308:15;38084:250;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37833:509;;:::o;44401:250::-;44458:1;44447:7;;:12;:34;;;;;44480:1;44463:13;;:18;44447:34;44444:46;;;44483:7;;44444:46;44528:7;;44510:15;:25;;;;44570:13;;44546:21;:37;;;;44614:1;44604:7;:11;;;;44642:1;44626:13;:17;;;;44401:250;:::o;40369:566::-;40472:15;40489:23;40514:12;40528:23;40553:12;40567:18;40589:19;40600:7;40589:10;:19::i;:::-;40471:137;;;;;;;;;;;;40637:28;40657:7;40637;:15;40645:6;40637:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;40619:7;:15;40627:6;40619:15;;;;;;;;;;;;;;;:46;;;;40694:28;40714:7;40694;:15;40702:6;40694:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;40676:7;:15;40684:6;40676:15;;;;;;;;;;;;;;;:46;;;;40754:39;40777:15;40754:7;:18;40762:9;40754:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;40733:7;:18;40741:9;40733:18;;;;;;;;;;;;;;;:60;;;;40807:26;40822:10;40807:14;:26::i;:::-;40844:23;40856:4;40862;40844:11;:23::i;:::-;40900:9;40883:44;;40892:6;40883:44;;;40911:15;40883:44;;;;;;;;;;;;;;;;;;40369:566;;;;;;;;;:::o;39775:586::-;39876:15;39893:23;39918:12;39932:23;39957:12;39971:18;39993:19;40004:7;39993:10;:19::i;:::-;39875:137;;;;;;;;;;;;40041:28;40061:7;40041;:15;40049:6;40041:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;40023:7;:15;40031:6;40023:15;;;;;;;;;;;;;;;:46;;;;40101:39;40124:15;40101:7;:18;40109:9;40101:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;40080:7;:18;40088:9;40080:18;;;;;;;;;;;;;;;:60;;;;40172:39;40195:15;40172:7;:18;40180:9;40172:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;40151:7;:18;40159:9;40151:18;;;;;;;;;;;;;;;:60;;;;40233:26;40248:10;40233:14;:26::i;:::-;40270:23;40282:4;40288;40270:11;:23::i;:::-;40326:9;40309:44;;40318:6;40309:44;;;40337:15;40309:44;;;;;;;;;;;;;;;;;;39775:586;;;;;;;;;:::o;39265:502::-;39364:15;39381:23;39406:12;39420:23;39445:12;39459:18;39481:19;39492:7;39481:10;:19::i;:::-;39363:137;;;;;;;;;;;;39529:28;39549:7;39529;:15;39537:6;39529:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;39511:7;:15;39519:6;39511:15;;;;;;;;;;;;;;;:46;;;;39589:39;39612:15;39589:7;:18;39597:9;39589:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;39568:7;:18;39576:9;39568:18;;;;;;;;;;;;;;;:60;;;;39639:26;39654:10;39639:14;:26::i;:::-;39676:23;39688:4;39694;39676:11;:23::i;:::-;39732:9;39715:44;;39724:6;39715:44;;;39743:15;39715:44;;;;;;;;;;;;;;;;;;39265:502;;;;;;;;;:::o;40943:642::-;41046:15;41063:23;41088:12;41102:23;41127:12;41141:18;41163:19;41174:7;41163:10;:19::i;:::-;41045:137;;;;;;;;;;;;41211:28;41231:7;41211;:15;41219:6;41211:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;41193:7;:15;41201:6;41193:15;;;;;;;;;;;;;;;:46;;;;41268:28;41288:7;41268;:15;41276:6;41268:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;41250:7;:15;41258:6;41250:15;;;;;;;;;;;;;;;:46;;;;41328:39;41351:15;41328:7;:18;41336:9;41328:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;41307:7;:18;41315:9;41307:18;;;;;;;;;;;;;;;:60;;;;41399:39;41422:15;41399:7;:18;41407:9;41399:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;41378:7;:18;41386:9;41378:18;;;;;;;;;;;;;;;:60;;;;41457:26;41472:10;41457:14;:26::i;:::-;41494:23;41506:4;41512;41494:11;:23::i;:::-;41550:9;41533:44;;41542:6;41533:44;;;41561:15;41533:44;;;;;;;;;;;;;;;;;;40943:642;;;;;;;;;:::o;44663:125::-;44717:15;;44707:7;:25;;;;44759:21;;44743:13;:37;;;;44663:125::o;44061:154::-;44125:7;44152:55;44191:5;44152:20;44164:7;;44152;:11;;:20;;;;:::i;:::-;:24;;:55;;;;:::i;:::-;44145:62;;44061:154;;;:::o;44223:166::-;44293:7;44320:61;44365:5;44320:26;44332:13;;44320:7;:11;;:26;;;;:::i;:::-;:30;;:61;;;;:::i;:::-;44313:68;;44223:166;;;:::o;43694:355::-;43757:19;43780:10;:8;:10::i;:::-;43757:33;;43801:18;43822:27;43837:11;43822:10;:14;;:27;;;;:::i;:::-;43801:48;;43885:38;43912:10;43885:7;:22;43901:4;43885:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;43860:7;:22;43876:4;43860:22;;;;;;;;;;;;;;;:63;;;;43937:11;:26;43957:4;43937:26;;;;;;;;;;;;;;;;;;;;;;;;;43934:107;;;44003:38;44030:10;44003:7;:22;44019:4;44003:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;43978:7;:22;43994:4;43978:22;;;;;;;;;;;;;;;:63;;;;43934:107;43694:355;;;:::o;41593:147::-;41671:17;41683:4;41671:7;;:11;;:17;;;;:::i;:::-;41661:7;:27;;;;41712:20;41727:4;41712:10;;:14;;:20;;;;:::i;:::-;41699:10;:33;;;;41593:147;;:::o

Swarm Source

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