ETH Price: $3,208.63 (-3.53%)
 

Overview

Max Total Supply

1,000,000,000,000 FILET🥩

Holders

18

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
9,167.696964549 FILET🥩

Value
$0.00
0x0cec4474E6B78e2703dcaAe57De283F96a34614e
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:
FILET

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-06-23
*/

// SPDX-License-Identifier: Unlicensed
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;
        }
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    // Contract implementarion
    contract FILET 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;
        
        mapping (address => bool) private _isWhitelist;
        mapping (address => uint256) private _lockedTime;
        mapping (address => uint256) private _lockedAmount;
        mapping (address => uint256) private _antiBot;
        mapping (address => uint256) private  _lockPreSale;
    
        uint256 private constant MAX = ~uint256(0);
        uint256 private _tTotal = 1000000 * 10**6 * 10**9;
        uint256 private _rTotal = (MAX - (MAX % _tTotal));
        uint256 private _tFeeTotal;

        string private _name = 'FILET🥩';
        string private _symbol = 'FILET🥩';
        uint8 private _decimals = 9;
        

        uint256 public _taxFee = 2; 
        uint256 public _charityFee = 5;
        uint256 public _burnFee = 3;
        uint256 private _previousTaxFee = _taxFee;
        uint256 private _previousCharityFee = _charityFee;
        uint256 private _previousBurnFee = _burnFee;
        
        bool public _isAntiDumpEnabled = false;
        uint256 public antiDumpTime;

        address payable public _charityWalletAddress;

        IUniswapV2Router02 public immutable uniswapV2Router;
        address public immutable uniswapV2Pair;

        bool inSwap = false;
        bool public swapEnabled = true;

        uint256 private _maxTxAmount = 1000000000000 * 10**9;
        uint256 private _numOfTokensToExchangeForCharity = 5 * 10**6 * 10**9;

        event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
        event SwapEnabledUpdated(bool enabled);

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

        constructor (address payable charityWalletAddress) public {
            _charityWalletAddress = charityWalletAddress;
            _rOwned[_msgSender()] = _rTotal;

            IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // UniswapV2 for Ethereum network
            // Create a uniswap pair for this new token
            uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
                .createPair(address(this), _uniswapV2Router.WETH());

            // set the rest of the contract variables
            uniswapV2Router = _uniswapV2Router;

            // 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 isExcluded(address account) public view returns (bool) {
            return _isExcluded[account];
        }

        function setExcludeFromFee(address account, bool excluded) external onlyOwner() {
            _isExcludedFromFee[account] = excluded;
        }

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

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

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

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

        function excludeAccount(address account) external onlyOwner() {
            require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not exclude Uniswap router.');
            require(!_isExcluded[account], "Account is already excluded");
            if(_rOwned[account] > 0) {
                _tOwned[account] = tokenFromReflection(_rOwned[account]);
            }
            _isExcluded[account] = true;
            _excluded.push(account);
        }

        function includeAccount(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 removeAllFee() private {
            if(_taxFee == 0 && _charityFee == 0 && _burnFee == 0) return;
            
            _previousTaxFee = _taxFee;
            _previousCharityFee = _charityFee;
            _previousBurnFee = _burnFee;
            
            _taxFee = 0;
            _charityFee = 0;
            _burnFee = 0;
        }
    
        function restoreAllFee() private {
            _taxFee = _previousTaxFee;
            _charityFee = _previousCharityFee;
            _burnFee = _previousBurnFee;
        }
    
        function isExcludedFromFee(address account) public view returns(bool) {
            return _isExcludedFromFee[account];
        }

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

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

        function _transfer(address sender, address recipient, uint256 amount) private {
            require(sender != address(0), "ERC20: transfer from the zero address");
            require(amount > 0, "Transfer amount must be greater than zero");
            if(_isAntiDumpEnabled == true && sender != owner() && recipient != owner()){
                if(sender == uniswapV2Pair){
                    uint256 timePassed = block.timestamp - _antiBot[recipient];
                    require(timePassed > antiDumpTime,'You must wait between trades');
                    _antiBot[recipient] = block.timestamp;
                }
                else if(recipient == uniswapV2Pair){
                    uint256 timePassed = block.timestamp - _antiBot[sender];
                    require(timePassed > antiDumpTime,'You must wait between trades');
                    _antiBot[sender] = block.timestamp;
                }
                else if(sender != uniswapV2Pair && recipient != uniswapV2Pair){
                    uint256 timePassed1 = block.timestamp - _antiBot[sender];
                    uint256 timePassed2 = block.timestamp - _antiBot[recipient];
                    require(timePassed1 > antiDumpTime && timePassed2 > antiDumpTime, 'You Must Wait Some Time Between Transactions');
                    _antiBot[sender] = block.timestamp;
                    _antiBot[recipient] = block.timestamp;
                }
            }
            
            //If sender has purchased during presale, must wait lockPreSale to transfer.
            if(_isWhitelist[sender] == true) {
                uint256 time_since_purchase = block.timestamp - _lockedTime[sender];
                if(time_since_purchase < _lockPreSale[sender]){
                    require((balanceOf(sender) - amount) >= _lockedAmount[sender], 'You Must Wait Some Time From Original Transaction');
                }
                else {
                    _isWhitelist[sender] == false;
                }
            }
            if(sender != owner() && recipient != owner())
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");

            // is the token balance of this contract address over the min number of
            // tokens that we need to initiate a swap?
            // also, don't get caught in a circular charity event.
            // also, don't swap if sender is uniswap pair.
            uint256 contractTokenBalance = balanceOf(address(this));
            
            if(contractTokenBalance >= _maxTxAmount)
            {
                contractTokenBalance = _maxTxAmount;
            }
            
            bool overMinTokenBalance = contractTokenBalance >= _numOfTokensToExchangeForCharity;
            if (!inSwap && swapEnabled && overMinTokenBalance && sender != uniswapV2Pair) {
                // We need to swap the current tokens to ETH and send to the charity wallet
                swapTokensForEth(contractTokenBalance);
                
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToCharity(address(this).balance);
                }
            }
            
            //indicates if fee should be deducted from transfer
            bool takeFee = true;
            
            //if any account belongs to _isExcludedFromFee account then remove the fee
            if(_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]){
                takeFee = false;
            }
            
            //transfer amount, it will take tax and charity fee
            _tokenTransfer(sender,recipient,amount,takeFee);
        }

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

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

            // make the swap
            uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
                tokenAmount,
                0, // accept any amount of ETH
                path,
                address(this),
                block.timestamp
            );
        }
        
        function sendETHToCharity(uint256 amount) private {
            _charityWalletAddress.transfer(amount);
        }
        
        // We are exposing these functions to be able to manual swap and send
        // in case the token is highly valued and 5M becomes too much
        function manualSwap() external onlyOwner() {
            uint256 contractBalance = balanceOf(address(this));
            swapTokensForEth(contractBalance);
        }
        
        function manualSend() external onlyOwner() {
            uint256 contractETHBalance = address(this).balance;
            sendETHToCharity(contractETHBalance);
        }

        function setSwapEnabled(bool enabled) external onlyOwner(){
            swapEnabled = enabled;
        }
        
        function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) private {
            if(!takeFee)
                removeAllFee();
            
            uint256 burnAmt = amount.mul(_burnFee).div(100);

            if (_isExcluded[sender] && !_isExcluded[recipient]) {
                _transferFromExcluded(sender, recipient, amount.sub(burnAmt));
            } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
                _transferToExcluded(sender, recipient, amount.sub(burnAmt));
            } else if (!_isExcluded[sender] && !_isExcluded[recipient]) {
                _transferStandard(sender, recipient, amount.sub(burnAmt));
            } else if (_isExcluded[sender] && _isExcluded[recipient]) {
                _transferBothExcluded(sender, recipient, amount.sub(burnAmt));
            } else {
                _transferStandard(sender, recipient, amount.sub(burnAmt));
            }
            
            //remove fees to burn tokens
            _taxFee = 0;
            _charityFee = 0;
            
            _transferStandard(sender, address(0), burnAmt);
            
            _taxFee = _previousTaxFee;
            _charityFee = _previousBurnFee;
            
            if(!takeFee)
                restoreAllFee();
        }

        function _transferStandard(address sender, address recipient, uint256 tAmount) private {
            (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tCharity) = _getValues(tAmount);
            _rOwned[sender] = _rOwned[sender].sub(rAmount);
            _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); 
            _takeCharity(tCharity); 
            _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 tCharity) = _getValues(tAmount);
            _rOwned[sender] = _rOwned[sender].sub(rAmount);
            _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
            _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);    
            _takeCharity(tCharity);           
            _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 tCharity) = _getValues(tAmount);
            _tOwned[sender] = _tOwned[sender].sub(tAmount);
            _rOwned[sender] = _rOwned[sender].sub(rAmount);
            _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); 
            _takeCharity(tCharity);   
            _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 tCharity) = _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);   
            _takeCharity(tCharity);         
            _reflectFee(rFee, tFee);
            emit Transfer(sender, recipient, tTransferAmount);
        }

        function _takeCharity(uint256 tCharity) private {
            uint256 currentRate =  _getRate();
            uint256 rCharity = tCharity.mul(currentRate);
            _rOwned[address(this)] = _rOwned[address(this)].add(rCharity);
            if(_isExcluded[address(this)])
                _tOwned[address(this)] = _tOwned[address(this)].add(tCharity);
        }

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

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

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

        function _getTValues(uint256 tAmount, uint256 taxFee, uint256 charityFee) private pure returns (uint256, uint256, uint256) {
            uint256 tFee = tAmount.mul(taxFee).div(100);
            uint256 tCharity = tAmount.mul(charityFee).div(100);
            uint256 tTransferAmount = tAmount.sub(tFee).sub(tCharity);
            return (tTransferAmount, tFee, tCharity);
        }

        function _getRValues(uint256 tAmount, uint256 tFee, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
            uint256 rAmount = tAmount.mul(currentRate);
            uint256 rFee = tFee.mul(currentRate);
            uint256 rTransferAmount = rAmount.sub(rFee);
            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 _getTaxFee() private view returns(uint256) {
            return _taxFee;
        }

        function _getMaxTxAmount() private view returns(uint256) {
            return _maxTxAmount;
        }

        function _getETHBalance() public view returns(uint256 balance) {
            return address(this).balance;
        }
        
        function _setTaxFee(uint256 taxFee) external onlyOwner() {
            _taxFee = taxFee;
        }

        function _setCharityFee(uint256 charityFee) external onlyOwner() {
            _charityFee = charityFee;
        }
        
        function _setCharityWallet(address payable charityWalletAddress) external onlyOwner() {
            _charityWalletAddress = charityWalletAddress;
        }
        
        function distTokens(address[] memory recipients, uint256[] memory amounts, uint256 time) external onlyOwner{
            require(recipients.length == amounts.length, 'Arrays must have same size');
            for(uint i = 0; i< recipients.length; i++){
                _isWhitelist[recipients[i]] = true;
                _lockedTime[recipients[i]] = block.timestamp;
                _lockPreSale[recipients[i]] = time * 1 hours;
                uint256 amt = amounts[i].mul(10**9);
                _lockedAmount[recipients[i]] = amt;
                _tokenTransfer(msg.sender, recipients[i], amt, false);
            }
        }
        
        function setLockPreSaleTime(address _address, uint256 hour) external onlyOwner{
            _lockPreSale[_address] = hour * 1 hours;
        }
        
        function setAntiDumpEnabled(bool value, uint256 time) external onlyOwner{
            _isAntiDumpEnabled = value;
            antiDumpTime = time * 1 minutes;
        }
        
        function _setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
            _maxTxAmount = maxTxAmount;
        }
    }

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address payable","name":"charityWalletAddress","type":"address"}],"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":"bool","name":"enabled","type":"bool"}],"name":"SwapEnabledUpdated","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":"_burnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_charityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_charityWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_getETHBalance","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_isAntiDumpEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"charityFee","type":"uint256"}],"name":"_setCharityFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"charityWalletAddress","type":"address"}],"name":"_setCharityWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"_setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"_setTaxFee","outputs":[],"stateMutability":"nonpayable","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":[],"name":"antiDumpTime","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":"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":"recipients","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"uint256","name":"time","type":"uint256"}],"name":"distTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"geUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeAccount","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":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","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":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"},{"internalType":"uint256","name":"time","type":"uint256"}],"name":"setAntiDumpEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"hour","type":"uint256"}],"name":"setLockPreSaleTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052683635c9adc5dea00000600e55600e54600019816200001f57fe5b0660001903600f556040518060400160405280600981526020017f46494c4554f09fa5a900000000000000000000000000000000000000000000008152506011908051906020019062000074929190620006b3565b506040518060400160405280600981526020017f46494c4554f09fa5a9000000000000000000000000000000000000000000000081525060129080519060200190620000c2929190620006b3565b506009601360006101000a81548160ff021916908360ff1602179055506002601455600560155560036016556014546017556015546018556016546019556000601a60006101000a81548160ff0219169083151502179055506000601c60146101000a81548160ff0219169083151502179055506001601c60156101000a81548160ff021916908315150217905550683635c9adc5dea00000601d556611c37937e08000601e553480156200017657600080fd5b50604051620066d4380380620066d4833981810160405260208110156200019c57600080fd5b81019080805190602001909291905050506000620001bf6200068260201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35080601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600f5460036000620002b56200068260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200035357600080fd5b505afa15801562000368573d6000803e3d6000fd5b505050506040513d60208110156200037f57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003f357600080fd5b505afa15801562000408573d6000803e3d6000fd5b505050506040513d60208110156200041f57600080fd5b81019080805190602001909291905050506040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1580156200049a57600080fd5b505af1158015620004af573d6000803e3d6000fd5b505050506040513d6020811015620004c657600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250506001600660006200055a6200068a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620006136200068260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600e546040518082815260200191505060405180910390a3505062000759565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620006f657805160ff191683800117855562000727565b8280016001018555821562000727579182015b828111156200072657825182559160200191906001019062000709565b5b5090506200073691906200073a565b5090565b5b80821115620007555760008160009055506001016200073b565b5090565b60805160601c60a05160601c615f29620007ab60003980611b0652806139425280613a9d5280613bf85280613c4f528061413c52508061117a52806149e35280614acf5280614af65250615f296000f3fe6080604052600436106102815760003560e01c8063715018a61161014f578063c0b0fda2116100c1578063e01af92c1161007a578063e01af92c14610f3c578063f2cc0c1814610f79578063f2fde38b14610fca578063f42938901461101b578063f815a84214611032578063f84354f11461105d57610288565b8063c0b0fda214610d6c578063cba0e99614610d97578063cf996edd14610dfe578063d047e4b714610e2b578063dd46706414610e7c578063dd62ed3e14610eb757610288565b8063a24a8d0f11610113578063a24a8d0f14610bb0578063a457c2d714610beb578063a69df4b514610c5c578063a9059cbb14610c73578063af9549e014610ce4578063b6c5232414610d4157610288565b8063715018a614610a5c57806376d4ab9914610a735780638da5cb5b14610ab457806395d89b4114610af55780639c7a91fe14610b8557610288565b806339509351116101f35780635066d6ff116101ac5780635066d6ff146108b657806351bc3c85146109115780635342acb4146109285780635880b8731461098f5780636ddd1713146109ca57806370a08231146109f757610288565b806339509351146107185780633b124fe7146107895780633bd5d173146107b457806340f8007a146107ef5780634549b0391461081a57806349bd5a5e1461087557610288565b80631bbae6e0116102455780631bbae6e01461042557806323b872dd146104605780632d838119146104f15780632e6c2774146105405780632ee9cfdb146106a3578063313ce567146106ea57610288565b806306fdde031461028d578063095ea7b31461031d57806313114a9d1461038e5780631694505e146103b957806318160ddd146103fa57610288565b3661028857005b600080fd5b34801561029957600080fd5b506102a26110ae565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102e25780820151818401526020810190506102c7565b50505050905090810190601f16801561030f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561032957600080fd5b506103766004803603604081101561034057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611150565b60405180821515815260200191505060405180910390f35b34801561039a57600080fd5b506103a361116e565b6040518082815260200191505060405180910390f35b3480156103c557600080fd5b506103ce611178565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561040657600080fd5b5061040f61119c565b6040518082815260200191505060405180910390f35b34801561043157600080fd5b5061045e6004803603602081101561044857600080fd5b81019080803590602001909291905050506111a6565b005b34801561046c57600080fd5b506104d96004803603606081101561048357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611278565b60405180821515815260200191505060405180910390f35b3480156104fd57600080fd5b5061052a6004803603602081101561051457600080fd5b8101908080359060200190929190505050611351565b6040518082815260200191505060405180910390f35b34801561054c57600080fd5b506106a16004803603606081101561056357600080fd5b810190808035906020019064010000000081111561058057600080fd5b82018360208201111561059257600080fd5b803590602001918460208302840111640100000000831117156105b457600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561061457600080fd5b82018360208201111561062657600080fd5b8035906020019184602083028401116401000000008311171561064857600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290803590602001909291905050506113d5565b005b3480156106af57600080fd5b506106e8600480360360408110156106c657600080fd5b81019080803515159060200190929190803590602001909291905050506116f6565b005b3480156106f657600080fd5b506106ff6117e6565b604051808260ff16815260200191505060405180910390f35b34801561072457600080fd5b506107716004803603604081101561073b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506117fd565b60405180821515815260200191505060405180910390f35b34801561079557600080fd5b5061079e6118b0565b6040518082815260200191505060405180910390f35b3480156107c057600080fd5b506107ed600480360360208110156107d757600080fd5b81019080803590602001909291905050506118b6565b005b3480156107fb57600080fd5b50610804611a47565b6040518082815260200191505060405180910390f35b34801561082657600080fd5b5061085f6004803603604081101561083d57600080fd5b8101908080359060200190929190803515159060200190929190505050611a4d565b6040518082815260200191505060405180910390f35b34801561088157600080fd5b5061088a611b04565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156108c257600080fd5b5061090f600480360360408110156108d957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611b28565b005b34801561091d57600080fd5b50610926611c3c565b005b34801561093457600080fd5b506109776004803603602081101561094b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d1d565b60405180821515815260200191505060405180910390f35b34801561099b57600080fd5b506109c8600480360360208110156109b257600080fd5b8101908080359060200190929190505050611d73565b005b3480156109d657600080fd5b506109df611e45565b60405180821515815260200191505060405180910390f35b348015610a0357600080fd5b50610a4660048036036020811015610a1a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e58565b6040518082815260200191505060405180910390f35b348015610a6857600080fd5b50610a71611f43565b005b348015610a7f57600080fd5b50610a886120c9565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610ac057600080fd5b50610ac96120ef565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b0157600080fd5b50610b0a612118565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610b4a578082015181840152602081019050610b2f565b50505050905090810190601f168015610b775780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610b9157600080fd5b50610b9a6121ba565b6040518082815260200191505060405180910390f35b348015610bbc57600080fd5b50610be960048036036020811015610bd357600080fd5b81019080803590602001909291905050506121c0565b005b348015610bf757600080fd5b50610c4460048036036040811015610c0e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612292565b60405180821515815260200191505060405180910390f35b348015610c6857600080fd5b50610c7161235f565b005b348015610c7f57600080fd5b50610ccc60048036036040811015610c9657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061257c565b60405180821515815260200191505060405180910390f35b348015610cf057600080fd5b50610d3f60048036036040811015610d0757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080351515906020019092919050505061259a565b005b348015610d4d57600080fd5b50610d566126bd565b6040518082815260200191505060405180910390f35b348015610d7857600080fd5b50610d816126c7565b6040518082815260200191505060405180910390f35b348015610da357600080fd5b50610de660048036036020811015610dba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506126cd565b60405180821515815260200191505060405180910390f35b348015610e0a57600080fd5b50610e13612723565b60405180821515815260200191505060405180910390f35b348015610e3757600080fd5b50610e7a60048036036020811015610e4e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612736565b005b348015610e8857600080fd5b50610eb560048036036020811015610e9f57600080fd5b8101908080359060200190929190505050612842565b005b348015610ec357600080fd5b50610f2660048036036040811015610eda57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612a33565b6040518082815260200191505060405180910390f35b348015610f4857600080fd5b50610f7760048036036020811015610f5f57600080fd5b81019080803515159060200190929190505050612aba565b005b348015610f8557600080fd5b50610fc860048036036020811015610f9c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b9f565b005b348015610fd657600080fd5b5061101960048036036020811015610fed57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612f52565b005b34801561102757600080fd5b5061103061315d565b005b34801561103e57600080fd5b50611047613236565b6040518082815260200191505060405180910390f35b34801561106957600080fd5b506110ac6004803603602081101561108057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061323e565b005b606060118054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111465780601f1061111b57610100808354040283529160200191611146565b820191906000526020600020905b81548152906001019060200180831161112957829003601f168201915b5050505050905090565b600061116461115d6135c8565b84846135d0565b6001905092915050565b6000601054905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600e54905090565b6111ae6135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461126e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601d8190555050565b60006112858484846137c7565b611346846112916135c8565b61134185604051806060016040528060288152602001615dc460289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006112f76135c8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546142789092919063ffffffff16565b6135d0565b600190509392505050565b6000600f548211156113ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180615cdd602a913960400191505060405180910390fd5b60006113b8614338565b90506113cd818461436390919063ffffffff16565b915050919050565b6113dd6135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461149d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8151835114611514576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f417272617973206d75737420686176652073616d652073697a6500000000000081525060200191505060405180910390fd5b60005b83518110156116f05760016009600086848151811061153257fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555042600a600086848151811061159c57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e108202600d60008684815181106115f757fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611669633b9aca0085848151811061165357fe5b60200260200101516143ad90919063ffffffff16565b905080600b600087858151811061167c57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506116e2338684815181106116d257fe5b6020026020010151836000614433565b508080600101915050611517565b50505050565b6116fe6135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b81601a60006101000a81548160ff021916908315150217905550603c8102601b819055505050565b6000601360009054906101000a900460ff16905090565b60006118a661180a6135c8565b846118a1856005600061181b6135c8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546147f990919063ffffffff16565b6135d0565b6001905092915050565b60145481565b60006118c06135c8565b9050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611965576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180615e80602c913960400191505060405180910390fd5b600061197083614881565b505050505090506119c981600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148e890919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a2181600f546148e890919063ffffffff16565b600f81905550611a3c836010546147f990919063ffffffff16565b601081905550505050565b60155481565b6000600e54831115611ac7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b81611ae7576000611ad784614881565b5050505050905080915050611afe565b6000611af284614881565b50505050915050809150505b92915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b611b306135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bf0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b610e108102600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b611c446135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000611d0f30611e58565b9050611d1a81614932565b50565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611d7b6135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e3b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060148190555050565b601c60159054906101000a900460ff1681565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611ef357600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611f3e565b611f3b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611351565b90505b919050565b611f4b6135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461200b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060128054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156121b05780601f10612185576101008083540402835291602001916121b0565b820191906000526020600020905b81548152906001019060200180831161219357829003601f168201915b5050505050905090565b601b5481565b6121c86135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612288576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060158190555050565b600061235561229f6135c8565b8461235085604051806060016040528060258152602001615ecf60259139600560006122c96135c8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546142789092919063ffffffff16565b6135d0565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612405576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180615eac6023913960400191505060405180910390fd5b600254421161247c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f6e7472616374206973206c6f636b656420756e74696c203720646179730081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006125906125896135c8565b84846137c7565b6001905092915050565b6125a26135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612662576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600254905090565b60165481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601a60009054906101000a900460ff1681565b61273e6135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61284a6135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461290a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550804201600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612ac26135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b82576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601c60156101000a81548160ff02191690831515021790555050565b612ba76135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c67576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612d00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180615e5e6022913960400191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612dc0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115612e9457612e50600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611351565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612f5a6135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461301a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156130a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180615d076026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6131656135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613225576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600047905061323381614c16565b50565b600047905090565b6132466135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613306576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166133c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b60005b6008805490508110156135c4578173ffffffffffffffffffffffffffffffffffffffff16600882815481106133f957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156135b75760086001600880549050038154811061345557fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008828154811061348d57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600880548061357d57fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556135c4565b80806001019150506133c8565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613656576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180615e3a6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156136dc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180615d2d6022913960400191505060405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561384d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615e156025913960400191505060405180910390fd5b600081116138a6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180615dec6029913960400191505060405180910390fd5b60011515601a60009054906101000a900460ff1615151480156138fc57506138cc6120ef565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561393b575061390b6120ef565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15613e24577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613a9b576000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442039050601b548111613a51576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f596f75206d7573742077616974206265747765656e207472616465730000000081525060200191505060405180910390fd5b42600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050613e23565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613bf6576000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442039050601b548111613bac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f596f75206d7573742077616974206265747765656e207472616465730000000081525060200191505060405180910390fd5b42600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050613e22565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015613c9e57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15613e21576000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054420390506000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442039050601b5482118015613d415750601b5481115b613d96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180615d4f602c913960400191505060405180910390fd5b42600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555042600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505b5b5b5b60011515600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415614004576000600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442039050600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811015613fb157600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482613f5486611e58565b031015613fac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180615cac6031913960400191505060405180910390fd5b614002565b60001515600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a905050505b505b61400c6120ef565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561407a575061404a6120ef565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156140db57601d548111156140da576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180615d7b6028913960400191505060405180910390fd5b5b60006140e630611e58565b9050601d5481106140f757601d5490505b6000601e548210159050601c60149054906101000a900460ff1615801561412a5750601c60159054906101000a900460ff165b80156141335750805b801561418b57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156141b35761419982614932565b600047905060008111156141b1576141b047614c16565b5b505b600060019050600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061425a5750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561426457600090505b61427086868684614433565b505050505050565b6000838311158290614325576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156142ea5780820151818401526020810190506142cf565b50505050905090810190601f1680156143175780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000806000614345614c82565b9150915061435c818361436390919063ffffffff16565b9250505090565b60006143a583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614f13565b905092915050565b6000808314156143c0576000905061442d565b60008284029050828482816143d157fe5b0414614428576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180615da36021913960400191505060405180910390fd5b809150505b92915050565b8061444157614440614fd9565b5b600061446b606461445d601654866143ad90919063ffffffff16565b61436390919063ffffffff16565b9050600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156145105750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561453757614532858561452d84876148e890919063ffffffff16565b61503b565b6147b6565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156145da5750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15614601576145fc85856145f784876148e890919063ffffffff16565b61529b565b6147b5565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156146a55750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156146cc576146c785856146c284876148e890919063ffffffff16565b6154fb565b6147b4565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561476e5750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561479557614790858561478b84876148e890919063ffffffff16565b6156c6565b6147b3565b6147b285856147ad84876148e890919063ffffffff16565b6154fb565b5b5b5b5b600060148190555060006015819055506147d2856000836154fb565b601754601481905550601954601581905550816147f2576147f16159bb565b5b5050505050565b600080828401905083811015614877576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600080600080600080600080600061489e8a6014546015546159d8565b92509250925060006148ae614338565b905060008060006148c08e8786615a6e565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061492a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250614278565b905092915050565b6001601c60146101000a81548160ff0219169083151502179055506060600267ffffffffffffffff8111801561496757600080fd5b506040519080825280602002602001820160405280156149965781602001602082028036833780820191505090505b50905030816000815181106149a757fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015614a4757600080fd5b505afa158015614a5b573d6000803e3d6000fd5b505050506040513d6020811015614a7157600080fd5b810190808051906020019092919050505081600181518110614a8f57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050614af4307f0000000000000000000000000000000000000000000000000000000000000000846135d0565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015614bb6578082015181840152602081019050614b9b565b505050509050019650505050505050600060405180830381600087803b158015614bdf57600080fd5b505af1158015614bf3573d6000803e3d6000fd5b50505050506000601c60146101000a81548160ff02191690831515021790555050565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015614c7e573d6000803e3d6000fd5b5050565b6000806000600f5490506000600e54905060005b600880549050811015614ed657826003600060088481548110614cb557fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180614d9c5750816004600060088481548110614d3457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15614db357600f54600e5494509450505050614f0f565b614e3c6003600060088481548110614dc757fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846148e890919063ffffffff16565b9250614ec76004600060088481548110614e5257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836148e890919063ffffffff16565b91508080600101915050614c96565b50614eee600e54600f5461436390919063ffffffff16565b821015614f0657600f54600e54935093505050614f0f565b81819350935050505b9091565b60008083118290614fbf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614f84578082015181840152602081019050614f69565b50505050905090810190601f168015614fb15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581614fcb57fe5b049050809150509392505050565b6000601454148015614fed57506000601554145b8015614ffb57506000601654145b1561500557615039565b6014546017819055506015546018819055506016546019819055506000601481905550600060158190555060006016819055505b565b60008060008060008061504d87614881565b9550955095509550955095506150ab87600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148e890919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061514086600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148e890919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506151d585600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546147f990919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061522181615acc565b61522b8483615c71565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b6000806000806000806152ad87614881565b95509550955095509550955061530b86600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148e890919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506153a083600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546147f990919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061543585600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546147f990919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061548181615acc565b61548b8483615c71565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b60008060008060008061550d87614881565b95509550955095509550955061556b86600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148e890919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061560085600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546147f990919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061564c81615acc565b6156568483615c71565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b6000806000806000806156d887614881565b95509550955095509550955061573687600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148e890919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506157cb86600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148e890919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061586083600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546147f990919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506158f585600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546147f990919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061594181615acc565b61594b8483615c71565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b601754601481905550601854601581905550601954601681905550565b600080600080615a0460646159f6888a6143ad90919063ffffffff16565b61436390919063ffffffff16565b90506000615a2e6064615a20888b6143ad90919063ffffffff16565b61436390919063ffffffff16565b90506000615a5782615a49858c6148e890919063ffffffff16565b6148e890919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080615a8785886143ad90919063ffffffff16565b90506000615a9e86886143ad90919063ffffffff16565b90506000615ab582846148e890919063ffffffff16565b905082818395509550955050505093509350939050565b6000615ad6614338565b90506000615aed82846143ad90919063ffffffff16565b9050615b4181600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546147f990919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615615c6c57615c2883600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546147f990919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b615c8682600f546148e890919063ffffffff16565b600f81905550615ca1816010546147f990919063ffffffff16565b601081905550505056fe596f75204d757374205761697420536f6d652054696d652046726f6d204f726967696e616c205472616e73616374696f6e416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373596f75204d757374205761697420536f6d652054696d65204265747765656e205472616e73616374696f6e735472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737357652063616e206e6f74206578636c75646520556e697377617020726f757465722e4578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6f636b45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122045fb1709a31e85a73883934f23bf2f32b057ed29d92260fab2c4d1467a59c4f364736f6c634300060c0033000000000000000000000000e2dec0750f92ea0971e4bd221471e272e9033c64

