Token FTD

 

Overview ERC20

Price
$0.00 @ 0.000000 ETH
Fully Diluted Market Cap
Total Supply:
9,999,791.148353 FTD

Holders:
53,492 addresses
Contract:
0x449D62e1e7Ca187727D147cCf827a9472D0Bfb140x449D62e1e7Ca187727D147cCf827a9472D0Bfb14

Decimals:
18

Social Profiles:
Not Available, Update ?

Balance
0.001 FTD

Value
$0.00
0x9e70ee9d101602421f470247f517bc4b94c9e7aa
Loading
[ Download CSV Export  ] 
Loading
[ Download CSV Export  ] 
Loading

Click here to update the token ICO / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
FTD

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Arbiscan.io on 2023-05-18
*/

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

library Address {

    function isContract(address account) internal view returns (bool) {
        uint256 size;
        // solhint-disable-next-line no-inline-assembly
        assembly { size := extcodesize(account) }
        return size > 0;
    }

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

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

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

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

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


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

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

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

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

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

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

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

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

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

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

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

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

   
    function transfer(address recipient, uint256 amount)
        external
        returns (bool);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

interface IERC20Metadata is IERC20 {
    // 返回代币名称
    function name() external view returns (string memory);

    // 返回代币符号
    function symbol() external view returns (string memory);

    // 返回代币的精度(小数位数)
    function decimals() external view returns (uint8);
}

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

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

abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual 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 {
        _transferOwnership(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");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5.05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address to, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * NOTE: Does not update the allowance if the current allowance
     * is the maximum `uint256`.
     *
     * Requirements:
     *
     * - `from` and `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `from` to `to`.
     *
     * This internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     */
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
            // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by
            // decrementing then incrementing.
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

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

        _totalSupply += amount;
        unchecked {
            // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
            _balances[account] += amount;
        }
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

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

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _totalSupply -= amount;
        }

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

    /**
     * @dev Updates `owner` s allowance for `spender` based on spent `amount`.
     *
     * Does not update the allowance amount in case of infinite allowance.
     * Revert if not enough allowance is available.
     *
     * Might emit an {Approval} event.
     */
    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    /**
     * @dev Hook that is called after any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * has been transferred to `to`.
     * - when `from` is zero, `amount` tokens have been minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens have been burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

abstract contract ERC20Burnable is Context, ERC20 {
    /**
     * @dev Destroys `amount` tokens from the caller.
     *
     * See {ERC20-_burn}.
     */
    function burn(uint256 amount) public virtual {
        _burn(_msgSender(), amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, deducting from the caller's
     * allowance.
     *
     * See {ERC20-_burn} and {ERC20-allowance}.
     *
     * Requirements:
     *
     * - the caller must have allowance for ``accounts``'s tokens of at least
     * `amount`.
     */
    function burnFrom(address account, uint256 amount) public virtual {
        _spendAllowance(account, _msgSender(), amount);
        _burn(account, amount);
    }
}

contract FTD is  ERC20Burnable,Ownable {
    using SafeMath for uint256;
   
    address private holder;
    mapping(address => bool) public isTxFeeExempt;
    mapping(address => bool) public isMarketPair;
    mapping(address => bool) public isMarketRouter;
    
    uint256 constant _baseFee = 100;
    uint256 public _fee = 2; 
    
    //mainnet
    address router = address(0xc873fEcbd354f5A56E00E710B90EF4201db2448d);
    address public camelotPair;

    modifier onlyHolder(){
        require(msg.sender==holder,"FTD: INVALID");
        _;
    }

    constructor() ERC20("FTD","FTD") {
        holder = msg.sender;
        isMarketRouter[address(router)] = true;
        isTxFeeExempt[msg.sender] = true;
        isTxFeeExempt[address(this)] = true;

        _mint(msg.sender, 10000000 * 10 **18);
        _approve(address(this), address(router), type(uint256).max);
    }       

    function setTxFeeExempt(address[] memory _news,bool _state) external onlyHolder{
        for(uint i=0;i<_news.length;i++){
            isTxFeeExempt[_news[i]] = _state;
        }
    }

    function setPair(address _new) external  onlyHolder {
        camelotPair = _new;
        isMarketPair[address(camelotPair)] = true;
    }

    function setHolder(address _new)  external onlyHolder{
        holder = _new;
    }   

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual override{
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        uint256 finalAmount = takeFinalAmount(sender, recipient, amount);
        super._transfer(sender,recipient,finalAmount);
    }

    function takeFinalAmount(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (uint256) {
        if (isTxFeeExempt[sender] || isTxFeeExempt[recipient]) {
            return amount;
        }
        if (isMarketPair[recipient] || 
            (isMarketPair[sender] || isMarketRouter[sender])) {
            uint256 feeAmount = amount.mul(_fee).div(_baseFee);
            amount = amount.sub(feeAmount);
            super._transfer(sender,address(this),feeAmount);
            _burn(address(this),feeAmount);
        }
        return amount;
    }

    function donateERC20(address tokenAddress, uint256 amount) external onlyHolder {
        require(tokenAddress != address(0),'tokenAddress can not a Zero address');
        IERC20 token = IERC20(tokenAddress);
        token.transfer(holder,amount);
    }

    function donateBNB() external onlyHolder {
        payable(holder).transfer(address(this).balance);
    }
    
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","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":"_fee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"camelotPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"donateBNB","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"donateERC20","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":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketRouter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_new","type":"address"}],"name":"setHolder","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_new","type":"address"}],"name":"setPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_news","type":"address[]"},{"internalType":"bool","name":"_state","type":"bool"}],"name":"setTxFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","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"}]

60806040526002600a5573c873fecbd354f5a56e00e710b90ef4201db2448d600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200006b57600080fd5b506040518060400160405280600381526020017f46544400000000000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f46544400000000000000000000000000000000000000000000000000000000008152508160039081620000e9919062000991565b508060049081620000fb919062000991565b5050506200011e620001126200030160201b60201c565b6200030960201b60201c565b33600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160096000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620002a6336a084595161401484a000000620003cf60201b60201c565b620002fb30600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200053c60201b60201c565b62000cc3565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000441576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004389062000ad9565b60405180910390fd5b62000455600083836200070d60201b60201c565b806002600082825462000469919062000b2a565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200051c919062000b76565b60405180910390a362000538600083836200071260201b60201c565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620005ae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005a59062000c09565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000620576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006179062000ca1565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000700919062000b76565b60405180910390a3505050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200079957607f821691505b602082108103620007af57620007ae62000751565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620008197fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620007da565b620008258683620007da565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620008726200086c62000866846200083d565b62000847565b6200083d565b9050919050565b6000819050919050565b6200088e8362000851565b620008a66200089d8262000879565b848454620007e7565b825550505050565b600090565b620008bd620008ae565b620008ca81848462000883565b505050565b5b81811015620008f257620008e6600082620008b3565b600181019050620008d0565b5050565b601f82111562000941576200090b81620007b5565b6200091684620007ca565b8101602085101562000926578190505b6200093e6200093585620007ca565b830182620008cf565b50505b505050565b600082821c905092915050565b6000620009666000198460080262000946565b1980831691505092915050565b600062000981838362000953565b9150826002028217905092915050565b6200099c8262000717565b67ffffffffffffffff811115620009b857620009b762000722565b5b620009c4825462000780565b620009d1828285620008f6565b600060209050601f83116001811462000a095760008415620009f4578287015190505b62000a00858262000973565b86555062000a70565b601f19841662000a1986620007b5565b60005b8281101562000a435784890151825560018201915060208501945060208101905062000a1c565b8683101562000a63578489015162000a5f601f89168262000953565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000ac1601f8362000a78565b915062000ace8262000a89565b602082019050919050565b6000602082019050818103600083015262000af48162000ab2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000b37826200083d565b915062000b44836200083d565b925082820190508082111562000b5f5762000b5e62000afb565b5b92915050565b62000b70816200083d565b82525050565b600060208201905062000b8d600083018462000b65565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600062000bf160248362000a78565b915062000bfe8262000b93565b604082019050919050565b6000602082019050818103600083015262000c248162000be2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600062000c8960228362000a78565b915062000c968262000c2b565b604082019050919050565b6000602082019050818103600083015262000cbc8162000c7a565b9050919050565b612c3e8062000cd36000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c806379cc6790116100de578063a9059cbb11610097578063dd62ed3e11610071578063dd62ed3e14610497578063e61554b9146104c7578063ef99fb02146104e5578063f2fde38b146105015761018e565b8063a9059cbb1461042d578063c5b37c221461045d578063d979f5aa1461047b5761018e565b806379cc67901461036d5780638187f516146103895780638da5cb5b146103a557806395d89b41146103c3578063a457c2d7146103e1578063a4605533146104115761018e565b8063313ce5671161014b57806342966c681161012557806342966c68146102e757806365e54ef11461030357806370a0823114610333578063715018a6146103635761018e565b8063313ce5671461026957806339509351146102875780633ecad271146102b75761018e565b806306fdde0314610193578063095ea7b3146101b1578063130f2d71146101e157806318160ddd1461021157806323b872dd1461022f57806324fee4901461025f575b600080fd5b61019b61051d565b6040516101a89190611d7b565b60405180910390f35b6101cb60048036038101906101c69190611e45565b6105af565b6040516101d89190611ea0565b60405180910390f35b6101fb60048036038101906101f69190611ebb565b6105d2565b6040516102089190611ea0565b60405180910390f35b6102196105f2565b6040516102269190611ef7565b60405180910390f35b61024960048036038101906102449190611f12565b6105fc565b6040516102569190611ea0565b60405180910390f35b61026761062b565b005b610271610726565b60405161027e9190611f81565b60405180910390f35b6102a1600480360381019061029c9190611e45565b61072f565b6040516102ae9190611ea0565b60405180910390f35b6102d160048036038101906102cc9190611ebb565b610766565b6040516102de9190611ea0565b60405180910390f35b61030160048036038101906102fc9190611f9c565b610786565b005b61031d60048036038101906103189190611ebb565b61079a565b60405161032a9190611ea0565b60405180910390f35b61034d60048036038101906103489190611ebb565b6107ba565b60405161035a9190611ef7565b60405180910390f35b61036b610802565b005b61038760048036038101906103829190611e45565b61088a565b005b6103a3600480360381019061039e9190611ebb565b6108aa565b005b6103ad6109f8565b6040516103ba9190611fd8565b60405180910390f35b6103cb610a22565b6040516103d89190611d7b565b60405180910390f35b6103fb60048036038101906103f69190611e45565b610ab4565b6040516104089190611ea0565b60405180910390f35b61042b60048036038101906104269190612167565b610b2b565b005b61044760048036038101906104429190611e45565b610c50565b6040516104549190611ea0565b60405180910390f35b610465610c73565b6040516104729190611ef7565b60405180910390f35b61049560048036038101906104909190611ebb565b610c79565b005b6104b160048036038101906104ac91906121c3565b610d4d565b6040516104be9190611ef7565b60405180910390f35b6104cf610dd4565b6040516104dc9190611fd8565b60405180910390f35b6104ff60048036038101906104fa9190611e45565b610dfa565b005b61051b60048036038101906105169190611ebb565b610fa4565b005b60606003805461052c90612232565b80601f016020809104026020016040519081016040528092919081815260200182805461055890612232565b80156105a55780601f1061057a576101008083540402835291602001916105a5565b820191906000526020600020905b81548152906001019060200180831161058857829003601f168201915b5050505050905090565b6000806105ba61109b565b90506105c78185856110a3565b600191505092915050565b60096020528060005260406000206000915054906101000a900460ff1681565b6000600254905090565b60008061060761109b565b905061061485828561126c565b61061f8585856112f8565b60019150509392505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b2906122af565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610723573d6000803e3d6000fd5b50565b60006012905090565b60008061073a61109b565b905061075b81858561074c8589610d4d565b61075691906122fe565b6110a3565b600191505092915050565b60086020528060005260406000206000915054906101000a900460ff1681565b61079761079161109b565b826113f6565b50565b60076020528060005260406000206000915054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61080a61109b565b73ffffffffffffffffffffffffffffffffffffffff166108286109f8565b73ffffffffffffffffffffffffffffffffffffffff161461087e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108759061237e565b60405180910390fd5b61088860006115c3565b565b61089c8261089661109b565b8361126c565b6108a682826113f6565b5050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461093a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610931906122af565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610a3190612232565b80601f0160208091040260200160405190810160405280929190818152602001828054610a5d90612232565b8015610aaa5780601f10610a7f57610100808354040283529160200191610aaa565b820191906000526020600020905b815481529060010190602001808311610a8d57829003601f168201915b5050505050905090565b600080610abf61109b565b90506000610acd8286610d4d565b905083811015610b12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0990612410565b60405180910390fd5b610b1f82868684036110a3565b60019250505092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb2906122af565b60405180910390fd5b60005b8251811015610c4b578160076000858481518110610bdf57610bde612430565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610c439061245f565b915050610bbe565b505050565b600080610c5b61109b565b9050610c688185856112f8565b600191505092915050565b600a5481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d00906122af565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e81906122af565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ef9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef090612519565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401610f5b929190612539565b6020604051808303816000875af1158015610f7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9e9190612577565b50505050565b610fac61109b565b73ffffffffffffffffffffffffffffffffffffffff16610fca6109f8565b73ffffffffffffffffffffffffffffffffffffffff1614611020576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110179061237e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361108f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108690612616565b60405180910390fd5b611098816115c3565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611112576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611109906126a8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611181576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111789061273a565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161125f9190611ef7565b60405180910390a3505050565b60006112788484610d4d565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146112f257818110156112e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112db906127a6565b60405180910390fd5b6112f184848484036110a3565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611367576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135e90612838565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cd906128ca565b60405180910390fd5b60006113e3848484611689565b90506113f0848483611896565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611465576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145c9061295c565b60405180910390fd5b61147182600083611b0c565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156114f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ee906129ee565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516115aa9190611ef7565b60405180910390a36115be83600084611b11565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061172c5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156117395781905061188f565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061182e5750600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061182d5750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b5b1561188b57600061185d606461184f600a5486611b1690919063ffffffff16565b611b9090919063ffffffff16565b90506118728184611bda90919063ffffffff16565b925061187f853083611896565b61188930826113f6565b505b8190505b9392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611905576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fc90612838565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611974576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196b906128ca565b60405180910390fd5b61197f838383611b0c565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611a05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119fc90612a80565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611af39190611ef7565b60405180910390a3611b06848484611b11565b50505050565b505050565b505050565b6000808303611b285760009050611b8a565b60008284611b369190612aa0565b9050828482611b459190612b11565b14611b85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7c90612bb4565b60405180910390fd5b809150505b92915050565b6000611bd283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611c24565b905092915050565b6000611c1c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c87565b905092915050565b60008083118290611c6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c629190611d7b565b60405180910390fd5b5060008385611c7a9190612b11565b9050809150509392505050565b6000838311158290611ccf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc69190611d7b565b60405180910390fd5b5060008385611cde9190612bd4565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611d25578082015181840152602081019050611d0a565b60008484015250505050565b6000601f19601f8301169050919050565b6000611d4d82611ceb565b611d578185611cf6565b9350611d67818560208601611d07565b611d7081611d31565b840191505092915050565b60006020820190508181036000830152611d958184611d42565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611ddc82611db1565b9050919050565b611dec81611dd1565b8114611df757600080fd5b50565b600081359050611e0981611de3565b92915050565b6000819050919050565b611e2281611e0f565b8114611e2d57600080fd5b50565b600081359050611e3f81611e19565b92915050565b60008060408385031215611e5c57611e5b611da7565b5b6000611e6a85828601611dfa565b9250506020611e7b85828601611e30565b9150509250929050565b60008115159050919050565b611e9a81611e85565b82525050565b6000602082019050611eb56000830184611e91565b92915050565b600060208284031215611ed157611ed0611da7565b5b6000611edf84828501611dfa565b91505092915050565b611ef181611e0f565b82525050565b6000602082019050611f0c6000830184611ee8565b92915050565b600080600060608486031215611f2b57611f2a611da7565b5b6000611f3986828701611dfa565b9350506020611f4a86828701611dfa565b9250506040611f5b86828701611e30565b9150509250925092565b600060ff82169050919050565b611f7b81611f65565b82525050565b6000602082019050611f966000830184611f72565b92915050565b600060208284031215611fb257611fb1611da7565b5b6000611fc084828501611e30565b91505092915050565b611fd281611dd1565b82525050565b6000602082019050611fed6000830184611fc9565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61203082611d31565b810181811067ffffffffffffffff8211171561204f5761204e611ff8565b5b80604052505050565b6000612062611d9d565b905061206e8282612027565b919050565b600067ffffffffffffffff82111561208e5761208d611ff8565b5b602082029050602081019050919050565b600080fd5b60006120b76120b284612073565b612058565b905080838252602082019050602084028301858111156120da576120d961209f565b5b835b8181101561210357806120ef8882611dfa565b8452602084019350506020810190506120dc565b5050509392505050565b600082601f83011261212257612121611ff3565b5b81356121328482602086016120a4565b91505092915050565b61214481611e85565b811461214f57600080fd5b50565b6000813590506121618161213b565b92915050565b6000806040838503121561217e5761217d611da7565b5b600083013567ffffffffffffffff81111561219c5761219b611dac565b5b6121a88582860161210d565b92505060206121b985828601612152565b9150509250929050565b600080604083850312156121da576121d9611da7565b5b60006121e885828601611dfa565b92505060206121f985828601611dfa565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061224a57607f821691505b60208210810361225d5761225c612203565b5b50919050565b7f4654443a20494e56414c49440000000000000000000000000000000000000000600082015250565b6000612299600c83611cf6565b91506122a482612263565b602082019050919050565b600060208201905081810360008301526122c88161228c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061230982611e0f565b915061231483611e0f565b925082820190508082111561232c5761232b6122cf565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612368602083611cf6565b915061237382612332565b602082019050919050565b600060208201905081810360008301526123978161235b565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006123fa602583611cf6565b91506124058261239e565b604082019050919050565b60006020820190508181036000830152612429816123ed565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061246a82611e0f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361249c5761249b6122cf565b5b600182019050919050565b7f746f6b656e416464726573732063616e206e6f742061205a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612503602383611cf6565b915061250e826124a7565b604082019050919050565b60006020820190508181036000830152612532816124f6565b9050919050565b600060408201905061254e6000830185611fc9565b61255b6020830184611ee8565b9392505050565b6000815190506125718161213b565b92915050565b60006020828403121561258d5761258c611da7565b5b600061259b84828501612562565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612600602683611cf6565b915061260b826125a4565b604082019050919050565b6000602082019050818103600083015261262f816125f3565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612692602483611cf6565b915061269d82612636565b604082019050919050565b600060208201905081810360008301526126c181612685565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612724602283611cf6565b915061272f826126c8565b604082019050919050565b6000602082019050818103600083015261275381612717565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000612790601d83611cf6565b915061279b8261275a565b602082019050919050565b600060208201905081810360008301526127bf81612783565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612822602583611cf6565b915061282d826127c6565b604082019050919050565b6000602082019050818103600083015261285181612815565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006128b4602383611cf6565b91506128bf82612858565b604082019050919050565b600060208201905081810360008301526128e3816128a7565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000612946602183611cf6565b9150612951826128ea565b604082019050919050565b6000602082019050818103600083015261297581612939565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b60006129d8602283611cf6565b91506129e38261297c565b604082019050919050565b60006020820190508181036000830152612a07816129cb565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612a6a602683611cf6565b9150612a7582612a0e565b604082019050919050565b60006020820190508181036000830152612a9981612a5d565b9050919050565b6000612aab82611e0f565b9150612ab683611e0f565b9250828202612ac481611e0f565b91508282048414831517612adb57612ada6122cf565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612b1c82611e0f565b9150612b2783611e0f565b925082612b3757612b36612ae2565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000612b9e602183611cf6565b9150612ba982612b42565b604082019050919050565b60006020820190508181036000830152612bcd81612b91565b9050919050565b6000612bdf82611e0f565b9150612bea83611e0f565b9250828203905081811115612c0257612c016122cf565b5b9291505056fea264697066735822122056d18f907a272419d06239f7ed2c2cf447f74203023bd27b7e10e9b1a5d0de2864736f6c63430008120033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061018e5760003560e01c806379cc6790116100de578063a9059cbb11610097578063dd62ed3e11610071578063dd62ed3e14610497578063e61554b9146104c7578063ef99fb02146104e5578063f2fde38b146105015761018e565b8063a9059cbb1461042d578063c5b37c221461045d578063d979f5aa1461047b5761018e565b806379cc67901461036d5780638187f516146103895780638da5cb5b146103a557806395d89b41146103c3578063a457c2d7146103e1578063a4605533146104115761018e565b8063313ce5671161014b57806342966c681161012557806342966c68146102e757806365e54ef11461030357806370a0823114610333578063715018a6146103635761018e565b8063313ce5671461026957806339509351146102875780633ecad271146102b75761018e565b806306fdde0314610193578063095ea7b3146101b1578063130f2d71146101e157806318160ddd1461021157806323b872dd1461022f57806324fee4901461025f575b600080fd5b61019b61051d565b6040516101a89190611d7b565b60405180910390f35b6101cb60048036038101906101c69190611e45565b6105af565b6040516101d89190611ea0565b60405180910390f35b6101fb60048036038101906101f69190611ebb565b6105d2565b6040516102089190611ea0565b60405180910390f35b6102196105f2565b6040516102269190611ef7565b60405180910390f35b61024960048036038101906102449190611f12565b6105fc565b6040516102569190611ea0565b60405180910390f35b61026761062b565b005b610271610726565b60405161027e9190611f81565b60405180910390f35b6102a1600480360381019061029c9190611e45565b61072f565b6040516102ae9190611ea0565b60405180910390f35b6102d160048036038101906102cc9190611ebb565b610766565b6040516102de9190611ea0565b60405180910390f35b61030160048036038101906102fc9190611f9c565b610786565b005b61031d60048036038101906103189190611ebb565b61079a565b60405161032a9190611ea0565b60405180910390f35b61034d60048036038101906103489190611ebb565b6107ba565b60405161035a9190611ef7565b60405180910390f35b61036b610802565b005b61038760048036038101906103829190611e45565b61088a565b005b6103a3600480360381019061039e9190611ebb565b6108aa565b005b6103ad6109f8565b6040516103ba9190611fd8565b60405180910390f35b6103cb610a22565b6040516103d89190611d7b565b60405180910390f35b6103fb60048036038101906103f69190611e45565b610ab4565b6040516104089190611ea0565b60405180910390f35b61042b60048036038101906104269190612167565b610b2b565b005b61044760048036038101906104429190611e45565b610c50565b6040516104549190611ea0565b60405180910390f35b610465610c73565b6040516104729190611ef7565b60405180910390f35b61049560048036038101906104909190611ebb565b610c79565b005b6104b160048036038101906104ac91906121c3565b610d4d565b6040516104be9190611ef7565b60405180910390f35b6104cf610dd4565b6040516104dc9190611fd8565b60405180910390f35b6104ff60048036038101906104fa9190611e45565b610dfa565b005b61051b60048036038101906105169190611ebb565b610fa4565b005b60606003805461052c90612232565b80601f016020809104026020016040519081016040528092919081815260200182805461055890612232565b80156105a55780601f1061057a576101008083540402835291602001916105a5565b820191906000526020600020905b81548152906001019060200180831161058857829003601f168201915b5050505050905090565b6000806105ba61109b565b90506105c78185856110a3565b600191505092915050565b60096020528060005260406000206000915054906101000a900460ff1681565b6000600254905090565b60008061060761109b565b905061061485828561126c565b61061f8585856112f8565b60019150509392505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b2906122af565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610723573d6000803e3d6000fd5b50565b60006012905090565b60008061073a61109b565b905061075b81858561074c8589610d4d565b61075691906122fe565b6110a3565b600191505092915050565b60086020528060005260406000206000915054906101000a900460ff1681565b61079761079161109b565b826113f6565b50565b60076020528060005260406000206000915054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61080a61109b565b73ffffffffffffffffffffffffffffffffffffffff166108286109f8565b73ffffffffffffffffffffffffffffffffffffffff161461087e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108759061237e565b60405180910390fd5b61088860006115c3565b565b61089c8261089661109b565b8361126c565b6108a682826113f6565b5050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461093a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610931906122af565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610a3190612232565b80601f0160208091040260200160405190810160405280929190818152602001828054610a5d90612232565b8015610aaa5780601f10610a7f57610100808354040283529160200191610aaa565b820191906000526020600020905b815481529060010190602001808311610a8d57829003601f168201915b5050505050905090565b600080610abf61109b565b90506000610acd8286610d4d565b905083811015610b12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0990612410565b60405180910390fd5b610b1f82868684036110a3565b60019250505092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb2906122af565b60405180910390fd5b60005b8251811015610c4b578160076000858481518110610bdf57610bde612430565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610c439061245f565b915050610bbe565b505050565b600080610c5b61109b565b9050610c688185856112f8565b600191505092915050565b600a5481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d00906122af565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e81906122af565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ef9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef090612519565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401610f5b929190612539565b6020604051808303816000875af1158015610f7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9e9190612577565b50505050565b610fac61109b565b73ffffffffffffffffffffffffffffffffffffffff16610fca6109f8565b73ffffffffffffffffffffffffffffffffffffffff1614611020576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110179061237e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361108f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108690612616565b60405180910390fd5b611098816115c3565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611112576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611109906126a8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611181576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111789061273a565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161125f9190611ef7565b60405180910390a3505050565b60006112788484610d4d565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146112f257818110156112e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112db906127a6565b60405180910390fd5b6112f184848484036110a3565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611367576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135e90612838565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cd906128ca565b60405180910390fd5b60006113e3848484611689565b90506113f0848483611896565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611465576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145c9061295c565b60405180910390fd5b61147182600083611b0c565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156114f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ee906129ee565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516115aa9190611ef7565b60405180910390a36115be83600084611b11565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061172c5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156117395781905061188f565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061182e5750600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061182d5750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b5b1561188b57600061185d606461184f600a5486611b1690919063ffffffff16565b611b9090919063ffffffff16565b90506118728184611bda90919063ffffffff16565b925061187f853083611896565b61188930826113f6565b505b8190505b9392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611905576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fc90612838565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611974576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196b906128ca565b60405180910390fd5b61197f838383611b0c565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611a05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119fc90612a80565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611af39190611ef7565b60405180910390a3611b06848484611b11565b50505050565b505050565b505050565b6000808303611b285760009050611b8a565b60008284611b369190612aa0565b9050828482611b459190612b11565b14611b85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7c90612bb4565b60405180910390fd5b809150505b92915050565b6000611bd283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611c24565b905092915050565b6000611c1c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c87565b905092915050565b60008083118290611c6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c629190611d7b565b60405180910390fd5b5060008385611c7a9190612b11565b9050809150509392505050565b6000838311158290611ccf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc69190611d7b565b60405180910390fd5b5060008385611cde9190612bd4565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611d25578082015181840152602081019050611d0a565b60008484015250505050565b6000601f19601f8301169050919050565b6000611d4d82611ceb565b611d578185611cf6565b9350611d67818560208601611d07565b611d7081611d31565b840191505092915050565b60006020820190508181036000830152611d958184611d42565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611ddc82611db1565b9050919050565b611dec81611dd1565b8114611df757600080fd5b50565b600081359050611e0981611de3565b92915050565b6000819050919050565b611e2281611e0f565b8114611e2d57600080fd5b50565b600081359050611e3f81611e19565b92915050565b60008060408385031215611e5c57611e5b611da7565b5b6000611e6a85828601611dfa565b9250506020611e7b85828601611e30565b9150509250929050565b60008115159050919050565b611e9a81611e85565b82525050565b6000602082019050611eb56000830184611e91565b92915050565b600060208284031215611ed157611ed0611da7565b5b6000611edf84828501611dfa565b91505092915050565b611ef181611e0f565b82525050565b6000602082019050611f0c6000830184611ee8565b92915050565b600080600060608486031215611f2b57611f2a611da7565b5b6000611f3986828701611dfa565b9350506020611f4a86828701611dfa565b9250506040611f5b86828701611e30565b9150509250925092565b600060ff82169050919050565b611f7b81611f65565b82525050565b6000602082019050611f966000830184611f72565b92915050565b600060208284031215611fb257611fb1611da7565b5b6000611fc084828501611e30565b91505092915050565b611fd281611dd1565b82525050565b6000602082019050611fed6000830184611fc9565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61203082611d31565b810181811067ffffffffffffffff8211171561204f5761204e611ff8565b5b80604052505050565b6000612062611d9d565b905061206e8282612027565b919050565b600067ffffffffffffffff82111561208e5761208d611ff8565b5b602082029050602081019050919050565b600080fd5b60006120b76120b284612073565b612058565b905080838252602082019050602084028301858111156120da576120d961209f565b5b835b8181101561210357806120ef8882611dfa565b8452602084019350506020810190506120dc565b5050509392505050565b600082601f83011261212257612121611ff3565b5b81356121328482602086016120a4565b91505092915050565b61214481611e85565b811461214f57600080fd5b50565b6000813590506121618161213b565b92915050565b6000806040838503121561217e5761217d611da7565b5b600083013567ffffffffffffffff81111561219c5761219b611dac565b5b6121a88582860161210d565b92505060206121b985828601612152565b9150509250929050565b600080604083850312156121da576121d9611da7565b5b60006121e885828601611dfa565b92505060206121f985828601611dfa565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061224a57607f821691505b60208210810361225d5761225c612203565b5b50919050565b7f4654443a20494e56414c49440000000000000000000000000000000000000000600082015250565b6000612299600c83611cf6565b91506122a482612263565b602082019050919050565b600060208201905081810360008301526122c88161228c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061230982611e0f565b915061231483611e0f565b925082820190508082111561232c5761232b6122cf565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612368602083611cf6565b915061237382612332565b602082019050919050565b600060208201905081810360008301526123978161235b565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006123fa602583611cf6565b91506124058261239e565b604082019050919050565b60006020820190508181036000830152612429816123ed565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061246a82611e0f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361249c5761249b6122cf565b5b600182019050919050565b7f746f6b656e416464726573732063616e206e6f742061205a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612503602383611cf6565b915061250e826124a7565b604082019050919050565b60006020820190508181036000830152612532816124f6565b9050919050565b600060408201905061254e6000830185611fc9565b61255b6020830184611ee8565b9392505050565b6000815190506125718161213b565b92915050565b60006020828403121561258d5761258c611da7565b5b600061259b84828501612562565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612600602683611cf6565b915061260b826125a4565b604082019050919050565b6000602082019050818103600083015261262f816125f3565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612692602483611cf6565b915061269d82612636565b604082019050919050565b600060208201905081810360008301526126c181612685565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612724602283611cf6565b915061272f826126c8565b604082019050919050565b6000602082019050818103600083015261275381612717565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000612790601d83611cf6565b915061279b8261275a565b602082019050919050565b600060208201905081810360008301526127bf81612783565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612822602583611cf6565b915061282d826127c6565b604082019050919050565b6000602082019050818103600083015261285181612815565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006128b4602383611cf6565b91506128bf82612858565b604082019050919050565b600060208201905081810360008301526128e3816128a7565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000612946602183611cf6565b9150612951826128ea565b604082019050919050565b6000602082019050818103600083015261297581612939565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b60006129d8602283611cf6565b91506129e38261297c565b604082019050919050565b60006020820190508181036000830152612a07816129cb565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612a6a602683611cf6565b9150612a7582612a0e565b604082019050919050565b60006020820190508181036000830152612a9981612a5d565b9050919050565b6000612aab82611e0f565b9150612ab683611e0f565b9250828202612ac481611e0f565b91508282048414831517612adb57612ada6122cf565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612b1c82611e0f565b9150612b2783611e0f565b925082612b3757612b36612ae2565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000612b9e602183611cf6565b9150612ba982612b42565b604082019050919050565b60006020820190508181036000830152612bcd81612b91565b9050919050565b6000612bdf82611e0f565b9150612bea83611e0f565b9250828203905081811115612c0257612c016122cf565b5b9291505056fea264697066735822122056d18f907a272419d06239f7ed2c2cf447f74203023bd27b7e10e9b1a5d0de2864736f6c63430008120033

Deployed ByteCode Sourcemap

20301:2798:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8367:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10718:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20517:46;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9487:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11499:295;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22983:107;;;:::i;:::-;;9329:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12203:238;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20466:44;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19720:91;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20414:45;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9658:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6770:103;;;:::i;:::-;;20130:164;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21418:141;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6119:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8586:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12944:436;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21222:188;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9991:193;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20614:23;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21567:85;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10247:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20741:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22718:257;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7028:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8367:100;8421:13;8454:5;8447:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8367:100;:::o;10718:201::-;10801:4;10818:13;10834:12;:10;:12::i;:::-;10818:28;;10857:32;10866:5;10873:7;10882:6;10857:8;:32::i;:::-;10907:4;10900:11;;;10718:201;;;;:::o;20517:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;9487:108::-;9548:7;9575:12;;9568:19;;9487:108;:::o;11499:295::-;11630:4;11647:15;11665:12;:10;:12::i;:::-;11647:30;;11688:38;11704:4;11710:7;11719:6;11688:15;:38::i;:::-;11737:27;11747:4;11753:2;11757:6;11737:9;:27::i;:::-;11782:4;11775:11;;;11499:295;;;;;:::o;22983:107::-;20828:6;;;;;;;;;;;20816:18;;:10;:18;;;20808:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;23043:6:::1;;;;;;;;;;;23035:24;;:47;23060:21;23035:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;22983:107::o:0;9329:93::-;9387:5;9412:2;9405:9;;9329:93;:::o;12203:238::-;12291:4;12308:13;12324:12;:10;:12::i;:::-;12308:28;;12347:64;12356:5;12363:7;12400:10;12372:25;12382:5;12389:7;12372:9;:25::i;:::-;:38;;;;:::i;:::-;12347:8;:64::i;:::-;12429:4;12422:11;;;12203:238;;;;:::o;20466:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;19720:91::-;19776:27;19782:12;:10;:12::i;:::-;19796:6;19776:5;:27::i;:::-;19720:91;:::o;20414:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;9658:127::-;9732:7;9759:9;:18;9769:7;9759:18;;;;;;;;;;;;;;;;9752:25;;9658:127;;;:::o;6770:103::-;6350:12;:10;:12::i;:::-;6339:23;;:7;:5;:7::i;:::-;:23;;;6331:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6835:30:::1;6862:1;6835:18;:30::i;:::-;6770:103::o:0;20130:164::-;20207:46;20223:7;20232:12;:10;:12::i;:::-;20246:6;20207:15;:46::i;:::-;20264:22;20270:7;20279:6;20264:5;:22::i;:::-;20130:164;;:::o;21418:141::-;20828:6;;;;;;;;;;;20816:18;;:10;:18;;;20808:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;21495:4:::1;21481:11;;:18;;;;;;;;;;;;;;;;;;21547:4;21510:12;:34;21531:11;;;;;;;;;;;21510:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;21418:141:::0;:::o;6119:87::-;6165:7;6192:6;;;;;;;;;;;6185:13;;6119:87;:::o;8586:104::-;8642:13;8675:7;8668:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8586:104;:::o;12944:436::-;13037:4;13054:13;13070:12;:10;:12::i;:::-;13054:28;;13093:24;13120:25;13130:5;13137:7;13120:9;:25::i;:::-;13093:52;;13184:15;13164:16;:35;;13156:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;13277:60;13286:5;13293:7;13321:15;13302:16;:34;13277:8;:60::i;:::-;13368:4;13361:11;;;;12944:436;;;;:::o;21222:188::-;20828:6;;;;;;;;;;;20816:18;;:10;:18;;;20808:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;21316:6:::1;21312:91;21327:5;:12;21325:1;:14;21312:91;;;21385:6;21359:13;:23;21373:5;21379:1;21373:8;;;;;;;;:::i;:::-;;;;;;;;21359:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;21340:3;;;;;:::i;:::-;;;;21312:91;;;;21222:188:::0;;:::o;9991:193::-;10070:4;10087:13;10103:12;:10;:12::i;:::-;10087:28;;10126;10136:5;10143:2;10147:6;10126:9;:28::i;:::-;10172:4;10165:11;;;9991:193;;;;:::o;20614:23::-;;;;:::o;21567:85::-;20828:6;;;;;;;;;;;20816:18;;:10;:18;;;20808:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;21640:4:::1;21631:6;;:13;;;;;;;;;;;;;;;;;;21567:85:::0;:::o;10247:151::-;10336:7;10363:11;:18;10375:5;10363:18;;;;;;;;;;;;;;;:27;10382:7;10363:27;;;;;;;;;;;;;;;;10356:34;;10247:151;;;;:::o;20741:26::-;;;;;;;;;;;;;:::o;22718:257::-;20828:6;;;;;;;;;;;20816:18;;:10;:18;;;20808:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;22840:1:::1;22816:26;;:12;:26;;::::0;22808:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;22892:12;22914;22892:35;;22938:5;:14;;;22953:6;;;;;;;;;;;22960;22938:29;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22797:178;22718:257:::0;;:::o;7028:201::-;6350:12;:10;:12::i;:::-;6339:23;;:7;:5;:7::i;:::-;:23;;;6331:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7137:1:::1;7117:22;;:8;:22;;::::0;7109:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;7193:28;7212:8;7193:18;:28::i;:::-;7028:201:::0;:::o;5493:98::-;5546:7;5573:10;5566:17;;5493:98;:::o;16971:380::-;17124:1;17107:19;;:5;:19;;;17099:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17205:1;17186:21;;:7;:21;;;17178:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17289:6;17259:11;:18;17271:5;17259:18;;;;;;;;;;;;;;;:27;17278:7;17259:27;;;;;;;;;;;;;;;:36;;;;17327:7;17311:32;;17320:5;17311:32;;;17336:6;17311:32;;;;;;:::i;:::-;;;;;;;;16971:380;;;:::o;17642:453::-;17777:24;17804:25;17814:5;17821:7;17804:9;:25::i;:::-;17777:52;;17864:17;17844:16;:37;17840:248;;17926:6;17906:16;:26;;17898:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18010:51;18019:5;18026:7;18054:6;18035:16;:25;18010:8;:51::i;:::-;17840:248;17766:329;17642:453;;;:::o;21663:431::-;21829:1;21811:20;;:6;:20;;;21803:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;21913:1;21892:23;;:9;:23;;;21884:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;21966:19;21988:42;22004:6;22012:9;22023:6;21988:15;:42::i;:::-;21966:64;;22041:45;22057:6;22064:9;22074:11;22041:15;:45::i;:::-;21792:302;21663:431;;;:::o;15858:675::-;15961:1;15942:21;;:7;:21;;;15934:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16014:49;16035:7;16052:1;16056:6;16014:20;:49::i;:::-;16076:22;16101:9;:18;16111:7;16101:18;;;;;;;;;;;;;;;;16076:43;;16156:6;16138:14;:24;;16130:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;16275:6;16258:14;:23;16237:9;:18;16247:7;16237:18;;;;;;;;;;;;;;;:44;;;;16392:6;16376:12;;:22;;;;;;;;;;;16453:1;16427:37;;16436:7;16427:37;;;16457:6;16427:37;;;;;;:::i;:::-;;;;;;;;16477:48;16497:7;16514:1;16518:6;16477:19;:48::i;:::-;15923:610;15858:675;;:::o;7389:191::-;7463:16;7482:6;;;;;;;;;;;7463:25;;7508:8;7499:6;;:17;;;;;;;;;;;;;;;;;;7563:8;7532:40;;7553:8;7532:40;;;;;;;;;;;;7452:128;7389:191;:::o;22102:608::-;22230:7;22254:13;:21;22268:6;22254:21;;;;;;;;;;;;;;;;;;;;;;;;;:49;;;;22279:13;:24;22293:9;22279:24;;;;;;;;;;;;;;;;;;;;;;;;;22254:49;22250:95;;;22327:6;22320:13;;;;22250:95;22359:12;:23;22372:9;22359:23;;;;;;;;;;;;;;;;;;;;;;;;;:89;;;;22401:12;:20;22414:6;22401:20;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;22425:14;:22;22440:6;22425:22;;;;;;;;;;;;;;;;;;;;;;;;;22401:46;22359:89;22355:324;;;22465:17;22485:30;20604:3;22485:16;22496:4;;22485:6;:10;;:16;;;;:::i;:::-;:20;;:30;;;;:::i;:::-;22465:50;;22539:21;22550:9;22539:6;:10;;:21;;;;:::i;:::-;22530:30;;22575:47;22591:6;22606:4;22612:9;22575:15;:47::i;:::-;22637:30;22651:4;22657:9;22637:5;:30::i;:::-;22450:229;22355:324;22696:6;22689:13;;22102:608;;;;;;:::o;13850:840::-;13997:1;13981:18;;:4;:18;;;13973:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14074:1;14060:16;;:2;:16;;;14052:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;14129:38;14150:4;14156:2;14160:6;14129:20;:38::i;:::-;14180:19;14202:9;:15;14212:4;14202:15;;;;;;;;;;;;;;;;14180:37;;14251:6;14236:11;:21;;14228:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;14368:6;14354:11;:20;14336:9;:15;14346:4;14336:15;;;;;;;;;;;;;;;:38;;;;14571:6;14554:9;:13;14564:2;14554:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;14621:2;14606:26;;14615:4;14606:26;;;14625:6;14606:26;;;;;;:::i;:::-;;;;;;;;14645:37;14665:4;14671:2;14675:6;14645:19;:37::i;:::-;13962:728;13850:840;;;:::o;18695:125::-;;;;:::o;19424:124::-;;;;:::o;3260:246::-;3318:7;3347:1;3342;:6;3338:47;;3372:1;3365:8;;;;3338:47;3395:9;3411:1;3407;:5;;;;:::i;:::-;3395:17;;3440:1;3435;3431;:5;;;;:::i;:::-;:10;3423:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3497:1;3490:8;;;3260:246;;;;;:::o;3514:132::-;3572:7;3599:39;3603:1;3606;3599:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3592:46;;3514:132;;;;:::o;2882:136::-;2940:7;2967:43;2971:1;2974;2967:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2960:50;;2882:136;;;;:::o;3654:319::-;3774:7;3806:1;3802;:5;3809:12;3794:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3833:9;3849:1;3845;:5;;;;:::i;:::-;3833:17;;3964:1;3957:8;;;3654:319;;;;;:::o;3026:226::-;3146:7;3179:1;3174;:6;;3182:12;3166:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3206:9;3222:1;3218;:5;;;;:::i;:::-;3206:17;;3243:1;3236:8;;;3026:226;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:118::-;3868:24;3886:5;3868:24;:::i;:::-;3863:3;3856:37;3781:118;;:::o;3905:222::-;3998:4;4036:2;4025:9;4021:18;4013:26;;4049:71;4117:1;4106:9;4102:17;4093:6;4049:71;:::i;:::-;3905:222;;;;:::o;4133:619::-;4210:6;4218;4226;4275:2;4263:9;4254:7;4250:23;4246:32;4243:119;;;4281:79;;:::i;:::-;4243:119;4401:1;4426:53;4471:7;4462:6;4451:9;4447:22;4426:53;:::i;:::-;4416:63;;4372:117;4528:2;4554:53;4599:7;4590:6;4579:9;4575:22;4554:53;:::i;:::-;4544:63;;4499:118;4656:2;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4627:118;4133:619;;;;;:::o;4758:86::-;4793:7;4833:4;4826:5;4822:16;4811:27;;4758:86;;;:::o;4850:112::-;4933:22;4949:5;4933:22;:::i;:::-;4928:3;4921:35;4850:112;;:::o;4968:214::-;5057:4;5095:2;5084:9;5080:18;5072:26;;5108:67;5172:1;5161:9;5157:17;5148:6;5108:67;:::i;:::-;4968:214;;;;:::o;5188:329::-;5247:6;5296:2;5284:9;5275:7;5271:23;5267:32;5264:119;;;5302:79;;:::i;:::-;5264:119;5422:1;5447:53;5492:7;5483:6;5472:9;5468:22;5447:53;:::i;:::-;5437:63;;5393:117;5188:329;;;;:::o;5523:118::-;5610:24;5628:5;5610:24;:::i;:::-;5605:3;5598:37;5523:118;;:::o;5647:222::-;5740:4;5778:2;5767:9;5763:18;5755:26;;5791:71;5859:1;5848:9;5844:17;5835:6;5791:71;:::i;:::-;5647:222;;;;:::o;5875:117::-;5984:1;5981;5974:12;5998:180;6046:77;6043:1;6036:88;6143:4;6140:1;6133:15;6167:4;6164:1;6157:15;6184:281;6267:27;6289:4;6267:27;:::i;:::-;6259:6;6255:40;6397:6;6385:10;6382:22;6361:18;6349:10;6346:34;6343:62;6340:88;;;6408:18;;:::i;:::-;6340:88;6448:10;6444:2;6437:22;6227:238;6184:281;;:::o;6471:129::-;6505:6;6532:20;;:::i;:::-;6522:30;;6561:33;6589:4;6581:6;6561:33;:::i;:::-;6471:129;;;:::o;6606:311::-;6683:4;6773:18;6765:6;6762:30;6759:56;;;6795:18;;:::i;:::-;6759:56;6845:4;6837:6;6833:17;6825:25;;6905:4;6899;6895:15;6887:23;;6606:311;;;:::o;6923:117::-;7032:1;7029;7022:12;7063:710;7159:5;7184:81;7200:64;7257:6;7200:64;:::i;:::-;7184:81;:::i;:::-;7175:90;;7285:5;7314:6;7307:5;7300:21;7348:4;7341:5;7337:16;7330:23;;7401:4;7393:6;7389:17;7381:6;7377:30;7430:3;7422:6;7419:15;7416:122;;;7449:79;;:::i;:::-;7416:122;7564:6;7547:220;7581:6;7576:3;7573:15;7547:220;;;7656:3;7685:37;7718:3;7706:10;7685:37;:::i;:::-;7680:3;7673:50;7752:4;7747:3;7743:14;7736:21;;7623:144;7607:4;7602:3;7598:14;7591:21;;7547:220;;;7551:21;7165:608;;7063:710;;;;;:::o;7796:370::-;7867:5;7916:3;7909:4;7901:6;7897:17;7893:27;7883:122;;7924:79;;:::i;:::-;7883:122;8041:6;8028:20;8066:94;8156:3;8148:6;8141:4;8133:6;8129:17;8066:94;:::i;:::-;8057:103;;7873:293;7796:370;;;;:::o;8172:116::-;8242:21;8257:5;8242:21;:::i;:::-;8235:5;8232:32;8222:60;;8278:1;8275;8268:12;8222:60;8172:116;:::o;8294:133::-;8337:5;8375:6;8362:20;8353:29;;8391:30;8415:5;8391:30;:::i;:::-;8294:133;;;;:::o;8433:678::-;8523:6;8531;8580:2;8568:9;8559:7;8555:23;8551:32;8548:119;;;8586:79;;:::i;:::-;8548:119;8734:1;8723:9;8719:17;8706:31;8764:18;8756:6;8753:30;8750:117;;;8786:79;;:::i;:::-;8750:117;8891:78;8961:7;8952:6;8941:9;8937:22;8891:78;:::i;:::-;8881:88;;8677:302;9018:2;9044:50;9086:7;9077:6;9066:9;9062:22;9044:50;:::i;:::-;9034:60;;8989:115;8433:678;;;;;:::o;9117:474::-;9185:6;9193;9242:2;9230:9;9221:7;9217:23;9213:32;9210:119;;;9248:79;;:::i;:::-;9210:119;9368:1;9393:53;9438:7;9429:6;9418:9;9414:22;9393:53;:::i;:::-;9383:63;;9339:117;9495:2;9521:53;9566:7;9557:6;9546:9;9542:22;9521:53;:::i;:::-;9511:63;;9466:118;9117:474;;;;;:::o;9597:180::-;9645:77;9642:1;9635:88;9742:4;9739:1;9732:15;9766:4;9763:1;9756:15;9783:320;9827:6;9864:1;9858:4;9854:12;9844:22;;9911:1;9905:4;9901:12;9932:18;9922:81;;9988:4;9980:6;9976:17;9966:27;;9922:81;10050:2;10042:6;10039:14;10019:18;10016:38;10013:84;;10069:18;;:::i;:::-;10013:84;9834:269;9783:320;;;:::o;10109:162::-;10249:14;10245:1;10237:6;10233:14;10226:38;10109:162;:::o;10277:366::-;10419:3;10440:67;10504:2;10499:3;10440:67;:::i;:::-;10433:74;;10516:93;10605:3;10516:93;:::i;:::-;10634:2;10629:3;10625:12;10618:19;;10277:366;;;:::o;10649:419::-;10815:4;10853:2;10842:9;10838:18;10830:26;;10902:9;10896:4;10892:20;10888:1;10877:9;10873:17;10866:47;10930:131;11056:4;10930:131;:::i;:::-;10922:139;;10649:419;;;:::o;11074:180::-;11122:77;11119:1;11112:88;11219:4;11216:1;11209:15;11243:4;11240:1;11233:15;11260:191;11300:3;11319:20;11337:1;11319:20;:::i;:::-;11314:25;;11353:20;11371:1;11353:20;:::i;:::-;11348:25;;11396:1;11393;11389:9;11382:16;;11417:3;11414:1;11411:10;11408:36;;;11424:18;;:::i;:::-;11408:36;11260:191;;;;:::o;11457:182::-;11597:34;11593:1;11585:6;11581:14;11574:58;11457:182;:::o;11645:366::-;11787:3;11808:67;11872:2;11867:3;11808:67;:::i;:::-;11801:74;;11884:93;11973:3;11884:93;:::i;:::-;12002:2;11997:3;11993:12;11986:19;;11645:366;;;:::o;12017:419::-;12183:4;12221:2;12210:9;12206:18;12198:26;;12270:9;12264:4;12260:20;12256:1;12245:9;12241:17;12234:47;12298:131;12424:4;12298:131;:::i;:::-;12290:139;;12017:419;;;:::o;12442:224::-;12582:34;12578:1;12570:6;12566:14;12559:58;12651:7;12646:2;12638:6;12634:15;12627:32;12442:224;:::o;12672:366::-;12814:3;12835:67;12899:2;12894:3;12835:67;:::i;:::-;12828:74;;12911:93;13000:3;12911:93;:::i;:::-;13029:2;13024:3;13020:12;13013:19;;12672:366;;;:::o;13044:419::-;13210:4;13248:2;13237:9;13233:18;13225:26;;13297:9;13291:4;13287:20;13283:1;13272:9;13268:17;13261:47;13325:131;13451:4;13325:131;:::i;:::-;13317:139;;13044:419;;;:::o;13469:180::-;13517:77;13514:1;13507:88;13614:4;13611:1;13604:15;13638:4;13635:1;13628:15;13655:233;13694:3;13717:24;13735:5;13717:24;:::i;:::-;13708:33;;13763:66;13756:5;13753:77;13750:103;;13833:18;;:::i;:::-;13750:103;13880:1;13873:5;13869:13;13862:20;;13655:233;;;:::o;13894:222::-;14034:34;14030:1;14022:6;14018:14;14011:58;14103:5;14098:2;14090:6;14086:15;14079:30;13894:222;:::o;14122:366::-;14264:3;14285:67;14349:2;14344:3;14285:67;:::i;:::-;14278:74;;14361:93;14450:3;14361:93;:::i;:::-;14479:2;14474:3;14470:12;14463:19;;14122:366;;;:::o;14494:419::-;14660:4;14698:2;14687:9;14683:18;14675:26;;14747:9;14741:4;14737:20;14733:1;14722:9;14718:17;14711:47;14775:131;14901:4;14775:131;:::i;:::-;14767:139;;14494:419;;;:::o;14919:332::-;15040:4;15078:2;15067:9;15063:18;15055:26;;15091:71;15159:1;15148:9;15144:17;15135:6;15091:71;:::i;:::-;15172:72;15240:2;15229:9;15225:18;15216:6;15172:72;:::i;:::-;14919:332;;;;;:::o;15257:137::-;15311:5;15342:6;15336:13;15327:22;;15358:30;15382:5;15358:30;:::i;:::-;15257:137;;;;:::o;15400:345::-;15467:6;15516:2;15504:9;15495:7;15491:23;15487:32;15484:119;;;15522:79;;:::i;:::-;15484:119;15642:1;15667:61;15720:7;15711:6;15700:9;15696:22;15667:61;:::i;:::-;15657:71;;15613:125;15400:345;;;;:::o;15751:225::-;15891:34;15887:1;15879:6;15875:14;15868:58;15960:8;15955:2;15947:6;15943:15;15936:33;15751:225;:::o;15982:366::-;16124:3;16145:67;16209:2;16204:3;16145:67;:::i;:::-;16138:74;;16221:93;16310:3;16221:93;:::i;:::-;16339:2;16334:3;16330:12;16323:19;;15982:366;;;:::o;16354:419::-;16520:4;16558:2;16547:9;16543:18;16535:26;;16607:9;16601:4;16597:20;16593:1;16582:9;16578:17;16571:47;16635:131;16761:4;16635:131;:::i;:::-;16627:139;;16354:419;;;:::o;16779:223::-;16919:34;16915:1;16907:6;16903:14;16896:58;16988:6;16983:2;16975:6;16971:15;16964:31;16779:223;:::o;17008:366::-;17150:3;17171:67;17235:2;17230:3;17171:67;:::i;:::-;17164:74;;17247:93;17336:3;17247:93;:::i;:::-;17365:2;17360:3;17356:12;17349:19;;17008:366;;;:::o;17380:419::-;17546:4;17584:2;17573:9;17569:18;17561:26;;17633:9;17627:4;17623:20;17619:1;17608:9;17604:17;17597:47;17661:131;17787:4;17661:131;:::i;:::-;17653:139;;17380:419;;;:::o;17805:221::-;17945:34;17941:1;17933:6;17929:14;17922:58;18014:4;18009:2;18001:6;17997:15;17990:29;17805:221;:::o;18032:366::-;18174:3;18195:67;18259:2;18254:3;18195:67;:::i;:::-;18188:74;;18271:93;18360:3;18271:93;:::i;:::-;18389:2;18384:3;18380:12;18373:19;;18032:366;;;:::o;18404:419::-;18570:4;18608:2;18597:9;18593:18;18585:26;;18657:9;18651:4;18647:20;18643:1;18632:9;18628:17;18621:47;18685:131;18811:4;18685:131;:::i;:::-;18677:139;;18404:419;;;:::o;18829:179::-;18969:31;18965:1;18957:6;18953:14;18946:55;18829:179;:::o;19014:366::-;19156:3;19177:67;19241:2;19236:3;19177:67;:::i;:::-;19170:74;;19253:93;19342:3;19253:93;:::i;:::-;19371:2;19366:3;19362:12;19355:19;;19014:366;;;:::o;19386:419::-;19552:4;19590:2;19579:9;19575:18;19567:26;;19639:9;19633:4;19629:20;19625:1;19614:9;19610:17;19603:47;19667:131;19793:4;19667:131;:::i;:::-;19659:139;;19386:419;;;:::o;19811:224::-;19951:34;19947:1;19939:6;19935:14;19928:58;20020:7;20015:2;20007:6;20003:15;19996:32;19811:224;:::o;20041:366::-;20183:3;20204:67;20268:2;20263:3;20204:67;:::i;:::-;20197:74;;20280:93;20369:3;20280:93;:::i;:::-;20398:2;20393:3;20389:12;20382:19;;20041:366;;;:::o;20413:419::-;20579:4;20617:2;20606:9;20602:18;20594:26;;20666:9;20660:4;20656:20;20652:1;20641:9;20637:17;20630:47;20694:131;20820:4;20694:131;:::i;:::-;20686:139;;20413:419;;;:::o;20838:222::-;20978:34;20974:1;20966:6;20962:14;20955:58;21047:5;21042:2;21034:6;21030:15;21023:30;20838:222;:::o;21066:366::-;21208:3;21229:67;21293:2;21288:3;21229:67;:::i;:::-;21222:74;;21305:93;21394:3;21305:93;:::i;:::-;21423:2;21418:3;21414:12;21407:19;;21066:366;;;:::o;21438:419::-;21604:4;21642:2;21631:9;21627:18;21619:26;;21691:9;21685:4;21681:20;21677:1;21666:9;21662:17;21655:47;21719:131;21845:4;21719:131;:::i;:::-;21711:139;;21438:419;;;:::o;21863:220::-;22003:34;21999:1;21991:6;21987:14;21980:58;22072:3;22067:2;22059:6;22055:15;22048:28;21863:220;:::o;22089:366::-;22231:3;22252:67;22316:2;22311:3;22252:67;:::i;:::-;22245:74;;22328:93;22417:3;22328:93;:::i;:::-;22446:2;22441:3;22437:12;22430:19;;22089:366;;;:::o;22461:419::-;22627:4;22665:2;22654:9;22650:18;22642:26;;22714:9;22708:4;22704:20;22700:1;22689:9;22685:17;22678:47;22742:131;22868:4;22742:131;:::i;:::-;22734:139;;22461:419;;;:::o;22886:221::-;23026:34;23022:1;23014:6;23010:14;23003:58;23095:4;23090:2;23082:6;23078:15;23071:29;22886:221;:::o;23113:366::-;23255:3;23276:67;23340:2;23335:3;23276:67;:::i;:::-;23269:74;;23352:93;23441:3;23352:93;:::i;:::-;23470:2;23465:3;23461:12;23454:19;;23113:366;;;:::o;23485:419::-;23651:4;23689:2;23678:9;23674:18;23666:26;;23738:9;23732:4;23728:20;23724:1;23713:9;23709:17;23702:47;23766:131;23892:4;23766:131;:::i;:::-;23758:139;;23485:419;;;:::o;23910:225::-;24050:34;24046:1;24038:6;24034:14;24027:58;24119:8;24114:2;24106:6;24102:15;24095:33;23910:225;:::o;24141:366::-;24283:3;24304:67;24368:2;24363:3;24304:67;:::i;:::-;24297:74;;24380:93;24469:3;24380:93;:::i;:::-;24498:2;24493:3;24489:12;24482:19;;24141:366;;;:::o;24513:419::-;24679:4;24717:2;24706:9;24702:18;24694:26;;24766:9;24760:4;24756:20;24752:1;24741:9;24737:17;24730:47;24794:131;24920:4;24794:131;:::i;:::-;24786:139;;24513:419;;;:::o;24938:410::-;24978:7;25001:20;25019:1;25001:20;:::i;:::-;24996:25;;25035:20;25053:1;25035:20;:::i;:::-;25030:25;;25090:1;25087;25083:9;25112:30;25130:11;25112:30;:::i;:::-;25101:41;;25291:1;25282:7;25278:15;25275:1;25272:22;25252:1;25245:9;25225:83;25202:139;;25321:18;;:::i;:::-;25202:139;24986:362;24938:410;;;;:::o;25354:180::-;25402:77;25399:1;25392:88;25499:4;25496:1;25489:15;25523:4;25520:1;25513:15;25540:185;25580:1;25597:20;25615:1;25597:20;:::i;:::-;25592:25;;25631:20;25649:1;25631:20;:::i;:::-;25626:25;;25670:1;25660:35;;25675:18;;:::i;:::-;25660:35;25717:1;25714;25710:9;25705:14;;25540:185;;;;:::o;25731:220::-;25871:34;25867:1;25859:6;25855:14;25848:58;25940:3;25935:2;25927:6;25923:15;25916:28;25731:220;:::o;25957:366::-;26099:3;26120:67;26184:2;26179:3;26120:67;:::i;:::-;26113:74;;26196:93;26285:3;26196:93;:::i;:::-;26314:2;26309:3;26305:12;26298:19;;25957:366;;;:::o;26329:419::-;26495:4;26533:2;26522:9;26518:18;26510:26;;26582:9;26576:4;26572:20;26568:1;26557:9;26553:17;26546:47;26610:131;26736:4;26610:131;:::i;:::-;26602:139;;26329:419;;;:::o;26754:194::-;26794:4;26814:20;26832:1;26814:20;:::i;:::-;26809:25;;26848:20;26866:1;26848:20;:::i;:::-;26843:25;;26892:1;26889;26885:9;26877:17;;26916:1;26910:4;26907:11;26904:37;;;26921:18;;:::i;:::-;26904:37;26754:194;;;;:::o

Metadata Hash

ipfs://56d18f907a272419d06239f7ed2c2cf447f74203023bd27b7e10e9b1a5d0de28
Loading