Deployed Bytecode

0x6080604052600436106102815760003560e01c8063715018a61161014f578063c0b0fda2116100c1578063e01af92c1161007a578063e01af92c14610f3c578063f2cc0c1814610f79578063f2fde38b14610fca578063f42938901461101b578063f815a84214611032578063f84354f11461105d57610288565b8063c0b0fda214610d6c578063cba0e99614610d97578063cf996edd14610dfe578063d047e4b714610e2b578063dd46706414610e7c578063dd62ed3e14610eb757610288565b8063a24a8d0f11610113578063a24a8d0f14610bb0578063a457c2d714610beb578063a69df4b514610c5c578063a9059cbb14610c73578063af9549e014610ce4578063b6c5232414610d4157610288565b8063715018a614610a5c57806376d4ab9914610a735780638da5cb5b14610ab457806395d89b4114610af55780639c7a91fe14610b8557610288565b806339509351116101f35780635066d6ff116101ac5780635066d6ff146108b657806351bc3c85146109115780635342acb4146109285780635880b8731461098f5780636ddd1713146109ca57806370a08231146109f757610288565b806339509351146107185780633b124fe7146107895780633bd5d173146107b457806340f8007a146107ef5780634549b0391461081a57806349bd5a5e1461087557610288565b80631bbae6e0116102455780631bbae6e01461042557806323b872dd146104605780632d838119146104f15780632e6c2774146105405780632ee9cfdb146106a3578063313ce567146106ea57610288565b806306fdde031461028d578063095ea7b31461031d57806313114a9d1461038e5780631694505e146103b957806318160ddd146103fa57610288565b3661028857005b600080fd5b34801561029957600080fd5b506102a26110ae565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102e25780820151818401526020810190506102c7565b50505050905090810190601f16801561030f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561032957600080fd5b506103766004803603604081101561034057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611150565b60405180821515815260200191505060405180910390f35b34801561039a57600080fd5b506103a361116e565b6040518082815260200191505060405180910390f35b3480156103c557600080fd5b506103ce611178565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561040657600080fd5b5061040f61119c565b6040518082815260200191505060405180910390f35b34801561043157600080fd5b5061045e6004803603602081101561044857600080fd5b81019080803590602001909291905050506111a6565b005b34801561046c57600080fd5b506104d96004803603606081101561048357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611278565b60405180821515815260200191505060405180910390f35b3480156104fd57600080fd5b5061052a6004803603602081101561051457600080fd5b8101908080359060200190929190505050611351565b6040518082815260200191505060405180910390f35b34801561054c57600080fd5b506106a16004803603606081101561056357600080fd5b810190808035906020019064010000000081111561058057600080fd5b82018360208201111561059257600080fd5b803590602001918460208302840111640100000000831117156105b457600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561061457600080fd5b82018360208201111561062657600080fd5b8035906020019184602083028401116401000000008311171561064857600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290803590602001909291905050506113d5565b005b3480156106af57600080fd5b506106e8600480360360408110156106c657600080fd5b81019080803515159060200190929190803590602001909291905050506116f6565b005b3480156106f657600080fd5b506106ff6117e6565b604051808260ff16815260200191505060405180910390f35b34801561072457600080fd5b506107716004803603604081101561073b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506117fd565b60405180821515815260200191505060405180910390f35b34801561079557600080fd5b5061079e6118b0565b6040518082815260200191505060405180910390f35b3480156107c057600080fd5b506107ed600480360360208110156107d757600080fd5b81019080803590602001909291905050506118b6565b005b3480156107fb57600080fd5b50610804611a47565b6040518082815260200191505060405180910390f35b34801561082657600080fd5b5061085f6004803603604081101561083d57600080fd5b8101908080359060200190929190803515159060200190929190505050611a4d565b6040518082815260200191505060405180910390f35b34801561088157600080fd5b5061088a611b04565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156108c257600080fd5b5061090f600480360360408110156108d957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611b28565b005b34801561091d57600080fd5b50610926611c3c565b005b34801561093457600080fd5b506109776004803603602081101561094b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d1d565b60405180821515815260200191505060405180910390f35b34801561099b57600080fd5b506109c8600480360360208110156109b257600080fd5b8101908080359060200190929190505050611d73565b005b3480156109d657600080fd5b506109df611e45565b60405180821515815260200191505060405180910390f35b348015610a0357600080fd5b50610a4660048036036020811015610a1a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e58565b6040518082815260200191505060405180910390f35b348015610a6857600080fd5b50610a71611f43565b005b348015610a7f57600080fd5b50610a886120c9565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610ac057600080fd5b50610ac96120ef565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b0157600080fd5b50610b0a612118565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610b4a578082015181840152602081019050610b2f565b50505050905090810190601f168015610b775780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610b9157600080fd5b50610b9a6121ba565b6040518082815260200191505060405180910390f35b348015610bbc57600080fd5b50610be960048036036020811015610bd357600080fd5b81019080803590602001909291905050506121c0565b005b348015610bf757600080fd5b50610c4460048036036040811015610c0e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612292565b60405180821515815260200191505060405180910390f35b348015610c6857600080fd5b50610c7161235f565b005b348015610c7f57600080fd5b50610ccc60048036036040811015610c9657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061257c565b60405180821515815260200191505060405180910390f35b348015610cf057600080fd5b50610d3f60048036036040811015610d0757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080351515906020019092919050505061259a565b005b348015610d4d57600080fd5b50610d566126bd565b6040518082815260200191505060405180910390f35b348015610d7857600080fd5b50610d816126c7565b6040518082815260200191505060405180910390f35b348015610da357600080fd5b50610de660048036036020811015610dba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506126cd565b60405180821515815260200191505060405180910390f35b348015610e0a57600080fd5b50610e13612723565b60405180821515815260200191505060405180910390f35b348015610e3757600080fd5b50610e7a60048036036020811015610e4e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612736565b005b348015610e8857600080fd5b50610eb560048036036020811015610e9f57600080fd5b8101908080359060200190929190505050612842565b005b348015610ec357600080fd5b50610f2660048036036040811015610eda57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612a33565b6040518082815260200191505060405180910390f35b348015610f4857600080fd5b50610f7760048036036020811015610f5f57600080fd5b81019080803515159060200190929190505050612aba565b005b348015610f8557600080fd5b50610fc860048036036020811015610f9c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b9f565b005b348015610fd657600080fd5b5061101960048036036020811015610fed57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612f52565b005b34801561102757600080fd5b5061103061315d565b005b34801561103e57600080fd5b50611047613236565b6040518082815260200191505060405180910390f35b34801561106957600080fd5b506110ac6004803603602081101561108057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061323e565b005b606060118054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111465780601f1061111b57610100808354040283529160200191611146565b820191906000526020600020905b81548152906001019060200180831161112957829003601f168201915b5050505050905090565b600061116461115d6135c8565b84846135d0565b6001905092915050565b6000601054905090565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600e54905090565b6111ae6135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461126e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601d8190555050565b60006112858484846137c7565b611346846112916135c8565b61134185604051806060016040528060288152602001615dc460289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006112f76135c8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546142789092919063ffffffff16565b6135d0565b600190509392505050565b6000600f548211156113ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180615cdd602a913960400191505060405180910390fd5b60006113b8614338565b90506113cd818461436390919063ffffffff16565b915050919050565b6113dd6135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461149d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8151835114611514576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f417272617973206d75737420686176652073616d652073697a6500000000000081525060200191505060405180910390fd5b60005b83518110156116f05760016009600086848151811061153257fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555042600a600086848151811061159c57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e108202600d60008684815181106115f757fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611669633b9aca0085848151811061165357fe5b60200260200101516143ad90919063ffffffff16565b905080600b600087858151811061167c57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506116e2338684815181106116d257fe5b6020026020010151836000614433565b508080600101915050611517565b50505050565b6116fe6135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b81601a60006101000a81548160ff021916908315150217905550603c8102601b819055505050565b6000601360009054906101000a900460ff16905090565b60006118a661180a6135c8565b846118a1856005600061181b6135c8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546147f990919063ffffffff16565b6135d0565b6001905092915050565b60145481565b60006118c06135c8565b9050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611965576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180615e80602c913960400191505060405180910390fd5b600061197083614881565b505050505090506119c981600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148e890919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a2181600f546148e890919063ffffffff16565b600f81905550611a3c836010546147f990919063ffffffff16565b601081905550505050565b60155481565b6000600e54831115611ac7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b81611ae7576000611ad784614881565b5050505050905080915050611afe565b6000611af284614881565b50505050915050809150505b92915050565b7f000000000000000000000000d8fc410699bd0a2c2ddefd3842d8358dd3bdb45a81565b611b306135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bf0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b610e108102600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b611c446135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000611d0f30611e58565b9050611d1a81614932565b50565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611d7b6135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e3b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060148190555050565b601c60159054906101000a900460ff1681565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611ef357600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611f3e565b611f3b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611351565b90505b919050565b611f4b6135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461200b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060128054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156121b05780601f10612185576101008083540402835291602001916121b0565b820191906000526020600020905b81548152906001019060200180831161219357829003601f168201915b5050505050905090565b601b5481565b6121c86135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612288576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060158190555050565b600061235561229f6135c8565b8461235085604051806060016040528060258152602001615ecf60259139600560006122c96135c8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546142789092919063ffffffff16565b6135d0565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612405576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180615eac6023913960400191505060405180910390fd5b600254421161247c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f6e7472616374206973206c6f636b656420756e74696c203720646179730081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006125906125896135c8565b84846137c7565b6001905092915050565b6125a26135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612662576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600254905090565b60165481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601a60009054906101000a900460ff1681565b61273e6135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61284a6135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461290a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550804201600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612ac26135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b82576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601c60156101000a81548160ff02191690831515021790555050565b612ba76135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c67576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612d00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180615e5e6022913960400191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612dc0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115612e9457612e50600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611351565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612f5a6135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461301a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156130a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180615d076026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6131656135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613225576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600047905061323381614c16565b50565b600047905090565b6132466135c8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613306576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166133c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b60005b6008805490508110156135c4578173ffffffffffffffffffffffffffffffffffffffff16600882815481106133f957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156135b75760086001600880549050038154811061345557fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008828154811061348d57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600880548061357d57fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556135c4565b80806001019150506133c8565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613656576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180615e3a6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156136dc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180615d2d6022913960400191505060405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561384d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180615e156025913960400191505060405180910390fd5b600081116138a6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180615dec6029913960400191505060405180910390fd5b60011515601a60009054906101000a900460ff1615151480156138fc57506138cc6120ef565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561393b575061390b6120ef565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15613e24577f000000000000000000000000d8fc410699bd0a2c2ddefd3842d8358dd3bdb45a73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613a9b576000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442039050601b548111613a51576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f596f75206d7573742077616974206265747765656e207472616465730000000081525060200191505060405180910390fd5b42600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050613e23565b7f000000000000000000000000d8fc410699bd0a2c2ddefd3842d8358dd3bdb45a73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613bf6576000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442039050601b548111613bac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f596f75206d7573742077616974206265747765656e207472616465730000000081525060200191505060405180910390fd5b42600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050613e22565b7f000000000000000000000000d8fc410699bd0a2c2ddefd3842d8358dd3bdb45a73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015613c9e57507f000000000000000000000000d8fc410699bd0a2c2ddefd3842d8358dd3bdb45a73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15613e21576000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054420390506000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442039050601b5482118015613d415750601b5481115b613d96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180615d4f602c913960400191505060405180910390fd5b42600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555042600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505b5b5b5b60011515600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415614004576000600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442039050600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811015613fb157600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482613f5486611e58565b031015613fac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180615cac6031913960400191505060405180910390fd5b614002565b60001515600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a905050505b505b61400c6120ef565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561407a575061404a6120ef565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156140db57601d548111156140da576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180615d7b6028913960400191505060405180910390fd5b5b60006140e630611e58565b9050601d5481106140f757601d5490505b6000601e548210159050601c60149054906101000a900460ff1615801561412a5750601c60159054906101000a900460ff165b80156141335750805b801561418b57507f000000000000000000000000d8fc410699bd0a2c2ddefd3842d8358dd3bdb45a73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156141b35761419982614932565b600047905060008111156141b1576141b047614c16565b5b505b600060019050600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061425a5750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561426457600090505b61427086868684614433565b505050505050565b6000838311158290614325576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156142ea5780820151818401526020810190506142cf565b50505050905090810190601f1680156143175780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000806000614345614c82565b9150915061435c818361436390919063ffffffff16565b9250505090565b60006143a583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614f13565b905092915050565b6000808314156143c0576000905061442d565b60008284029050828482816143d157fe5b0414614428576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180615da36021913960400191505060405180910390fd5b809150505b92915050565b8061444157614440614fd9565b5b600061446b606461445d601654866143ad90919063ffffffff16565b61436390919063ffffffff16565b9050600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156145105750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561453757614532858561452d84876148e890919063ffffffff16565b61503b565b6147b6565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156145da5750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15614601576145fc85856145f784876148e890919063ffffffff16565b61529b565b6147b5565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156146a55750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156146cc576146c785856146c284876148e890919063ffffffff16565b6154fb565b6147b4565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561476e5750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561479557614790858561478b84876148e890919063ffffffff16565b6156c6565b6147b3565b6147b285856147ad84876148e890919063ffffffff16565b6154fb565b5b5b5b5b600060148190555060006015819055506147d2856000836154fb565b601754601481905550601954601581905550816147f2576147f16159bb565b5b5050505050565b600080828401905083811015614877576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600080600080600080600080600061489e8a6014546015546159d8565b92509250925060006148ae614338565b905060008060006148c08e8786615a6e565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061492a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250614278565b905092915050565b6001601c60146101000a81548160ff0219169083151502179055506060600267ffffffffffffffff8111801561496757600080fd5b506040519080825280602002602001820160405280156149965781602001602082028036833780820191505090505b50905030816000815181106149a757fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015614a4757600080fd5b505afa158015614a5b573d6000803e3d6000fd5b505050506040513d6020811015614a7157600080fd5b810190808051906020019092919050505081600181518110614a8f57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050614af4307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846135d0565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015614bb6578082015181840152602081019050614b9b565b505050509050019650505050505050600060405180830381600087803b158015614bdf57600080fd5b505af1158015614bf3573d6000803e3d6000fd5b50505050506000601c60146101000a81548160ff02191690831515021790555050565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015614c7e573d6000803e3d6000fd5b5050565b6000806000600f5490506000600e54905060005b600880549050811015614ed657826003600060088481548110614cb557fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180614d9c5750816004600060088481548110614d3457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15614db357600f54600e5494509450505050614f0f565b614e3c6003600060088481548110614dc757fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846148e890919063ffffffff16565b9250614ec76004600060088481548110614e5257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836148e890919063ffffffff16565b91508080600101915050614c96565b50614eee600e54600f5461436390919063ffffffff16565b821015614f0657600f54600e54935093505050614f0f565b81819350935050505b9091565b60008083118290614fbf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614f84578082015181840152602081019050614f69565b50505050905090810190601f168015614fb15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581614fcb57fe5b049050809150509392505050565b6000601454148015614fed57506000601554145b8015614ffb57506000601654145b1561500557615039565b6014546017819055506015546018819055506016546019819055506000601481905550600060158190555060006016819055505b565b60008060008060008061504d87614881565b9550955095509550955095506150ab87600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148e890919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061514086600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148e890919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506151d585600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546147f990919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061522181615acc565b61522b8483615c71565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b6000806000806000806152ad87614881565b95509550955095509550955061530b86600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148e890919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506153a083600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546147f990919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061543585600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546147f990919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061548181615acc565b61548b8483615c71565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b60008060008060008061550d87614881565b95509550955095509550955061556b86600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148e890919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061560085600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546147f990919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061564c81615acc565b6156568483615c71565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b6000806000806000806156d887614881565b95509550955095509550955061573687600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148e890919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506157cb86600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148e890919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061586083600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546147f990919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506158f585600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546147f990919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061594181615acc565b61594b8483615c71565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b601754601481905550601854601581905550601954601681905550565b600080600080615a0460646159f6888a6143ad90919063ffffffff16565b61436390919063ffffffff16565b90506000615a2e6064615a20888b6143ad90919063ffffffff16565b61436390919063ffffffff16565b90506000615a5782615a49858c6148e890919063ffffffff16565b6148e890919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080615a8785886143ad90919063ffffffff16565b90506000615a9e86886143ad90919063ffffffff16565b90506000615ab582846148e890919063ffffffff16565b905082818395509550955050505093509350939050565b6000615ad6614338565b90506000615aed82846143ad90919063ffffffff16565b9050615b4181600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546147f990919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615615c6c57615c2883600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546147f990919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b615c8682600f546148e890919063ffffffff16565b600f81905550615ca1816010546147f990919063ffffffff16565b601081905550505056fe596f75204d757374205761697420536f6d652054696d652046726f6d204f726967696e616c205472616e73616374696f6e416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373596f75204d757374205761697420536f6d652054696d65204265747765656e205472616e73616374696f6e735472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737357652063616e206e6f74206578636c75646520556e697377617020726f757465722e4578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6f636b45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122045fb1709a31e85a73883934f23bf2f32b057ed29d92260fab2c4d1467a59c4f364736f6c634300060c0033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000e2dec0750f92ea0971e4bd221471e272e9033c64

-----Decoded View---------------
Arg [0] : charityWalletAddress (address): 0xe2dEC0750F92eA0971e4bD221471e272E9033C64

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000e2dec0750f92ea0971e4bd221471e272e9033c64


Deployed Bytecode Sourcemap

26519:22427:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29547:91;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30551:173;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;31899:95;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;28102:51;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;29860:103;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;48819:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;30736:329;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;32907:269;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;47806:638;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;48628:171;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;29757:91;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;31077:230;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;27663:26;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;32006:405;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27701:30;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;32423:472;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;28164:38;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;48464:144;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;40007:168;;;;;;;;;;;;;:::i;:::-;;34776:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;47381:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;28245:30;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;29975:210;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16354:160;;;;;;;;;;;;;:::i;:::-;;28045:44;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15652:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;29650:95;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28005:27;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;47493:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;31319:281;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17461:313;;;;;;;;;;;;;:::i;:::-;;30197:179;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;31742:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16958:97;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;27742:27;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;31612:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;27956:38;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;47629:157;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17139:234;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;30388:151;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;40378:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;33188:475;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16686:260;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;40195:171;;;;;;;;;;;;;:::i;:::-;;47243:118;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;33675:522;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;29547:91;29584:13;29621:5;29614:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29547:91;:::o;30551:173::-;30626:4;30647:39;30656:12;:10;:12::i;:::-;30670:7;30679:6;30647:8;:39::i;:::-;30708:4;30701:11;;30551:173;;;;:::o;31899:95::-;31941:7;31972:10;;31965:17;;31899:95;:::o;28102:51::-;;;:::o;29860:103::-;29913:7;29944;;29937:14;;29860:103;:::o;48819:120::-;15900:12;:10;:12::i;:::-;15890:22;;:6;;;;;;;;;;:22;;;15882:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48916:11:::1;48901:12;:26;;;;48819:120:::0;:::o;30736:329::-;30834:4;30855:36;30865:6;30873:9;30884:6;30855:9;:36::i;:::-;30906:121;30915:6;30923:12;:10;:12::i;:::-;30937:89;30975:6;30937:89;;;;;;;;;;;;;;;;;:11;:19;30949:6;30937:19;;;;;;;;;;;;;;;:33;30957:12;:10;:12::i;:::-;30937:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;30906:8;:121::i;:::-;31049:4;31042:11;;30736:329;;;;;:::o;32907:269::-;32973:7;33016;;33005;:18;;32997:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33085:19;33108:10;:8;:10::i;:::-;33085:33;;33140:24;33152:11;33140:7;:11;;:24;;;;:::i;:::-;33133:31;;;32907:269;;;:::o;47806:638::-;15900:12;:10;:12::i;:::-;15890:22;;:6;;;;;;;;;;:22;;;15882:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47957:7:::1;:14;47936:10;:17;:35;47928:74;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;48021:6;48017:416;48036:10;:17;48033:1;:20;48017:416;;;48108:4;48078:12;:27;48091:10;48102:1;48091:13;;;;;;;;;;;;;;48078:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;48160:15;48131:11;:26;48143:10;48154:1;48143:13;;;;;;;;;;;;;;48131:26;;;;;;;;;;;;;;;:44;;;;48231:7;48224:4;:14;48194:12;:27;48207:10;48218:1;48207:13;;;;;;;;;;;;;;48194:27;;;;;;;;;;;;;;;:44;;;;48257:11;48271:21;48286:5;48271:7;48279:1;48271:10;;;;;;;;;;;;;;:14;;:21;;;;:::i;:::-;48257:35;;48342:3;48311:13;:28;48325:10;48336:1;48325:13;;;;;;;;;;;;;;48311:28;;;;;;;;;;;;;;;:34;;;;48364:53;48379:10;48391;48402:1;48391:13;;;;;;;;;;;;;;48406:3;48411:5;48364:14;:53::i;:::-;48017:416;48055:3;;;;;;;48017:416;;;;47806:638:::0;;;:::o;48628:171::-;15900:12;:10;:12::i;:::-;15890:22;;:6;;;;;;;;;;:22;;;15882:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48736:5:::1;48715:18;;:26;;;;;;;;;;;;;;;;;;48778:9;48771:4;:16;48756:12;:31;;;;48628:171:::0;;:::o;29757:91::-;29798:5;29827:9;;;;;;;;;;;29820:16;;29757:91;:::o;31077:230::-;31165:4;31186:83;31195:12;:10;:12::i;:::-;31209:7;31218:50;31257:10;31218:11;:25;31230:12;:10;:12::i;:::-;31218:25;;;;;;;;;;;;;;;:34;31244:7;31218:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;31186:8;:83::i;:::-;31291:4;31284:11;;31077:230;;;;:::o;27663:26::-;;;;:::o;32006:405::-;32062:14;32079:12;:10;:12::i;:::-;32062:29;;32115:11;:19;32127:6;32115:19;;;;;;;;;;;;;;;;;;;;;;;;;32114:20;32106:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32199:15;32223:19;32234:7;32223:10;:19::i;:::-;32198:44;;;;;;;32275:28;32295:7;32275;:15;32283:6;32275:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;32257:7;:15;32265:6;32257:15;;;;;;;;;;;;;;;:46;;;;32328:20;32340:7;32328;;:11;;:20;;;;:::i;:::-;32318:7;:30;;;;32376:23;32391:7;32376:10;;:14;;:23;;;;:::i;:::-;32363:10;:36;;;;32006:405;;;:::o;27701:30::-;;;;:::o;32423:472::-;32513:7;32556;;32545;:18;;32537:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32619:17;32614:270;;32658:15;32682:19;32693:7;32682:10;:19::i;:::-;32657:44;;;;;;;32727:7;32720:14;;;;;32614:270;32777:23;32808:19;32819:7;32808:10;:19::i;:::-;32775:52;;;;;;;32853:15;32846:22;;;32423:472;;;;;:::o;28164:38::-;;;:::o;48464:144::-;15900:12;:10;:12::i;:::-;15890:22;;:6;;;;;;;;;;:22;;;15882:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48589:7:::1;48582:4;:14;48557:12;:22;48570:8;48557:22;;;;;;;;;;;;;;;:39;;;;48464:144:::0;;:::o;40007:168::-;15900:12;:10;:12::i;:::-;15890:22;;:6;;;;;;;;;;:22;;;15882:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40065:23:::1;40091:24;40109:4;40091:9;:24::i;:::-;40065:50;;40130:33;40147:15;40130:16;:33::i;:::-;15964:1;40007:168::o:0;34776:131::-;34840:4;34868:18;:27;34887:7;34868:27;;;;;;;;;;;;;;;;;;;;;;;;;34861:34;;34776:131;;;:::o;47381:100::-;15900:12;:10;:12::i;:::-;15890:22;;:6;;;;;;;;;;:22;;;15882:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47463:6:::1;47453:7;:16;;;;47381:100:::0;:::o;28245:30::-;;;;;;;;;;;;;:::o;29975:210::-;30041:7;30069:11;:20;30081:7;30069:20;;;;;;;;;;;;;;;;;;;;;;;;;30065:49;;;30098:7;:16;30106:7;30098:16;;;;;;;;;;;;;;;;30091:23;;;;30065:49;30136:37;30156:7;:16;30164:7;30156:16;;;;;;;;;;;;;;;;30136:19;:37::i;:::-;30129:44;;29975:210;;;;:::o;16354:160::-;15900:12;:10;:12::i;:::-;15890:22;;:6;;;;;;;;;;:22;;;15882:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16465:1:::1;16428:40;;16449:6;::::0;::::1;;;;;;;;16428:40;;;;;;;;;;;;16500:1;16483:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;16354:160::o:0;28045:44::-;;;;;;;;;;;;;:::o;15652:87::-;15690:7;15721:6;;;;;;;;;;;15714:13;;15652:87;:::o;29650:95::-;29689:13;29726:7;29719:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29650:95;:::o;28005:27::-;;;;:::o;47493:116::-;15900:12;:10;:12::i;:::-;15890:22;;:6;;;;;;;;;;:22;;;15882:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47587:10:::1;47573:11;:24;;;;47493:116:::0;:::o;31319:281::-;31412:4;31433:129;31442:12;:10;:12::i;:::-;31456:7;31465:96;31504:15;31465:96;;;;;;;;;;;;;;;;;:11;:25;31477:12;:10;:12::i;:::-;31465:25;;;;;;;;;;;;;;;:34;31491:7;31465:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;31433:8;:129::i;:::-;31584:4;31577:11;;31319:281;;;;:::o;17461:313::-;17535:10;17517:28;;:14;;;;;;;;;;;:28;;;17509:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17614:9;;17608:3;:15;17600:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17709:14;;;;;;;;;;;17680:44;;17701:6;;;;;;;;;;17680:44;;;;;;;;;;;;17748:14;;;;;;;;;;;17739:6;;:23;;;;;;;;;;;;;;;;;;17461:313::o;30197:179::-;30275:4;30296:42;30306:12;:10;:12::i;:::-;30320:9;30331:6;30296:9;:42::i;:::-;30360:4;30353:11;;30197:179;;;;:::o;31742:145::-;15900:12;:10;:12::i;:::-;15890:22;;:6;;;;;;;;;;:22;;;15882:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31867:8:::1;31837:18;:27;31856:7;31837:27;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;31742:145:::0;;:::o;16958:97::-;17003:7;17034:9;;17027:16;;16958:97;:::o;27742:27::-;;;;:::o;31612:118::-;31670:4;31698:11;:20;31710:7;31698:20;;;;;;;;;;;;;;;;;;;;;;;;;31691:27;;31612:118;;;:::o;27956:38::-;;;;;;;;;;;;;:::o;47629:157::-;15900:12;:10;:12::i;:::-;15890:22;;:6;;;;;;;;;;:22;;;15882:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47754:20:::1;47730:21;;:44;;;;;;;;;;;;;;;;;;47629:157:::0;:::o;17139:234::-;15900:12;:10;:12::i;:::-;15890:22;;:6;;;;;;;;;;:22;;;15882:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17224:6:::1;::::0;::::1;;;;;;;;17207:14;;:23;;;;;;;;;;;;;;;;;;17262:1;17245:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;17297:4;17291:3;:10;17279:9;:22;;;;17358:1;17321:40;;17342:6;::::0;::::1;;;;;;;;17321:40;;;;;;;;;;;;17139:234:::0;:::o;30388:151::-;30469:7;30500:11;:18;30512:5;30500:18;;;;;;;;;;;;;;;:27;30519:7;30500:27;;;;;;;;;;;;;;;;30493:34;;30388:151;;;;:::o;40378:106::-;15900:12;:10;:12::i;:::-;15890:22;;:6;;;;;;;;;;:22;;;15882:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40465:7:::1;40451:11;;:21;;;;;;;;;;;;;;;;;;40378:106:::0;:::o;33188:475::-;15900:12;:10;:12::i;:::-;15890:22;;:6;;;;;;;;;;:22;;;15882:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33284:42:::1;33273:53;;:7;:53;;;;33265:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33389:11;:20;33401:7;33389:20;;;;;;;;;;;;;;;;;;;;;;;;;33388:21;33380:61;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;33478:1;33459:7;:16;33467:7;33459:16;;;;;;;;;;;;;;;;:20;33456:116;;;33519:37;33539:7;:16;33547:7;33539:16;;;;;;;;;;;;;;;;33519:19;:37::i;:::-;33500:7;:16;33508:7;33500:16;;;;;;;;;;;;;;;:56;;;;33456:116;33609:4;33586:11;:20;33598:7;33586:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;33628:9;33643:7;33628:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33188:475:::0;:::o;16686:260::-;15900:12;:10;:12::i;:::-;15890:22;;:6;;;;;;;;;;:22;;;15882:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16799:1:::1;16779:22;;:8;:22;;;;16771:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16893:8;16864:38;;16885:6;::::0;::::1;;;;;;;;16864:38;;;;;;;;;;;;16926:8;16917:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;16686:260:::0;:::o;40195:171::-;15900:12;:10;:12::i;:::-;15890:22;;:6;;;;;;;;;;:22;;;15882:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40253:26:::1;40282:21;40253:50;;40318:36;40335:18;40318:16;:36::i;:::-;15964:1;40195:171::o:0;47243:118::-;47289:15;47328:21;47321:28;;47243:118;:::o;33675:522::-;15900:12;:10;:12::i;:::-;15890:22;;:6;;;;;;;;;;:22;;;15882:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33760:11:::1;:20;33772:7;33760:20;;;;;;;;;;;;;;;;;;;;;;;;;33752:60;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;33832:9;33827:359;33851:9;:16;;;;33847:1;:20;33827:359;;;33913:7;33897:23;;:9;33907:1;33897:12;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;33893:278;;;33960:9;33989:1;33970:9;:16;;;;:20;33960:31;;;;;;;;;;;;;;;;;;;;;;;;;33945:9;33955:1;33945:12;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;34033:1;34014:7;:16;34022:7;34014:16;;;;;;;;;;;;;;;:20;;;;34080:5;34057:11;:20;34069:7;34057:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;34108:9;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34146:5;;33893:278;33869:3;;;;;;;33827:359;;;;33675:522:::0;:::o;109:114::-;162:15;201:10;194:17;;109:114;:::o;34919:357::-;35033:1;35016:19;;:5;:19;;;;35008:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35118:1;35099:21;;:7;:21;;;;35091:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35206:6;35176:11;:18;35188:5;35176:18;;;;;;;;;;;;;;;:27;35195:7;35176:27;;;;;;;;;;;;;;;:36;;;;35248:7;35232:32;;35241:5;35232:32;;;35257:6;35232:32;;;;;;;;;;;;;;;;;;34919:357;;;:::o;35288:3746::-;35407:1;35389:20;;:6;:20;;;;35381:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35483:1;35474:6;:10;35466:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35570:4;35548:26;;:18;;;;;;;;;;;:26;;;:47;;;;;35588:7;:5;:7::i;:::-;35578:17;;:6;:17;;;;35548:47;:71;;;;;35612:7;:5;:7::i;:::-;35599:20;;:9;:20;;;;35548:71;35545:1195;;;35652:13;35642:23;;:6;:23;;;35639:1086;;;35689:18;35728:8;:19;35737:9;35728:19;;;;;;;;;;;;;;;;35710:15;:37;35689:58;;35791:12;;35778:10;:25;35770:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35880:15;35858:8;:19;35867:9;35858:19;;;;;;;;;;;;;;;:37;;;;35639:1086;;;;35954:13;35941:26;;:9;:26;;;35938:787;;;35991:18;36030:8;:16;36039:6;36030:16;;;;;;;;;;;;;;;;36012:15;:34;35991:55;;36090:12;;36077:10;:25;36069:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36176:15;36157:8;:16;36166:6;36157:16;;;;;;;;;;;;;;;:34;;;;35938:787;;;;36247:13;36237:23;;:6;:23;;;;:53;;;;;36277:13;36264:26;;:9;:26;;;;36237:53;36234:491;;;36314:19;36354:8;:16;36363:6;36354:16;;;;;;;;;;;;;;;;36336:15;:34;36314:56;;36393:19;36433:8;:19;36442:9;36433:19;;;;;;;;;;;;;;;;36415:15;:37;36393:59;;36497:12;;36483:11;:26;:56;;;;;36527:12;;36513:11;:26;36483:56;36475:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36630:15;36611:8;:16;36620:6;36611:16;;;;;;;;;;;;;;;:34;;;;36690:15;36668:8;:19;36677:9;36668:19;;;;;;;;;;;;;;;:37;;;;36234:491;;;35938:787;35639:1086;35545:1195;36885:4;36861:28;;:12;:20;36874:6;36861:20;;;;;;;;;;;;;;;;;;;;;;;;;:28;;;36858:452;;;36910:27;36958:11;:19;36970:6;36958:19;;;;;;;;;;;;;;;;36940:15;:37;36910:67;;37021:12;:20;37034:6;37021:20;;;;;;;;;;;;;;;;36999:19;:42;36996:299;;;37105:13;:21;37119:6;37105:21;;;;;;;;;;;;;;;;37094:6;37074:17;37084:6;37074:9;:17::i;:::-;:26;37073:53;;37065:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36996:299;;;37270:5;37246:29;;:12;:20;37259:6;37246:20;;;;;;;;;;;;;;;;;;;;;;;;:29;36996:299;36858:452;;37337:7;:5;:7::i;:::-;37327:17;;:6;:17;;;;:41;;;;;37361:7;:5;:7::i;:::-;37348:20;;:9;:20;;;;37327:41;37324:138;;;37405:12;;37395:6;:22;;37387:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37324:138;37748:28;37779:24;37797:4;37779:9;:24::i;:::-;37748:55;;37859:12;;37835:20;:36;37832:124;;37928:12;;37905:35;;37832:124;37984:24;38035:32;;38011:20;:56;;37984:83;;38087:6;;;;;;;;;;;38086:7;:22;;;;;38097:11;;;;;;;;;;;38086:22;:45;;;;;38112:19;38086:45;:72;;;;;38145:13;38135:23;;:6;:23;;;;38086:72;38082:458;;;38272:38;38289:20;38272:16;:38::i;:::-;38347:26;38376:21;38347:50;;38440:1;38419:18;:22;38416:109;;;38466:39;38483:21;38466:16;:39::i;:::-;38416:109;38082:458;;38633:12;38648:4;38633:19;;38772:18;:26;38791:6;38772:26;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;38802:18;:29;38821:9;38802:29;;;;;;;;;;;;;;;;;;;;;;;;;38772:59;38769:113;;;38861:5;38851:15;;38769:113;38975:47;38990:6;38997:9;39007:6;39014:7;38975:14;:47::i;:::-;35288:3746;;;;;;:::o;4636:208::-;4722:7;4759:1;4754;:6;;4762:12;4746:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4790:9;4806:1;4802;:5;4790:17;;4831:1;4824:8;;;4636:208;;;;;:::o;46215:175::-;46256:7;46281:15;46298;46317:19;:17;:19::i;:::-;46280:56;;;;46358:20;46370:7;46358;:11;;:20;;;;:::i;:::-;46351:27;;;;46215:175;:::o;6166:140::-;6224:7;6255:39;6259:1;6262;6255:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;6248:46;;6166:140;;;;:::o;5138:511::-;5196:7;5462:1;5457;:6;5453:55;;;5491:1;5484:8;;;;5453:55;5524:9;5540:1;5536;:5;5524:17;;5573:1;5568;5564;:5;;;;;;:10;5556:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5636:1;5629:8;;;5138:511;;;;;:::o;40504:1322::-;40620:7;40616:44;;40646:14;:12;:14::i;:::-;40616:44;40689:15;40707:29;40732:3;40707:20;40718:8;;40707:6;:10;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;40689:47;;40757:11;:19;40769:6;40757:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;40781:11;:22;40793:9;40781:22;;;;;;;;;;;;;;;;;;;;;;;;;40780:23;40757:46;40753:702;;;40824:61;40846:6;40854:9;40865:19;40876:7;40865:6;:10;;:19;;;;:::i;:::-;40824:21;:61::i;:::-;40753:702;;;40912:11;:19;40924:6;40912:19;;;;;;;;;;;;;;;;;;;;;;;;;40911:20;:46;;;;;40935:11;:22;40947:9;40935:22;;;;;;;;;;;;;;;;;;;;;;;;;40911:46;40907:548;;;40978:59;40998:6;41006:9;41017:19;41028:7;41017:6;:10;;:19;;;;:::i;:::-;40978;:59::i;:::-;40907:548;;;41064:11;:19;41076:6;41064:19;;;;;;;;;;;;;;;;;;;;;;;;;41063:20;:47;;;;;41088:11;:22;41100:9;41088:22;;;;;;;;;;;;;;;;;;;;;;;;;41087:23;41063:47;41059:396;;;41131:57;41149:6;41157:9;41168:19;41179:7;41168:6;:10;;:19;;;;:::i;:::-;41131:17;:57::i;:::-;41059:396;;;41214:11;:19;41226:6;41214:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;41237:11;:22;41249:9;41237:22;;;;;;;;;;;;;;;;;;;;;;;;;41214:45;41210:245;;;41280:61;41302:6;41310:9;41321:19;41332:7;41321:6;:10;;:19;;;;:::i;:::-;41280:21;:61::i;:::-;41210:245;;;41382:57;41400:6;41408:9;41419:19;41430:7;41419:6;:10;;:19;;;;:::i;:::-;41382:17;:57::i;:::-;41210:245;41059:396;40907:548;40753:702;41535:1;41525:7;:11;;;;41565:1;41551:11;:15;;;;41595:46;41613:6;41629:1;41633:7;41595:17;:46::i;:::-;41680:15;;41670:7;:25;;;;41724:16;;41710:11;:30;;;;41773:7;41769:45;;41799:15;:13;:15::i;:::-;41769:45;40504:1322;;;;;:::o;3639:197::-;3697:7;3721:9;3737:1;3733;:5;3721:17;;3766:1;3761;:6;;3753:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3823:1;3816:8;;;3639:197;;;;:::o;44949:490::-;45008:7;45017;45026;45035;45044;45053;45078:23;45103:12;45117:16;45137:42;45149:7;45158;;45167:11;;45137;:42::i;:::-;45077:102;;;;;;45194:19;45217:10;:8;:10::i;:::-;45194:33;;45243:15;45260:23;45285:12;45301:39;45313:7;45322:4;45328:11;45301;:39::i;:::-;45242:98;;;;;;45363:7;45372:15;45389:4;45395:15;45412:4;45418:8;45355:72;;;;;;;;;;;;;;;;;;;44949:490;;;;;;;:::o;4154:144::-;4212:7;4243:43;4247:1;4250;4243:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;4236:50;;4154:144;;;;:::o;39046:656::-;28600:4;28591:6;;:13;;;;;;;;;;;;;;;;;;39191:21:::1;39229:1;39215:16;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39191:40;;39264:4;39246;39251:1;39246:7;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;39294:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;39284:4;39289:1;39284:7;;;;;;;;;;;;;:32;;;;;;;;;::::0;::::1;39333:62;39350:4;39365:15;39383:11;39333:8;:62::i;:::-;39442:15;:66;;;39527:11;39557:1;39605:4;39636;39660:15;39442:248;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;28619:1;28644:5:::0;28635:6;;:14;;;;;;;;;;;;;;;;;;39046:656;:::o;39722:115::-;39787:21;;;;;;;;;;;:30;;:38;39818:6;39787:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39722:115;:::o;46402:601::-;46452:7;46461;46485:15;46503:7;;46485:25;;46525:15;46543:7;;46525:25;;46576:9;46571:305;46595:9;:16;;;;46591:1;:20;46571:305;;;46665:7;46641;:21;46649:9;46659:1;46649:12;;;;;;;;;;;;;;;;;;;;;;;;;46641:21;;;;;;;;;;;;;;;;:31;:66;;;;46700:7;46676;:21;46684:9;46694:1;46684:12;;;;;;;;;;;;;;;;;;;;;;;;;46676:21;;;;;;;;;;;;;;;;:31;46641:66;46637:97;;;46717:7;;46726;;46709:25;;;;;;;;;46637:97;46763:34;46775:7;:21;46783:9;46793:1;46783:12;;;;;;;;;;;;;;;;;;;;;;;;;46775:21;;;;;;;;;;;;;;;;46763:7;:11;;:34;;;;:::i;:::-;46753:44;;46826:34;46838:7;:21;46846:9;46856:1;46846:12;;;;;;;;;;;;;;;;;;;;;;;;;46838:21;;;;;;;;;;;;;;;;46826:7;:11;;:34;;;;:::i;:::-;46816:44;;46613:3;;;;;;;46571:305;;;;46904:20;46916:7;;46904;;:11;;:20;;;;:::i;:::-;46894:7;:30;46890:61;;;46934:7;;46943;;46926:25;;;;;;;;46890:61;46974:7;46983;46966:25;;;;;;46402:601;;;:::o;6843:298::-;6929:7;6965:1;6961;:5;6968:12;6953:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6996:9;7012:1;7008;:5;;;;;;6996:17;;7128:1;7121:8;;;6843:298;;;;;:::o;34209:360::-;34270:1;34259:7;;:12;:32;;;;;34290:1;34275:11;;:16;34259:32;:49;;;;;34307:1;34295:8;;:13;34259:49;34256:61;;;34310:7;;34256:61;34363:7;;34345:15;:25;;;;34407:11;;34385:19;:33;;;;34452:8;;34433:16;:27;;;;34499:1;34489:7;:11;;;;34529:1;34515:11;:15;;;;34556:1;34545:8;:12;;;;34209:360;:::o;43004:593::-;43111:15;43128:23;43153:12;43167:23;43192:12;43206:16;43226:19;43237:7;43226:10;:19::i;:::-;43110:135;;;;;;;;;;;;43278:28;43298:7;43278;:15;43286:6;43278:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;43260:7;:15;43268:6;43260:15;;;;;;;;;;;;;;;:46;;;;43339:28;43359:7;43339;:15;43347:6;43339:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;43321:7;:15;43329:6;43321:15;;;;;;;;;;;;;;;:46;;;;43403:39;43426:15;43403:7;:18;43411:9;43403:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;43382:7;:18;43390:9;43382:18;;;;;;;;;;;;;;;:60;;;;43458:22;43471:8;43458:12;:22::i;:::-;43498:23;43510:4;43516;43498:11;:23::i;:::-;43558:9;43541:44;;43550:6;43541:44;;;43569:15;43541:44;;;;;;;;;;;;;;;;;;43004:593;;;;;;;;;:::o;42376:616::-;42481:15;42498:23;42523:12;42537:23;42562:12;42576:16;42596:19;42607:7;42596:10;:19::i;:::-;42480:135;;;;;;;;;;;;42648:28;42668:7;42648;:15;42656:6;42648:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;42630:7;:15;42638:6;42630:15;;;;;;;;;;;;;;;:46;;;;42712:39;42735:15;42712:7;:18;42720:9;42712:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;42691:7;:18;42699:9;42691:18;;;;;;;;;;;;;;;:60;;;;42787:39;42810:15;42787:7;:18;42795:9;42787:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;42766:7;:18;42774:9;42766:18;;;;;;;;;;;;;;;:60;;;;42845:22;42858:8;42845:12;:22::i;:::-;42893:23;42905:4;42911;42893:11;:23::i;:::-;42953:9;42936:44;;42945:6;42936:44;;;42964:15;42936:44;;;;;;;;;;;;;;;;;;42376:616;;;;;;;;;:::o;41838:526::-;41941:15;41958:23;41983:12;41997:23;42022:12;42036:16;42056:19;42067:7;42056:10;:19::i;:::-;41940:135;;;;;;;;;;;;42108:28;42128:7;42108;:15;42116:6;42108:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;42090:7;:15;42098:6;42090:15;;;;;;;;;;;;;;;:46;;;;42172:39;42195:15;42172:7;:18;42180:9;42172:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;42151:7;:18;42159:9;42151:18;;;;;;;;;;;;;;;:60;;;;42227:22;42240:8;42227:12;:22::i;:::-;42265:23;42277:4;42283;42265:11;:23::i;:::-;42325:9;42308:44;;42317:6;42308:44;;;42336:15;42308:44;;;;;;;;;;;;;;;;;;41838:526;;;;;;;;;:::o;43609:676::-;43716:15;43733:23;43758:12;43772:23;43797:12;43811:16;43831:19;43842:7;43831:10;:19::i;:::-;43715:135;;;;;;;;;;;;43883:28;43903:7;43883;:15;43891:6;43883:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;43865:7;:15;43873:6;43865:15;;;;;;;;;;;;;;;:46;;;;43944:28;43964:7;43944;:15;43952:6;43944:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;43926:7;:15;43934:6;43926:15;;;;;;;;;;;;;;;:46;;;;44008:39;44031:15;44008:7;:18;44016:9;44008:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;43987:7;:18;43995:9;43987:18;;;;;;;;;;;;;;;:60;;;;44083:39;44106:15;44083:7;:18;44091:9;44083:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;44062:7;:18;44070:9;44062:18;;;;;;;;;;;;;;;:60;;;;44140:22;44153:8;44140:12;:22::i;:::-;44186:23;44198:4;44204;44186:11;:23::i;:::-;44246:9;44229:44;;44238:6;44229:44;;;44257:15;44229:44;;;;;;;;;;;;;;;;;;43609:676;;;;;;;;;:::o;34585:175::-;34643:15;;34633:7;:25;;;;34687:19;;34673:11;:33;;;;34732:16;;34721:8;:27;;;;34585:175::o;45451:386::-;45547:7;45556;45565;45589:12;45604:28;45628:3;45604:19;45616:6;45604:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;45589:43;;45647:16;45666:32;45694:3;45666:23;45678:10;45666:7;:11;;:23;;;;:::i;:::-;:27;;:32;;;;:::i;:::-;45647:51;;45713:23;45739:31;45761:8;45739:17;45751:4;45739:7;:11;;:17;;;;:::i;:::-;:21;;:31;;;;:::i;:::-;45713:57;;45793:15;45810:4;45816:8;45785:40;;;;;;;;;45451:386;;;;;;;:::o;45849:354::-;45944:7;45953;45962;45986:15;46004:24;46016:11;46004:7;:11;;:24;;;;:::i;:::-;45986:42;;46043:12;46058:21;46067:11;46058:4;:8;;:21;;;;:::i;:::-;46043:36;;46094:23;46120:17;46132:4;46120:7;:11;;:17;;;;:::i;:::-;46094:43;;46160:7;46169:15;46186:4;46152:39;;;;;;;;;45849:354;;;;;;;:::o;44297:367::-;44360:19;44383:10;:8;:10::i;:::-;44360:33;;44408:16;44427:25;44440:11;44427:8;:12;;:25;;;;:::i;:::-;44408:44;;44492:36;44519:8;44492:7;:22;44508:4;44492:22;;;;;;;;;;;;;;;;:26;;:36;;;;:::i;:::-;44467:7;:22;44483:4;44467:22;;;;;;;;;;;;;;;:61;;;;44546:11;:26;44566:4;44546:26;;;;;;;;;;;;;;;;;;;;;;;;;44543:109;;;44616:36;44643:8;44616:7;:22;44632:4;44616:22;;;;;;;;;;;;;;;;:26;;:36;;;;:::i;:::-;44591:7;:22;44607:4;44591:22;;;;;;;;;;;;;;;:61;;;;44543:109;44297:367;;;:::o;44676:159::-;44758:17;44770:4;44758:7;;:11;;:17;;;;:::i;:::-;44748:7;:27;;;;44803:20;44818:4;44803:10;;:14;;:20;;;;:::i;:::-;44790:10;:33;;;;44676:159;;:::o

Swarm Source

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