ETH Price: $3,434.28 (+4.05%)

Token

Ladytism (L)
 

Overview

Max Total Supply

1,000 L

Holders

297

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
Ladytism

Compiler Version
v0.8.27+commit.40a35a09

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-10-08
*/

//@dev 1000 unique Ladys with unique Attributes

// Sources flattened with hardhat v2.7.0 https://hardhat.org

// File @openzeppelin/contracts/utils/[email protected]

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.0 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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


// File @openzeppelin/contracts/access/[email protected]


// OpenZeppelin Contracts v4.4.0 (access/Ownable.sol)

pragma solidity ^0.8.0;

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
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);
    }
}


// File @openzeppelin/contracts/token/ERC20/[email protected]


// OpenZeppelin Contracts v4.4.0 (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

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

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

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

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

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

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

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

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


// File @openzeppelin/contracts/token/ERC20/extensions/[email protected]


// OpenZeppelin Contracts v4.4.0 (token/ERC20/extensions/IERC20Metadata.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}


// File @openzeppelin/contracts/token/ERC20/[email protected]


// OpenZeppelin Contracts v4.4.0 (token/ERC20/ERC20.sol)

pragma solidity ^0.8.0;



/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin Contracts guidelines: functions revert
 * instead returning `false` on failure. This behavior is nonetheless
 * conventional and does not conflict with the expectations of ERC20
 * applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
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:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, 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}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), 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}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - 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) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][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) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `sender` to `recipient`.
     *
     * 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:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, 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;
        _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;
        }
        _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 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 {}
}


// File contracts/PepeToken.sol



pragma solidity ^0.8.0;


contract Ladytism is Ownable, ERC20 {
    bool public limited = true;
    uint supply = 1000000000000000000000;
    uint256 public maxHoldingAmount = 500000000000000000;
    uint256 public minHoldingAmount = 0;
    address public uniswapV2Pair;
    mapping(address => bool) public blacklists;

    constructor() ERC20("Ladytism", "L") {
        _mint(msg.sender, supply);
    }

    function blacklist(address _address, bool _isBlacklisting) external onlyOwner {
        blacklists[_address] = _isBlacklisting;
    }

    function start(address _uniswapV2Pair) external onlyOwner{
        uniswapV2Pair = _uniswapV2Pair;
    }

    function setLimitsNeutral() external onlyOwner{
        limited = false;
    }

    function setMaxTxManual(uint256 _maxHoldingAmount) external onlyOwner {
    
        maxHoldingAmount = _maxHoldingAmount;
       
    }

    function increaseMaxTx() external onlyOwner{
        maxHoldingAmount = maxHoldingAmount * 2;
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) override internal virtual {
        require(!blacklists[to] && !blacklists[from], "Blacklisted");

        if (uniswapV2Pair == address(0)) {
            require(from == owner() || to == owner(), "trading is not started");
            return;
        }

        if (limited && from == uniswapV2Pair) {
            require(super.balanceOf(to) + amount <= maxHoldingAmount && super.balanceOf(to) + amount >= minHoldingAmount, "Forbid");
        }
    }

    function burn(uint256 value) external {
        _burn(msg.sender, value);
    }

      mapping(uint index => address holder) _holders;
    mapping(address holder => uint index) _holder_index;
    uint public holders_count;

    function get_holders_list(
        uint index,
        uint count
    ) external view returns (uint page_count, address[] memory accounts) {
        if (index >= holders_count) return (0, new address[](0));

        uint end = index + count;
        if (end > holders_count) {
            end = holders_count;
        }
        page_count = end - index;

        accounts = new address[](page_count);
        uint i;
        for (i = index; i < page_count; ++i) {
            accounts[i] = _holders[index + i];
        }
    }

    function add_holder(address value) internal {
        uint index = holders_count++;
        _holders[index] = value;
        _holder_index[value] = index;
    }

    function remove_holder(address value) internal {
        if (holders_count == 0) return;

        uint removingIndex = _holder_index[value];
        if (removingIndex != holders_count - 1) {
            address lastHolder = _holders[holders_count - 1];
            _holders[removingIndex] = lastHolder;
            _holder_index[lastHolder] = removingIndex;
        }

        --holders_count;
        delete _holder_index[value];
        delete _holders[holders_count];
    }

     uint constant MAX_GENS_START = 1000;
    uint public constant GEN_MIN = 1;
    uint public constant gen_max = MAX_GENS_START;
    uint public gen = MAX_GENS_START;
    uint public constant max_breed = 1000;
    mapping(address owner => uint) public counts;
    uint public breed_total_count;
    uint breed_id;


 



    function _transfer_breed_from_to_by_index(
        address account,
        uint index,
        address to
    ) private {
        string memory breed = "";
        
    }

    function transfer_breed_from_to_by_index(uint index, address to) external {
        require(index < counts[msg.sender], "incorrect index");
        _transfer_breed_from_to_by_index(msg.sender, index, to);
    }

    function gen_mode(uint value) private returns (uint) {
        value = (value * gen) / gen_max;
        if (value == 0) value = 1;
        if (gen > GEN_MIN) --gen;
        return value;
    }

    function buy(
        address to,
        uint256 amount
    ) internal    {
        uint last_balance = balanceOf(to);
        uint balance = last_balance + amount;
        uint count = balance /
            (10 ** decimals()) -
            last_balance /
            (10 ** decimals());
        uint i;
        for (i = 0; i < count; ++i) {
            string memory breed = "Breed(++breed_id, gen_mode(max_breed))";
            
        }
      
    }

    function sell(
        address from,
        uint256 amount
    ) internal {
        uint last_balance = balanceOf(from);
        uint balance = last_balance - amount;
        uint count = last_balance /
            (10 ** decimals()) -
            balance /
            (10 ** decimals());
        uint i;
        uint owner_count = counts[from];
        for (i = 0; i < count; ++i) {
            if (gen < gen_max) ++gen;
            if (owner_count > 0)
                (from, --owner_count);
        }
        
    }

    function transfer_internal(
        address from,
        address to,
        uint256 amount
    ) internal  {
        uint last_balance_from = balanceOf(from);
        uint balance_from = last_balance_from - amount;
        uint last_balance_to = balanceOf(to);
        uint balance_to = last_balance_to + amount;
      
        uint count_from = last_balance_from /
            (10 ** decimals()) -
            balance_from /
            (10 ** decimals());
        uint count_to = balance_to /
            (10 ** decimals()) -
            last_balance_to /
            (10 ** decimals());
        // calculate transfer count
        uint transfer_count = count_from;

        if (transfer_count > count_to) transfer_count = count_to;
        // transfer
        uint i;
        uint owner_count = counts[from];
        for (i = 0; i < transfer_count; ++i) {
            if (owner_count == 0) break;
            uint from_index = --owner_count;
       
        
        }
        uint transfered = i;

        // remove from
        for (i = transfer_count; i < count_from; ++i) {
            uint from_index = --owner_count;
            
        }

        // generate to
        for (i = transfered; i < count_to; ++i) {
          
          
        }

    }


    function get_svg_acc_index(
        address account,
        uint index
    ) external view returns (string memory) {
        
    }

    function get_account_breeds(
        address account,
        uint index,
        uint count
    ) external view returns (uint page_count, string[] memory accounts) {
        uint account_count = counts[account];
   
        uint end = index + count;
        if (end > account_count) {
            end = account_count;
        }
        page_count = end - index;

    
        uint i;
        for (i = 0; i < page_count; ++i) {
    
        }
    }

    function get_account_items(
        address account,
        uint index,
        uint count
    ) external view returns (uint page_count, string[] memory accounts) {
        uint account_count = counts[account];
   

        uint end = index + count;
        if (end > account_count) {
            end = account_count;
        }
        page_count = end - index;

      
        uint i;
        for (i = 0; i < page_count; ++i) {
     
        }
    }

    function get_account_svgs(
        address account,
        uint index,
        uint count
    ) external view returns (uint page_count, string[] memory accounts) {
        uint account_count = counts[account];
        if (index >= account_count) return (0, new string[](0));

        uint end = index + count;
        if (end > account_count) {
            end = account_count;
            page_count = index - end;
        }

        accounts = new string[](page_count);
        uint i;
        uint n = 0;
        for (i = index; i < end; ++i) {
     
        }
    }

    uint background_color;
    uint body;
    uint body_color;
    uint facial_hair;
    uint facial_hair_color;
    uint shirt_1;
    uint shirt_1_color;
    uint shirt_2;
    uint shirt_2_color;
    uint shirt_3;
    uint shirt_3_color;
    uint nose;
    uint nose_color;
    uint mouth;
    uint mouth_color;
    uint eyes_base_color;
    uint eyes;
    uint eyes_color;
    uint hair;
    uint hair_color;
    uint hat;
    uint hat_color;
    uint accessories;
    uint accessories_color;
    uint mask;
    uint mask_color;
    

    function addBackground_color(uint _background_color) external onlyOwner{
        background_color = _background_color;
    }

    function addBody(uint _body) external onlyOwner{
        body = _body;
    }

    function addBody_color(uint _body_color) external onlyOwner {
        body_color = _body_color;
    }

    function addFacial_hair(uint _facial_hair) external onlyOwner {
        facial_hair = _facial_hair;
    }

    function addFacial_hair_color(uint _facial_hair_color) external onlyOwner{
        facial_hair_color = _facial_hair_color;
    }

    function addShirt_1(uint _shirt_1) external onlyOwner{
        shirt_1 = _shirt_1;
    }

    function addShirt_1_color(uint _shirt_1_color) external onlyOwner{
        shirt_1_color = _shirt_1_color;
    }

    function addShirt_2(uint _shirt_2) external onlyOwner{
        shirt_2 = _shirt_2;
    }

    function addShirt_2_color(uint _shirt_2_color) external onlyOwner{
        shirt_2_color = _shirt_2_color;
    }

    function addShirt_3(uint _shirt_3) external onlyOwner{
        shirt_3 = _shirt_3;
    }

    function addShirt_3_color(uint _shirt_3_color) external onlyOwner{
        shirt_3_color = _shirt_3_color;
    }

    function addNose(uint _nose) external onlyOwner{
        nose = _nose;
    }

    function addNose_color(uint _nose_color) external onlyOwner{
        nose_color = _nose_color;
    }

    function addMouth(uint _mouth) external onlyOwner{
        mouth = _mouth;
    }

    function addMouth_color(uint _mouth_color) external onlyOwner{
        mouth_color = _mouth_color;
    }

    function addEyes_base_color(uint _eyes_base_color) external onlyOwner{
        eyes_base_color = _eyes_base_color;
    }

    function addEyes(uint _eyes) external onlyOwner {
        eyes = _eyes;
    }

    function addEyes_color(uint _eyes_color) external onlyOwner{
        eyes_color = _eyes_color;
    }

    function addHair(uint _hair) external onlyOwner{
        hair = _hair;
    }

    function addHair_color(uint _hair_color) external onlyOwner{
        hair_color = _hair_color;
    }

    function addHat(uint _hat) external onlyOwner{
        hat = _hat;
    }

    function addHat_color(uint _hat_color) external onlyOwner{
        hat_color = _hat_color;
    }

    function addAccessories(uint _accessories) external onlyOwner{
        accessories = _accessories;
    }

    function addAccessories_color(uint _accessories_color) external {
        accessories_color = _accessories_color;
    }

    function setMask(uint _mask) external onlyOwner{
        mask = _mask;
    }

    function setMask_color(uint _mask_color) external onlyOwner{
        mask_color = _mask_color;
    }



}

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":"GEN_MIN","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_accessories","type":"uint256"}],"name":"addAccessories","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_accessories_color","type":"uint256"}],"name":"addAccessories_color","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_background_color","type":"uint256"}],"name":"addBackground_color","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_body","type":"uint256"}],"name":"addBody","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_body_color","type":"uint256"}],"name":"addBody_color","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_eyes","type":"uint256"}],"name":"addEyes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_eyes_base_color","type":"uint256"}],"name":"addEyes_base_color","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_eyes_color","type":"uint256"}],"name":"addEyes_color","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_facial_hair","type":"uint256"}],"name":"addFacial_hair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_facial_hair_color","type":"uint256"}],"name":"addFacial_hair_color","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_hair","type":"uint256"}],"name":"addHair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_hair_color","type":"uint256"}],"name":"addHair_color","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_hat","type":"uint256"}],"name":"addHat","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_hat_color","type":"uint256"}],"name":"addHat_color","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mouth","type":"uint256"}],"name":"addMouth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mouth_color","type":"uint256"}],"name":"addMouth_color","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_nose","type":"uint256"}],"name":"addNose","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_nose_color","type":"uint256"}],"name":"addNose_color","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_shirt_1","type":"uint256"}],"name":"addShirt_1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_shirt_1_color","type":"uint256"}],"name":"addShirt_1_color","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_shirt_2","type":"uint256"}],"name":"addShirt_2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_shirt_2_color","type":"uint256"}],"name":"addShirt_2_color","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_shirt_3","type":"uint256"}],"name":"addShirt_3","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_shirt_3_color","type":"uint256"}],"name":"addShirt_3_color","outputs":[],"stateMutability":"nonpayable","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":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_isBlacklisting","type":"bool"}],"name":"blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"breed_total_count","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"counts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"gen","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gen_max","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"get_account_breeds","outputs":[{"internalType":"uint256","name":"page_count","type":"uint256"},{"internalType":"string[]","name":"accounts","type":"string[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"get_account_items","outputs":[{"internalType":"uint256","name":"page_count","type":"uint256"},{"internalType":"string[]","name":"accounts","type":"string[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"get_account_svgs","outputs":[{"internalType":"uint256","name":"page_count","type":"uint256"},{"internalType":"string[]","name":"accounts","type":"string[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"count","type":"uint256"}],"name":"get_holders_list","outputs":[{"internalType":"uint256","name":"page_count","type":"uint256"},{"internalType":"address[]","name":"accounts","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"get_svg_acc_index","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"holders_count","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"increaseMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limited","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxHoldingAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"max_breed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minHoldingAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setLimitsNeutral","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mask","type":"uint256"}],"name":"setMask","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mask_color","type":"uint256"}],"name":"setMask_color","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxHoldingAmount","type":"uint256"}],"name":"setMaxTxManual","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_uniswapV2Pair","type":"address"}],"name":"start","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":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"transfer_breed_from_to_by_index","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

6080604052600160065f6101000a81548160ff021916908315150217905550683635c9adc5dea000006007556706f05b59d3b200006008555f6009556103e8600f5534801561004c575f5ffd5b506040518060400160405280600881526020017f4c6164797469736d0000000000000000000000000000000000000000000000008152506040518060400160405280600181526020017f4c000000000000000000000000000000000000000000000000000000000000008152506100d56100ca61010e60201b60201c565b61011560201b60201c565b81600490816100e491906108d5565b5080600590816100f491906108d5565b505050610109336007546101d660201b60201c565b610bdc565b5f33905090565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610244576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161023b906109fe565b60405180910390fd5b6102555f838361033a60201b60201c565b8060035f8282546102669190610a49565b925050819055508060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546102b99190610a49565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161031d9190610a8b565b60405180910390a36103365f838361062660201b60201c565b5050565b600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156103d85750600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b610417576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161040e90610aee565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff16600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361052e5761047961062b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806104ea57506104bb61062b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b610529576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161052090610b56565b60405180910390fd5b610621565b60065f9054906101000a900460ff1680156105955750600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561062057600854816105ad8461065260201b60201c565b6105b79190610a49565b111580156105e05750600954816105d38461065260201b60201c565b6105dd9190610a49565b10155b61061f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061690610bbe565b60405180910390fd5b5b5b505050565b505050565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061071357607f821691505b602082108103610726576107256106cf565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026107887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261074d565b610792868361074d565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6107d66107d16107cc846107aa565b6107b3565b6107aa565b9050919050565b5f819050919050565b6107ef836107bc565b6108036107fb826107dd565b848454610759565b825550505050565b5f5f905090565b61081a61080b565b6108258184846107e6565b505050565b5b818110156108485761083d5f82610812565b60018101905061082b565b5050565b601f82111561088d5761085e8161072c565b6108678461073e565b81016020851015610876578190505b61088a6108828561073e565b83018261082a565b50505b505050565b5f82821c905092915050565b5f6108ad5f1984600802610892565b1980831691505092915050565b5f6108c5838361089e565b9150826002028217905092915050565b6108de82610698565b67ffffffffffffffff8111156108f7576108f66106a2565b5b61090182546106fc565b61090c82828561084c565b5f60209050601f83116001811461093d575f841561092b578287015190505b61093585826108ba565b86555061099c565b601f19841661094b8661072c565b5f5b828110156109725784890151825560018201915060208501945060208101905061094d565b8683101561098f578489015161098b601f89168261089e565b8355505b6001600288020188555050505b505050505050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f6109e8601f836109a4565b91506109f3826109b4565b602082019050919050565b5f6020820190508181035f830152610a15816109dc565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610a53826107aa565b9150610a5e836107aa565b9250828201905080821115610a7657610a75610a1c565b5b92915050565b610a85816107aa565b82525050565b5f602082019050610a9e5f830184610a7c565b92915050565b7f426c61636b6c69737465640000000000000000000000000000000000000000005f82015250565b5f610ad8600b836109a4565b9150610ae382610aa4565b602082019050919050565b5f6020820190508181035f830152610b0581610acc565b9050919050565b7f74726164696e67206973206e6f742073746172746564000000000000000000005f82015250565b5f610b406016836109a4565b9150610b4b82610b0c565b602082019050919050565b5f6020820190508181035f830152610b6d81610b34565b9050919050565b7f466f7262696400000000000000000000000000000000000000000000000000005f82015250565b5f610ba86006836109a4565b9150610bb382610b74565b602082019050919050565b5f6020820190508181035f830152610bd581610b9c565b9050919050565b61410d80610be95f395ff3fe608060405234801561000f575f5ffd5b50600436106103ce575f3560e01c806361c676ed116101fd578063a457c2d711610118578063b83d4fc9116100ab578063dd62ed3e1161007a578063dd62ed3e14610b62578063dde415fa14610b92578063e16a878314610bb0578063f2fde38b14610bba576103ce565b8063b83d4fc914610add578063c0ff84df14610af9578063d5a4260614610b15578063dd0b281e14610b46576103ce565b8063b2b6e744116100e7578063b2b6e74414610a57578063b42dfa0d14610a73578063b4377a3e14610a91578063b4f243a414610aad576103ce565b8063a457c2d7146109bd578063a9059cbb146109ed578063af504def14610a1d578063b232116514610a3b576103ce565b806389a3764a116101905780639191cefd1161015f5780639191cefd1461094857806395d89b411461096457806398bafaa3146109825780639994cde0146109b3576103ce565b806389a3764a146108d257806389f9a1d3146108ee5780638da5cb5b1461090c5780638fdada4a1461092a576103ce565b8063715018a6116101cc578063715018a61461085d578063750e8d1014610867578063795ed01e14610898578063860a32ec146108b4576103ce565b806361c676ed146107d9578063664c587d146107f55780636707e3bc1461081157806370a082311461082d576103ce565b80632d12d34b116102ed57806342966c68116102805780634fbdf0b91161024f5780634fbdf0b9146107695780635957272a146107855780635a5e0983146107a15780635d7fa6fc146107bd576103ce565b806342966c68146106f757806349bd5a5e146107135780634e1e8dbf146107315780634f3013781461074d576103ce565b80633860a393116102bc5780633860a3931461065e578063395093511461068f5780633a793053146106bf578063404e5129146106db576103ce565b80632d12d34b146105ea5780632d8d535414610608578063313ce5671461062457806332a80fe614610642576103ce565b806316c02129116103655780632713c5a4116103345780632713c5a41461057a57806328d35d5a1461059657806329887919146105b25780632cc61826146105ce576103ce565b806316c02129146104de57806318160ddd1461050e5780631ab99e121461052c57806323b872dd1461054a576103ce565b806306ea3716116103a157806306ea37161461045857806306fdde0314610474578063095ea7b3146104925780631238096d146104c2576103ce565b8063018a3741146103d2578063038f9b7e146103f0578063048b402e1461040c5780630568e65e14610428575b5f5ffd5b6103da610bd6565b6040516103e7919061318c565b60405180910390f35b61040a600480360381019061040591906131d3565b610bdc565b005b610426600480360381019061042191906131d3565b610c62565b005b610442600480360381019061043d9190613258565b610ce8565b60405161044f919061318c565b60405180910390f35b610472600480360381019061046d91906131d3565b610cfd565b005b61047c610d83565b60405161048991906132f3565b60405180910390f35b6104ac60048036038101906104a79190613313565b610e13565b6040516104b9919061336b565b60405180910390f35b6104dc60048036038101906104d791906131d3565b610e30565b005b6104f860048036038101906104f39190613258565b610eb6565b604051610505919061336b565b60405180910390f35b610516610ed3565b604051610523919061318c565b60405180910390f35b610534610edc565b604051610541919061318c565b60405180910390f35b610564600480360381019061055f9190613384565b610ee2565b604051610571919061336b565b60405180910390f35b610594600480360381019061058f91906131d3565b610fd4565b005b6105b060048036038101906105ab91906131d3565b61105a565b005b6105cc60048036038101906105c791906131d3565b611064565b005b6105e860048036038101906105e391906131d3565b6110ea565b005b6105f2611170565b6040516105ff919061318c565b60405180910390f35b610622600480360381019061061d91906131d3565b611175565b005b61062c6111fb565b60405161063991906133ef565b60405180910390f35b61065c600480360381019061065791906131d3565b611203565b005b61067860048036038101906106739190613408565b611289565b6040516106869291906134fd565b60405180910390f35b6106a960048036038101906106a49190613313565b61140b565b6040516106b6919061336b565b60405180910390f35b6106d960048036038101906106d491906131d3565b6114b2565b005b6106f560048036038101906106f09190613555565b611538565b005b610711600480360381019061070c91906131d3565b61160c565b005b61071b611619565b60405161072891906135a2565b60405180910390f35b61074b600480360381019061074691906131d3565b61163e565b005b610767600480360381019061076291906131d3565b6116c4565b005b610783600480360381019061077e91906131d3565b61174a565b005b61079f600480360381019061079a91906131d3565b6117d0565b005b6107bb60048036038101906107b691906131d3565b611856565b005b6107d760048036038101906107d291906131d3565b6118dc565b005b6107f360048036038101906107ee91906131d3565b611962565b005b61080f600480360381019061080a91906131d3565b6119e8565b005b61082b600480360381019061082691906131d3565b611a6e565b005b61084760048036038101906108429190613258565b611af4565b604051610854919061318c565b60405180910390f35b610865611b3a565b005b610881600480360381019061087c91906135bb565b611bc1565b60405161088f92919061370e565b60405180910390f35b6108b260048036038101906108ad91906131d3565b611c51565b005b6108bc611cd7565b6040516108c9919061336b565b60405180910390f35b6108ec60048036038101906108e791906131d3565b611ce9565b005b6108f6611d6f565b604051610903919061318c565b60405180910390f35b610914611d75565b60405161092191906135a2565b60405180910390f35b610932611d9c565b60405161093f919061318c565b60405180910390f35b610962600480360381019061095d91906131d3565b611da2565b005b61096c611e28565b60405161097991906132f3565b60405180910390f35b61099c600480360381019061099791906135bb565b611eb8565b6040516109aa92919061370e565b60405180910390f35b6109bb611f48565b005b6109d760048036038101906109d29190613313565b611fdf565b6040516109e4919061336b565b60405180910390f35b610a076004803603810190610a029190613313565b6120c5565b604051610a14919061336b565b60405180910390f35b610a256120e2565b604051610a32919061318c565b60405180910390f35b610a556004803603810190610a5091906131d3565b6120e8565b005b610a716004803603810190610a6c91906131d3565b61216e565b005b610a7b6121f4565b604051610a88919061318c565b60405180910390f35b610aab6004803603810190610aa6919061373c565b6121fa565b005b610ac76004803603810190610ac29190613313565b612288565b604051610ad491906132f3565b60405180910390f35b610af76004803603810190610af291906131d3565b612290565b005b610b136004803603810190610b0e91906131d3565b612316565b005b610b2f6004803603810190610b2a91906135bb565b61239c565b604051610b3d92919061370e565b60405180910390f35b610b606004803603810190610b5b9190613258565b6124e2565b005b610b7c6004803603810190610b77919061377a565b6125a1565b604051610b89919061318c565b60405180910390f35b610b9a612623565b604051610ba7919061318c565b60405180910390f35b610bb8612629565b005b610bd46004803603810190610bcf9190613258565b6126bc565b005b600e5481565b610be46127b2565b73ffffffffffffffffffffffffffffffffffffffff16610c02611d75565b73ffffffffffffffffffffffffffffffffffffffff1614610c58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4f90613802565b60405180910390fd5b80601c8190555050565b610c6a6127b2565b73ffffffffffffffffffffffffffffffffffffffff16610c88611d75565b73ffffffffffffffffffffffffffffffffffffffff1614610cde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd590613802565b60405180910390fd5b8060278190555050565b6010602052805f5260405f205f915090505481565b610d056127b2565b73ffffffffffffffffffffffffffffffffffffffff16610d23611d75565b73ffffffffffffffffffffffffffffffffffffffff1614610d79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7090613802565b60405180910390fd5b8060258190555050565b606060048054610d929061384d565b80601f0160208091040260200160405190810160405280929190818152602001828054610dbe9061384d565b8015610e095780601f10610de057610100808354040283529160200191610e09565b820191905f5260205f20905b815481529060010190602001808311610dec57829003601f168201915b5050505050905090565b5f610e26610e1f6127b2565b84846127b9565b6001905092915050565b610e386127b2565b73ffffffffffffffffffffffffffffffffffffffff16610e56611d75565b73ffffffffffffffffffffffffffffffffffffffff1614610eac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea390613802565b60405180910390fd5b8060248190555050565b600b602052805f5260405f205f915054906101000a900460ff1681565b5f600354905090565b60095481565b5f610eee84848461297c565b5f60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610f356127b2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610fb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fab906138ed565b60405180910390fd5b610fc885610fc06127b2565b8584036127b9565b60019150509392505050565b610fdc6127b2565b73ffffffffffffffffffffffffffffffffffffffff16610ffa611d75565b73ffffffffffffffffffffffffffffffffffffffff1614611050576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104790613802565b60405180910390fd5b8060238190555050565b80602a8190555050565b61106c6127b2565b73ffffffffffffffffffffffffffffffffffffffff1661108a611d75565b73ffffffffffffffffffffffffffffffffffffffff16146110e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d790613802565b60405180910390fd5b8060088190555050565b6110f26127b2565b73ffffffffffffffffffffffffffffffffffffffff16611110611d75565b73ffffffffffffffffffffffffffffffffffffffff1614611166576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115d90613802565b60405180910390fd5b8060178190555050565b600181565b61117d6127b2565b73ffffffffffffffffffffffffffffffffffffffff1661119b611d75565b73ffffffffffffffffffffffffffffffffffffffff16146111f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e890613802565b60405180910390fd5b8060228190555050565b5f6012905090565b61120b6127b2565b73ffffffffffffffffffffffffffffffffffffffff16611229611d75565b73ffffffffffffffffffffffffffffffffffffffff161461127f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127690613802565b60405180910390fd5b8060268190555050565b5f6060600e5484106112e8575f5f67ffffffffffffffff8111156112b0576112af61390b565b5b6040519080825280602002602001820160405280156112de5781602001602082028036833780820191505090505b5091509150611404565b5f83856112f59190613965565b9050600e5481111561130757600e5490505b84816113139190613998565b92508267ffffffffffffffff81111561132f5761132e61390b565b5b60405190808252806020026020018201604052801561135d5781602001602082028036833780820191505090505b5091505f8590505b8381101561140157600c5f828861137c9190613965565b81526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168382815181106113bc576113bb6139cb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050806001019050611365565b50505b9250929050565b5f6114a86114176127b2565b848460025f6114246127b2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546114a39190613965565b6127b9565b6001905092915050565b6114ba6127b2565b73ffffffffffffffffffffffffffffffffffffffff166114d8611d75565b73ffffffffffffffffffffffffffffffffffffffff161461152e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152590613802565b60405180910390fd5b8060288190555050565b6115406127b2565b73ffffffffffffffffffffffffffffffffffffffff1661155e611d75565b73ffffffffffffffffffffffffffffffffffffffff16146115b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ab90613802565b60405180910390fd5b80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6116163382612bf4565b50565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6116466127b2565b73ffffffffffffffffffffffffffffffffffffffff16611664611d75565b73ffffffffffffffffffffffffffffffffffffffff16146116ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b190613802565b60405180910390fd5b8060158190555050565b6116cc6127b2565b73ffffffffffffffffffffffffffffffffffffffff166116ea611d75565b73ffffffffffffffffffffffffffffffffffffffff1614611740576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173790613802565b60405180910390fd5b80601d8190555050565b6117526127b2565b73ffffffffffffffffffffffffffffffffffffffff16611770611d75565b73ffffffffffffffffffffffffffffffffffffffff16146117c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117bd90613802565b60405180910390fd5b80602c8190555050565b6117d86127b2565b73ffffffffffffffffffffffffffffffffffffffff166117f6611d75565b73ffffffffffffffffffffffffffffffffffffffff161461184c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184390613802565b60405180910390fd5b8060148190555050565b61185e6127b2565b73ffffffffffffffffffffffffffffffffffffffff1661187c611d75565b73ffffffffffffffffffffffffffffffffffffffff16146118d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c990613802565b60405180910390fd5b8060208190555050565b6118e46127b2565b73ffffffffffffffffffffffffffffffffffffffff16611902611d75565b73ffffffffffffffffffffffffffffffffffffffff1614611958576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194f90613802565b60405180910390fd5b80601b8190555050565b61196a6127b2565b73ffffffffffffffffffffffffffffffffffffffff16611988611d75565b73ffffffffffffffffffffffffffffffffffffffff16146119de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d590613802565b60405180910390fd5b8060138190555050565b6119f06127b2565b73ffffffffffffffffffffffffffffffffffffffff16611a0e611d75565b73ffffffffffffffffffffffffffffffffffffffff1614611a64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5b90613802565b60405180910390fd5b80602b8190555050565b611a766127b2565b73ffffffffffffffffffffffffffffffffffffffff16611a94611d75565b73ffffffffffffffffffffffffffffffffffffffff1614611aea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae190613802565b60405180910390fd5b8060298190555050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b611b426127b2565b73ffffffffffffffffffffffffffffffffffffffff16611b60611d75565b73ffffffffffffffffffffffffffffffffffffffff1614611bb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bad90613802565b60405180910390fd5b611bbf5f612dc2565b565b5f60605f60105f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f8486611c129190613965565b905081811115611c20578190505b8581611c2c9190613998565b93505f5f90505b84811015611c4657806001019050611c33565b505050935093915050565b611c596127b2565b73ffffffffffffffffffffffffffffffffffffffff16611c77611d75565b73ffffffffffffffffffffffffffffffffffffffff1614611ccd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc490613802565b60405180910390fd5b80601a8190555050565b60065f9054906101000a900460ff1681565b611cf16127b2565b73ffffffffffffffffffffffffffffffffffffffff16611d0f611d75565b73ffffffffffffffffffffffffffffffffffffffff1614611d65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5c90613802565b60405180910390fd5b8060218190555050565b60085481565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6103e881565b611daa6127b2565b73ffffffffffffffffffffffffffffffffffffffff16611dc8611d75565b73ffffffffffffffffffffffffffffffffffffffff1614611e1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1590613802565b60405180910390fd5b8060168190555050565b606060058054611e379061384d565b80601f0160208091040260200160405190810160405280929190818152602001828054611e639061384d565b8015611eae5780601f10611e8557610100808354040283529160200191611eae565b820191905f5260205f20905b815481529060010190602001808311611e9157829003601f168201915b5050505050905090565b5f60605f60105f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f8486611f099190613965565b905081811115611f17578190505b8581611f239190613998565b93505f5f90505b84811015611f3d57806001019050611f2a565b505050935093915050565b611f506127b2565b73ffffffffffffffffffffffffffffffffffffffff16611f6e611d75565b73ffffffffffffffffffffffffffffffffffffffff1614611fc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbb90613802565b60405180910390fd5b5f60065f6101000a81548160ff021916908315150217905550565b5f5f60025f611fec6127b2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156120a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209d90613a68565b60405180910390fd5b6120ba6120b16127b2565b858584036127b9565b600191505092915050565b5f6120d86120d16127b2565b848461297c565b6001905092915050565b60115481565b6120f06127b2565b73ffffffffffffffffffffffffffffffffffffffff1661210e611d75565b73ffffffffffffffffffffffffffffffffffffffff1614612164576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215b90613802565b60405180910390fd5b8060188190555050565b6121766127b2565b73ffffffffffffffffffffffffffffffffffffffff16612194611d75565b73ffffffffffffffffffffffffffffffffffffffff16146121ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e190613802565b60405180910390fd5b80601f8190555050565b600f5481565b60105f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548210612279576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227090613ad0565b60405180910390fd5b612284338383612e83565b5050565b606092915050565b6122986127b2565b73ffffffffffffffffffffffffffffffffffffffff166122b6611d75565b73ffffffffffffffffffffffffffffffffffffffff161461230c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230390613802565b60405180910390fd5b8060198190555050565b61231e6127b2565b73ffffffffffffffffffffffffffffffffffffffff1661233c611d75565b73ffffffffffffffffffffffffffffffffffffffff1614612392576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238990613802565b60405180910390fd5b80601e8190555050565b5f60605f60105f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050808510612440575f5f67ffffffffffffffff8111156124025761240161390b565b5b60405190808252806020026020018201604052801561243557816020015b60608152602001906001900390816124205790505b5092509250506124da565b5f848661244d9190613965565b9050818111156124695781905080866124669190613998565b93505b8367ffffffffffffffff8111156124835761248261390b565b5b6040519080825280602002602001820160405280156124b657816020015b60608152602001906001900390816124a15790505b5092505f5f5f90508791505b828210156124d5578160010191506124c2565b505050505b935093915050565b6124ea6127b2565b73ffffffffffffffffffffffffffffffffffffffff16612508611d75565b73ffffffffffffffffffffffffffffffffffffffff161461255e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255590613802565b60405180910390fd5b80600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6103e881565b6126316127b2565b73ffffffffffffffffffffffffffffffffffffffff1661264f611d75565b73ffffffffffffffffffffffffffffffffffffffff16146126a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269c90613802565b60405180910390fd5b60026008546126b49190613aee565b600881905550565b6126c46127b2565b73ffffffffffffffffffffffffffffffffffffffff166126e2611d75565b73ffffffffffffffffffffffffffffffffffffffff1614612738576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272f90613802565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036127a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279d90613b9f565b60405180910390fd5b6127af81612dc2565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612827576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281e90613c2d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288c90613cbb565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161296f919061318c565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036129ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129e190613d49565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612a58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a4f90613dd7565b60405180910390fd5b612a63838383612e9b565b5f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612ae7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ade90613e65565b60405180910390fd5b81810360015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612b779190613965565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612bdb919061318c565b60405180910390a3612bee84848461316f565b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612c62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5990613ef3565b60405180910390fd5b612c6d825f83612e9b565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce890613f81565b60405180910390fd5b81810360015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160035f828254612d469190613998565b925050819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612daa919061318c565b60405180910390a3612dbd835f8461316f565b505050565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f60405180602001604052805f815250905050505050565b600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612f395750600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b612f78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f6f90613fe9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff16600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361308357612fd4611d75565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061303f5750613010611d75565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b61307e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161307590614051565b60405180910390fd5b61316a565b60065f9054906101000a900460ff1680156130ea5750600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561316957600854816130fc84611af4565b6131069190613965565b1115801561312957506009548161311c84611af4565b6131269190613965565b10155b613168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161315f906140b9565b60405180910390fd5b5b5b505050565b505050565b5f819050919050565b61318681613174565b82525050565b5f60208201905061319f5f83018461317d565b92915050565b5f5ffd5b6131b281613174565b81146131bc575f5ffd5b50565b5f813590506131cd816131a9565b92915050565b5f602082840312156131e8576131e76131a5565b5b5f6131f5848285016131bf565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613227826131fe565b9050919050565b6132378161321d565b8114613241575f5ffd5b50565b5f813590506132528161322e565b92915050565b5f6020828403121561326d5761326c6131a5565b5b5f61327a84828501613244565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6132c582613283565b6132cf818561328d565b93506132df81856020860161329d565b6132e8816132ab565b840191505092915050565b5f6020820190508181035f83015261330b81846132bb565b905092915050565b5f5f60408385031215613329576133286131a5565b5b5f61333685828601613244565b9250506020613347858286016131bf565b9150509250929050565b5f8115159050919050565b61336581613351565b82525050565b5f60208201905061337e5f83018461335c565b92915050565b5f5f5f6060848603121561339b5761339a6131a5565b5b5f6133a886828701613244565b93505060206133b986828701613244565b92505060406133ca868287016131bf565b9150509250925092565b5f60ff82169050919050565b6133e9816133d4565b82525050565b5f6020820190506134025f8301846133e0565b92915050565b5f5f6040838503121561341e5761341d6131a5565b5b5f61342b858286016131bf565b925050602061343c858286016131bf565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6134788161321d565b82525050565b5f613489838361346f565b60208301905092915050565b5f602082019050919050565b5f6134ab82613446565b6134b58185613450565b93506134c083613460565b805f5b838110156134f05781516134d7888261347e565b97506134e283613495565b9250506001810190506134c3565b5085935050505092915050565b5f6040820190506135105f83018561317d565b818103602083015261352281846134a1565b90509392505050565b61353481613351565b811461353e575f5ffd5b50565b5f8135905061354f8161352b565b92915050565b5f5f6040838503121561356b5761356a6131a5565b5b5f61357885828601613244565b925050602061358985828601613541565b9150509250929050565b61359c8161321d565b82525050565b5f6020820190506135b55f830184613593565b92915050565b5f5f5f606084860312156135d2576135d16131a5565b5b5f6135df86828701613244565b93505060206135f0868287016131bf565b9250506040613601868287016131bf565b9150509250925092565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f82825260208201905092915050565b5f61364e82613283565b6136588185613634565b935061366881856020860161329d565b613671816132ab565b840191505092915050565b5f6136878383613644565b905092915050565b5f602082019050919050565b5f6136a58261360b565b6136af8185613615565b9350836020820285016136c185613625565b805f5b858110156136fc57848403895281516136dd858261367c565b94506136e88361368f565b925060208a019950506001810190506136c4565b50829750879550505050505092915050565b5f6040820190506137215f83018561317d565b8181036020830152613733818461369b565b90509392505050565b5f5f60408385031215613752576137516131a5565b5b5f61375f858286016131bf565b925050602061377085828601613244565b9150509250929050565b5f5f604083850312156137905761378f6131a5565b5b5f61379d85828601613244565b92505060206137ae85828601613244565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6137ec60208361328d565b91506137f7826137b8565b602082019050919050565b5f6020820190508181035f830152613819816137e0565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061386457607f821691505b60208210810361387757613876613820565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f6138d760288361328d565b91506138e28261387d565b604082019050919050565b5f6020820190508181035f830152613904816138cb565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61396f82613174565b915061397a83613174565b925082820190508082111561399257613991613938565b5b92915050565b5f6139a282613174565b91506139ad83613174565b92508282039050818111156139c5576139c4613938565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613a5260258361328d565b9150613a5d826139f8565b604082019050919050565b5f6020820190508181035f830152613a7f81613a46565b9050919050565b7f696e636f727265637420696e64657800000000000000000000000000000000005f82015250565b5f613aba600f8361328d565b9150613ac582613a86565b602082019050919050565b5f6020820190508181035f830152613ae781613aae565b9050919050565b5f613af882613174565b9150613b0383613174565b9250828202613b1181613174565b91508282048414831517613b2857613b27613938565b5b5092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613b8960268361328d565b9150613b9482613b2f565b604082019050919050565b5f6020820190508181035f830152613bb681613b7d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613c1760248361328d565b9150613c2282613bbd565b604082019050919050565b5f6020820190508181035f830152613c4481613c0b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613ca560228361328d565b9150613cb082613c4b565b604082019050919050565b5f6020820190508181035f830152613cd281613c99565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613d3360258361328d565b9150613d3e82613cd9565b604082019050919050565b5f6020820190508181035f830152613d6081613d27565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613dc160238361328d565b9150613dcc82613d67565b604082019050919050565b5f6020820190508181035f830152613dee81613db5565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f613e4f60268361328d565b9150613e5a82613df5565b604082019050919050565b5f6020820190508181035f830152613e7c81613e43565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f613edd60218361328d565b9150613ee882613e83565b604082019050919050565b5f6020820190508181035f830152613f0a81613ed1565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f613f6b60228361328d565b9150613f7682613f11565b604082019050919050565b5f6020820190508181035f830152613f9881613f5f565b9050919050565b7f426c61636b6c69737465640000000000000000000000000000000000000000005f82015250565b5f613fd3600b8361328d565b9150613fde82613f9f565b602082019050919050565b5f6020820190508181035f83015261400081613fc7565b9050919050565b7f74726164696e67206973206e6f742073746172746564000000000000000000005f82015250565b5f61403b60168361328d565b915061404682614007565b602082019050919050565b5f6020820190508181035f8301526140688161402f565b9050919050565b7f466f7262696400000000000000000000000000000000000000000000000000005f82015250565b5f6140a360068361328d565b91506140ae8261406f565b602082019050919050565b5f6020820190508181035f8301526140d081614097565b905091905056fea2646970667358221220ae18a6560a5474277b6827f33ae4c04c4fc579db950a99168bb6820bdf230cbb64736f6c634300081b0033

Deployed Bytecode

0x608060405234801561000f575f5ffd5b50600436106103ce575f3560e01c806361c676ed116101fd578063a457c2d711610118578063b83d4fc9116100ab578063dd62ed3e1161007a578063dd62ed3e14610b62578063dde415fa14610b92578063e16a878314610bb0578063f2fde38b14610bba576103ce565b8063b83d4fc914610add578063c0ff84df14610af9578063d5a4260614610b15578063dd0b281e14610b46576103ce565b8063b2b6e744116100e7578063b2b6e74414610a57578063b42dfa0d14610a73578063b4377a3e14610a91578063b4f243a414610aad576103ce565b8063a457c2d7146109bd578063a9059cbb146109ed578063af504def14610a1d578063b232116514610a3b576103ce565b806389a3764a116101905780639191cefd1161015f5780639191cefd1461094857806395d89b411461096457806398bafaa3146109825780639994cde0146109b3576103ce565b806389a3764a146108d257806389f9a1d3146108ee5780638da5cb5b1461090c5780638fdada4a1461092a576103ce565b8063715018a6116101cc578063715018a61461085d578063750e8d1014610867578063795ed01e14610898578063860a32ec146108b4576103ce565b806361c676ed146107d9578063664c587d146107f55780636707e3bc1461081157806370a082311461082d576103ce565b80632d12d34b116102ed57806342966c68116102805780634fbdf0b91161024f5780634fbdf0b9146107695780635957272a146107855780635a5e0983146107a15780635d7fa6fc146107bd576103ce565b806342966c68146106f757806349bd5a5e146107135780634e1e8dbf146107315780634f3013781461074d576103ce565b80633860a393116102bc5780633860a3931461065e578063395093511461068f5780633a793053146106bf578063404e5129146106db576103ce565b80632d12d34b146105ea5780632d8d535414610608578063313ce5671461062457806332a80fe614610642576103ce565b806316c02129116103655780632713c5a4116103345780632713c5a41461057a57806328d35d5a1461059657806329887919146105b25780632cc61826146105ce576103ce565b806316c02129146104de57806318160ddd1461050e5780631ab99e121461052c57806323b872dd1461054a576103ce565b806306ea3716116103a157806306ea37161461045857806306fdde0314610474578063095ea7b3146104925780631238096d146104c2576103ce565b8063018a3741146103d2578063038f9b7e146103f0578063048b402e1461040c5780630568e65e14610428575b5f5ffd5b6103da610bd6565b6040516103e7919061318c565b60405180910390f35b61040a600480360381019061040591906131d3565b610bdc565b005b610426600480360381019061042191906131d3565b610c62565b005b610442600480360381019061043d9190613258565b610ce8565b60405161044f919061318c565b60405180910390f35b610472600480360381019061046d91906131d3565b610cfd565b005b61047c610d83565b60405161048991906132f3565b60405180910390f35b6104ac60048036038101906104a79190613313565b610e13565b6040516104b9919061336b565b60405180910390f35b6104dc60048036038101906104d791906131d3565b610e30565b005b6104f860048036038101906104f39190613258565b610eb6565b604051610505919061336b565b60405180910390f35b610516610ed3565b604051610523919061318c565b60405180910390f35b610534610edc565b604051610541919061318c565b60405180910390f35b610564600480360381019061055f9190613384565b610ee2565b604051610571919061336b565b60405180910390f35b610594600480360381019061058f91906131d3565b610fd4565b005b6105b060048036038101906105ab91906131d3565b61105a565b005b6105cc60048036038101906105c791906131d3565b611064565b005b6105e860048036038101906105e391906131d3565b6110ea565b005b6105f2611170565b6040516105ff919061318c565b60405180910390f35b610622600480360381019061061d91906131d3565b611175565b005b61062c6111fb565b60405161063991906133ef565b60405180910390f35b61065c600480360381019061065791906131d3565b611203565b005b61067860048036038101906106739190613408565b611289565b6040516106869291906134fd565b60405180910390f35b6106a960048036038101906106a49190613313565b61140b565b6040516106b6919061336b565b60405180910390f35b6106d960048036038101906106d491906131d3565b6114b2565b005b6106f560048036038101906106f09190613555565b611538565b005b610711600480360381019061070c91906131d3565b61160c565b005b61071b611619565b60405161072891906135a2565b60405180910390f35b61074b600480360381019061074691906131d3565b61163e565b005b610767600480360381019061076291906131d3565b6116c4565b005b610783600480360381019061077e91906131d3565b61174a565b005b61079f600480360381019061079a91906131d3565b6117d0565b005b6107bb60048036038101906107b691906131d3565b611856565b005b6107d760048036038101906107d291906131d3565b6118dc565b005b6107f360048036038101906107ee91906131d3565b611962565b005b61080f600480360381019061080a91906131d3565b6119e8565b005b61082b600480360381019061082691906131d3565b611a6e565b005b61084760048036038101906108429190613258565b611af4565b604051610854919061318c565b60405180910390f35b610865611b3a565b005b610881600480360381019061087c91906135bb565b611bc1565b60405161088f92919061370e565b60405180910390f35b6108b260048036038101906108ad91906131d3565b611c51565b005b6108bc611cd7565b6040516108c9919061336b565b60405180910390f35b6108ec60048036038101906108e791906131d3565b611ce9565b005b6108f6611d6f565b604051610903919061318c565b60405180910390f35b610914611d75565b60405161092191906135a2565b60405180910390f35b610932611d9c565b60405161093f919061318c565b60405180910390f35b610962600480360381019061095d91906131d3565b611da2565b005b61096c611e28565b60405161097991906132f3565b60405180910390f35b61099c600480360381019061099791906135bb565b611eb8565b6040516109aa92919061370e565b60405180910390f35b6109bb611f48565b005b6109d760048036038101906109d29190613313565b611fdf565b6040516109e4919061336b565b60405180910390f35b610a076004803603810190610a029190613313565b6120c5565b604051610a14919061336b565b60405180910390f35b610a256120e2565b604051610a32919061318c565b60405180910390f35b610a556004803603810190610a5091906131d3565b6120e8565b005b610a716004803603810190610a6c91906131d3565b61216e565b005b610a7b6121f4565b604051610a88919061318c565b60405180910390f35b610aab6004803603810190610aa6919061373c565b6121fa565b005b610ac76004803603810190610ac29190613313565b612288565b604051610ad491906132f3565b60405180910390f35b610af76004803603810190610af291906131d3565b612290565b005b610b136004803603810190610b0e91906131d3565b612316565b005b610b2f6004803603810190610b2a91906135bb565b61239c565b604051610b3d92919061370e565b60405180910390f35b610b606004803603810190610b5b9190613258565b6124e2565b005b610b7c6004803603810190610b77919061377a565b6125a1565b604051610b89919061318c565b60405180910390f35b610b9a612623565b604051610ba7919061318c565b60405180910390f35b610bb8612629565b005b610bd46004803603810190610bcf9190613258565b6126bc565b005b600e5481565b610be46127b2565b73ffffffffffffffffffffffffffffffffffffffff16610c02611d75565b73ffffffffffffffffffffffffffffffffffffffff1614610c58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4f90613802565b60405180910390fd5b80601c8190555050565b610c6a6127b2565b73ffffffffffffffffffffffffffffffffffffffff16610c88611d75565b73ffffffffffffffffffffffffffffffffffffffff1614610cde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd590613802565b60405180910390fd5b8060278190555050565b6010602052805f5260405f205f915090505481565b610d056127b2565b73ffffffffffffffffffffffffffffffffffffffff16610d23611d75565b73ffffffffffffffffffffffffffffffffffffffff1614610d79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7090613802565b60405180910390fd5b8060258190555050565b606060048054610d929061384d565b80601f0160208091040260200160405190810160405280929190818152602001828054610dbe9061384d565b8015610e095780601f10610de057610100808354040283529160200191610e09565b820191905f5260205f20905b815481529060010190602001808311610dec57829003601f168201915b5050505050905090565b5f610e26610e1f6127b2565b84846127b9565b6001905092915050565b610e386127b2565b73ffffffffffffffffffffffffffffffffffffffff16610e56611d75565b73ffffffffffffffffffffffffffffffffffffffff1614610eac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea390613802565b60405180910390fd5b8060248190555050565b600b602052805f5260405f205f915054906101000a900460ff1681565b5f600354905090565b60095481565b5f610eee84848461297c565b5f60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610f356127b2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610fb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fab906138ed565b60405180910390fd5b610fc885610fc06127b2565b8584036127b9565b60019150509392505050565b610fdc6127b2565b73ffffffffffffffffffffffffffffffffffffffff16610ffa611d75565b73ffffffffffffffffffffffffffffffffffffffff1614611050576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104790613802565b60405180910390fd5b8060238190555050565b80602a8190555050565b61106c6127b2565b73ffffffffffffffffffffffffffffffffffffffff1661108a611d75565b73ffffffffffffffffffffffffffffffffffffffff16146110e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d790613802565b60405180910390fd5b8060088190555050565b6110f26127b2565b73ffffffffffffffffffffffffffffffffffffffff16611110611d75565b73ffffffffffffffffffffffffffffffffffffffff1614611166576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115d90613802565b60405180910390fd5b8060178190555050565b600181565b61117d6127b2565b73ffffffffffffffffffffffffffffffffffffffff1661119b611d75565b73ffffffffffffffffffffffffffffffffffffffff16146111f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e890613802565b60405180910390fd5b8060228190555050565b5f6012905090565b61120b6127b2565b73ffffffffffffffffffffffffffffffffffffffff16611229611d75565b73ffffffffffffffffffffffffffffffffffffffff161461127f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127690613802565b60405180910390fd5b8060268190555050565b5f6060600e5484106112e8575f5f67ffffffffffffffff8111156112b0576112af61390b565b5b6040519080825280602002602001820160405280156112de5781602001602082028036833780820191505090505b5091509150611404565b5f83856112f59190613965565b9050600e5481111561130757600e5490505b84816113139190613998565b92508267ffffffffffffffff81111561132f5761132e61390b565b5b60405190808252806020026020018201604052801561135d5781602001602082028036833780820191505090505b5091505f8590505b8381101561140157600c5f828861137c9190613965565b81526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168382815181106113bc576113bb6139cb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050806001019050611365565b50505b9250929050565b5f6114a86114176127b2565b848460025f6114246127b2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546114a39190613965565b6127b9565b6001905092915050565b6114ba6127b2565b73ffffffffffffffffffffffffffffffffffffffff166114d8611d75565b73ffffffffffffffffffffffffffffffffffffffff161461152e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152590613802565b60405180910390fd5b8060288190555050565b6115406127b2565b73ffffffffffffffffffffffffffffffffffffffff1661155e611d75565b73ffffffffffffffffffffffffffffffffffffffff16146115b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ab90613802565b60405180910390fd5b80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6116163382612bf4565b50565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6116466127b2565b73ffffffffffffffffffffffffffffffffffffffff16611664611d75565b73ffffffffffffffffffffffffffffffffffffffff16146116ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b190613802565b60405180910390fd5b8060158190555050565b6116cc6127b2565b73ffffffffffffffffffffffffffffffffffffffff166116ea611d75565b73ffffffffffffffffffffffffffffffffffffffff1614611740576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173790613802565b60405180910390fd5b80601d8190555050565b6117526127b2565b73ffffffffffffffffffffffffffffffffffffffff16611770611d75565b73ffffffffffffffffffffffffffffffffffffffff16146117c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117bd90613802565b60405180910390fd5b80602c8190555050565b6117d86127b2565b73ffffffffffffffffffffffffffffffffffffffff166117f6611d75565b73ffffffffffffffffffffffffffffffffffffffff161461184c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184390613802565b60405180910390fd5b8060148190555050565b61185e6127b2565b73ffffffffffffffffffffffffffffffffffffffff1661187c611d75565b73ffffffffffffffffffffffffffffffffffffffff16146118d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c990613802565b60405180910390fd5b8060208190555050565b6118e46127b2565b73ffffffffffffffffffffffffffffffffffffffff16611902611d75565b73ffffffffffffffffffffffffffffffffffffffff1614611958576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194f90613802565b60405180910390fd5b80601b8190555050565b61196a6127b2565b73ffffffffffffffffffffffffffffffffffffffff16611988611d75565b73ffffffffffffffffffffffffffffffffffffffff16146119de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d590613802565b60405180910390fd5b8060138190555050565b6119f06127b2565b73ffffffffffffffffffffffffffffffffffffffff16611a0e611d75565b73ffffffffffffffffffffffffffffffffffffffff1614611a64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5b90613802565b60405180910390fd5b80602b8190555050565b611a766127b2565b73ffffffffffffffffffffffffffffffffffffffff16611a94611d75565b73ffffffffffffffffffffffffffffffffffffffff1614611aea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae190613802565b60405180910390fd5b8060298190555050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b611b426127b2565b73ffffffffffffffffffffffffffffffffffffffff16611b60611d75565b73ffffffffffffffffffffffffffffffffffffffff1614611bb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bad90613802565b60405180910390fd5b611bbf5f612dc2565b565b5f60605f60105f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f8486611c129190613965565b905081811115611c20578190505b8581611c2c9190613998565b93505f5f90505b84811015611c4657806001019050611c33565b505050935093915050565b611c596127b2565b73ffffffffffffffffffffffffffffffffffffffff16611c77611d75565b73ffffffffffffffffffffffffffffffffffffffff1614611ccd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc490613802565b60405180910390fd5b80601a8190555050565b60065f9054906101000a900460ff1681565b611cf16127b2565b73ffffffffffffffffffffffffffffffffffffffff16611d0f611d75565b73ffffffffffffffffffffffffffffffffffffffff1614611d65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5c90613802565b60405180910390fd5b8060218190555050565b60085481565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6103e881565b611daa6127b2565b73ffffffffffffffffffffffffffffffffffffffff16611dc8611d75565b73ffffffffffffffffffffffffffffffffffffffff1614611e1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1590613802565b60405180910390fd5b8060168190555050565b606060058054611e379061384d565b80601f0160208091040260200160405190810160405280929190818152602001828054611e639061384d565b8015611eae5780601f10611e8557610100808354040283529160200191611eae565b820191905f5260205f20905b815481529060010190602001808311611e9157829003601f168201915b5050505050905090565b5f60605f60105f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f8486611f099190613965565b905081811115611f17578190505b8581611f239190613998565b93505f5f90505b84811015611f3d57806001019050611f2a565b505050935093915050565b611f506127b2565b73ffffffffffffffffffffffffffffffffffffffff16611f6e611d75565b73ffffffffffffffffffffffffffffffffffffffff1614611fc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fbb90613802565b60405180910390fd5b5f60065f6101000a81548160ff021916908315150217905550565b5f5f60025f611fec6127b2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156120a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209d90613a68565b60405180910390fd5b6120ba6120b16127b2565b858584036127b9565b600191505092915050565b5f6120d86120d16127b2565b848461297c565b6001905092915050565b60115481565b6120f06127b2565b73ffffffffffffffffffffffffffffffffffffffff1661210e611d75565b73ffffffffffffffffffffffffffffffffffffffff1614612164576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215b90613802565b60405180910390fd5b8060188190555050565b6121766127b2565b73ffffffffffffffffffffffffffffffffffffffff16612194611d75565b73ffffffffffffffffffffffffffffffffffffffff16146121ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e190613802565b60405180910390fd5b80601f8190555050565b600f5481565b60105f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548210612279576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227090613ad0565b60405180910390fd5b612284338383612e83565b5050565b606092915050565b6122986127b2565b73ffffffffffffffffffffffffffffffffffffffff166122b6611d75565b73ffffffffffffffffffffffffffffffffffffffff161461230c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230390613802565b60405180910390fd5b8060198190555050565b61231e6127b2565b73ffffffffffffffffffffffffffffffffffffffff1661233c611d75565b73ffffffffffffffffffffffffffffffffffffffff1614612392576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238990613802565b60405180910390fd5b80601e8190555050565b5f60605f60105f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050808510612440575f5f67ffffffffffffffff8111156124025761240161390b565b5b60405190808252806020026020018201604052801561243557816020015b60608152602001906001900390816124205790505b5092509250506124da565b5f848661244d9190613965565b9050818111156124695781905080866124669190613998565b93505b8367ffffffffffffffff8111156124835761248261390b565b5b6040519080825280602002602001820160405280156124b657816020015b60608152602001906001900390816124a15790505b5092505f5f5f90508791505b828210156124d5578160010191506124c2565b505050505b935093915050565b6124ea6127b2565b73ffffffffffffffffffffffffffffffffffffffff16612508611d75565b73ffffffffffffffffffffffffffffffffffffffff161461255e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255590613802565b60405180910390fd5b80600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6103e881565b6126316127b2565b73ffffffffffffffffffffffffffffffffffffffff1661264f611d75565b73ffffffffffffffffffffffffffffffffffffffff16146126a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269c90613802565b60405180910390fd5b60026008546126b49190613aee565b600881905550565b6126c46127b2565b73ffffffffffffffffffffffffffffffffffffffff166126e2611d75565b73ffffffffffffffffffffffffffffffffffffffff1614612738576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161272f90613802565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036127a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279d90613b9f565b60405180910390fd5b6127af81612dc2565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612827576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281e90613c2d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288c90613cbb565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161296f919061318c565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036129ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129e190613d49565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612a58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a4f90613dd7565b60405180910390fd5b612a63838383612e9b565b5f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612ae7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ade90613e65565b60405180910390fd5b81810360015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612b779190613965565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612bdb919061318c565b60405180910390a3612bee84848461316f565b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612c62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5990613ef3565b60405180910390fd5b612c6d825f83612e9b565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce890613f81565b60405180910390fd5b81810360015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160035f828254612d469190613998565b925050819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612daa919061318c565b60405180910390a3612dbd835f8461316f565b505050565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f60405180602001604052805f815250905050505050565b600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612f395750600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b612f78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f6f90613fe9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff16600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361308357612fd4611d75565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061303f5750613010611d75565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b61307e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161307590614051565b60405180910390fd5b61316a565b60065f9054906101000a900460ff1680156130ea5750600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561316957600854816130fc84611af4565b6131069190613965565b1115801561312957506009548161311c84611af4565b6131269190613965565b10155b613168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161315f906140b9565b60405180910390fd5b5b5b505050565b505050565b5f819050919050565b61318681613174565b82525050565b5f60208201905061319f5f83018461317d565b92915050565b5f5ffd5b6131b281613174565b81146131bc575f5ffd5b50565b5f813590506131cd816131a9565b92915050565b5f602082840312156131e8576131e76131a5565b5b5f6131f5848285016131bf565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613227826131fe565b9050919050565b6132378161321d565b8114613241575f5ffd5b50565b5f813590506132528161322e565b92915050565b5f6020828403121561326d5761326c6131a5565b5b5f61327a84828501613244565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6132c582613283565b6132cf818561328d565b93506132df81856020860161329d565b6132e8816132ab565b840191505092915050565b5f6020820190508181035f83015261330b81846132bb565b905092915050565b5f5f60408385031215613329576133286131a5565b5b5f61333685828601613244565b9250506020613347858286016131bf565b9150509250929050565b5f8115159050919050565b61336581613351565b82525050565b5f60208201905061337e5f83018461335c565b92915050565b5f5f5f6060848603121561339b5761339a6131a5565b5b5f6133a886828701613244565b93505060206133b986828701613244565b92505060406133ca868287016131bf565b9150509250925092565b5f60ff82169050919050565b6133e9816133d4565b82525050565b5f6020820190506134025f8301846133e0565b92915050565b5f5f6040838503121561341e5761341d6131a5565b5b5f61342b858286016131bf565b925050602061343c858286016131bf565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6134788161321d565b82525050565b5f613489838361346f565b60208301905092915050565b5f602082019050919050565b5f6134ab82613446565b6134b58185613450565b93506134c083613460565b805f5b838110156134f05781516134d7888261347e565b97506134e283613495565b9250506001810190506134c3565b5085935050505092915050565b5f6040820190506135105f83018561317d565b818103602083015261352281846134a1565b90509392505050565b61353481613351565b811461353e575f5ffd5b50565b5f8135905061354f8161352b565b92915050565b5f5f6040838503121561356b5761356a6131a5565b5b5f61357885828601613244565b925050602061358985828601613541565b9150509250929050565b61359c8161321d565b82525050565b5f6020820190506135b55f830184613593565b92915050565b5f5f5f606084860312156135d2576135d16131a5565b5b5f6135df86828701613244565b93505060206135f0868287016131bf565b9250506040613601868287016131bf565b9150509250925092565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f82825260208201905092915050565b5f61364e82613283565b6136588185613634565b935061366881856020860161329d565b613671816132ab565b840191505092915050565b5f6136878383613644565b905092915050565b5f602082019050919050565b5f6136a58261360b565b6136af8185613615565b9350836020820285016136c185613625565b805f5b858110156136fc57848403895281516136dd858261367c565b94506136e88361368f565b925060208a019950506001810190506136c4565b50829750879550505050505092915050565b5f6040820190506137215f83018561317d565b8181036020830152613733818461369b565b90509392505050565b5f5f60408385031215613752576137516131a5565b5b5f61375f858286016131bf565b925050602061377085828601613244565b9150509250929050565b5f5f604083850312156137905761378f6131a5565b5b5f61379d85828601613244565b92505060206137ae85828601613244565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6137ec60208361328d565b91506137f7826137b8565b602082019050919050565b5f6020820190508181035f830152613819816137e0565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061386457607f821691505b60208210810361387757613876613820565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f6138d760288361328d565b91506138e28261387d565b604082019050919050565b5f6020820190508181035f830152613904816138cb565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61396f82613174565b915061397a83613174565b925082820190508082111561399257613991613938565b5b92915050565b5f6139a282613174565b91506139ad83613174565b92508282039050818111156139c5576139c4613938565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613a5260258361328d565b9150613a5d826139f8565b604082019050919050565b5f6020820190508181035f830152613a7f81613a46565b9050919050565b7f696e636f727265637420696e64657800000000000000000000000000000000005f82015250565b5f613aba600f8361328d565b9150613ac582613a86565b602082019050919050565b5f6020820190508181035f830152613ae781613aae565b9050919050565b5f613af882613174565b9150613b0383613174565b9250828202613b1181613174565b91508282048414831517613b2857613b27613938565b5b5092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613b8960268361328d565b9150613b9482613b2f565b604082019050919050565b5f6020820190508181035f830152613bb681613b7d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613c1760248361328d565b9150613c2282613bbd565b604082019050919050565b5f6020820190508181035f830152613c4481613c0b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613ca560228361328d565b9150613cb082613c4b565b604082019050919050565b5f6020820190508181035f830152613cd281613c99565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613d3360258361328d565b9150613d3e82613cd9565b604082019050919050565b5f6020820190508181035f830152613d6081613d27565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613dc160238361328d565b9150613dcc82613d67565b604082019050919050565b5f6020820190508181035f830152613dee81613db5565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f613e4f60268361328d565b9150613e5a82613df5565b604082019050919050565b5f6020820190508181035f830152613e7c81613e43565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f613edd60218361328d565b9150613ee882613e83565b604082019050919050565b5f6020820190508181035f830152613f0a81613ed1565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f613f6b60228361328d565b9150613f7682613f11565b604082019050919050565b5f6020820190508181035f830152613f9881613f5f565b9050919050565b7f426c61636b6c69737465640000000000000000000000000000000000000000005f82015250565b5f613fd3600b8361328d565b9150613fde82613f9f565b602082019050919050565b5f6020820190508181035f83015261400081613fc7565b9050919050565b7f74726164696e67206973206e6f742073746172746564000000000000000000005f82015250565b5f61403b60168361328d565b915061404682614007565b602082019050919050565b5f6020820190508181035f8301526140688161402f565b9050919050565b7f466f7262696400000000000000000000000000000000000000000000000000005f82015250565b5f6140a360068361328d565b91506140ae8261406f565b602082019050919050565b5f6020820190508181035f8301526140d081614097565b905091905056fea2646970667358221220ae18a6560a5474277b6827f33ae4c04c4fc579db950a99168bb6820bdf230cbb64736f6c634300081b0033

Deployed Bytecode Sourcemap

19394:11374:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21168:25;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28997:90;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30140:74;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22639:44;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29944:78;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9363:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11530:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29834:102;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19649:42;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10483:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19572:35;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12181:492;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29747:79;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30442:121;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20134:140;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28419:130;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22465:32;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29617:122;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10325:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30030:102;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21202:543;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;13082:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30222:98;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19789:135;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20966:81;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19614:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28193:103;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29095:114;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30657:102;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28107:78;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29413:82;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28875:114;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27973:126;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30571:78;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30328:106;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10654:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2764:103;;;:::i;:::-;;26332:470;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;28777:90;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19437:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29503:106;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19513:52;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2113:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22504:45;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28304:107;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9582:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25858:466;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;20046:80;;;:::i;:::-;;13800:413;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10994:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22690:29;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28557:90;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29303:102;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22556:32;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22945:213;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25713:137;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28655:114;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29217:78;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26810:590;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;19932:106;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11232:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22595:37;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20282:101;;;:::i;:::-;;3022:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21168:25;;;;:::o;28997:90::-;2344:12;:10;:12::i;:::-;2333:23;;:7;:5;:7::i;:::-;:23;;;2325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29071:8:::1;29061:7;:18;;;;28997:90:::0;:::o;30140:74::-;2344:12;:10;:12::i;:::-;2333:23;;:7;:5;:7::i;:::-;:23;;;2325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30202:4:::1;30196:3;:10;;;;30140:74:::0;:::o;22639:44::-;;;;;;;;;;;;;;;;;:::o;29944:78::-;2344:12;:10;:12::i;:::-;2333:23;;:7;:5;:7::i;:::-;:23;;;2325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30009:5:::1;30002:4;:12;;;;29944:78:::0;:::o;9363:100::-;9417:13;9450:5;9443:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9363:100;:::o;11530:169::-;11613:4;11630:39;11639:12;:10;:12::i;:::-;11653:7;11662:6;11630:8;:39::i;:::-;11687:4;11680:11;;11530:169;;;;:::o;29834:102::-;2344:12;:10;:12::i;:::-;2333:23;;:7;:5;:7::i;:::-;:23;;;2325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29917:11:::1;29904:10;:24;;;;29834:102:::0;:::o;19649:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;10483:108::-;10544:7;10571:12;;10564:19;;10483:108;:::o;19572:35::-;;;;:::o;12181:492::-;12321:4;12338:36;12348:6;12356:9;12367:6;12338:9;:36::i;:::-;12387:24;12414:11;:19;12426:6;12414:19;;;;;;;;;;;;;;;:33;12434:12;:10;:12::i;:::-;12414:33;;;;;;;;;;;;;;;;12387:60;;12486:6;12466:16;:26;;12458:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;12573:57;12582:6;12590:12;:10;:12::i;:::-;12623:6;12604:16;:25;12573:8;:57::i;:::-;12661:4;12654:11;;;12181:492;;;;;:::o;29747:79::-;2344:12;:10;:12::i;:::-;2333:23;;:7;:5;:7::i;:::-;:23;;;2325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29813:5:::1;29806:4;:12;;;;29747:79:::0;:::o;30442:121::-;30537:18;30517:17;:38;;;;30442:121;:::o;20134:140::-;2344:12;:10;:12::i;:::-;2333:23;;:7;:5;:7::i;:::-;:23;;;2325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20240:17:::1;20221:16;:36;;;;20134:140:::0;:::o;28419:130::-;2344:12;:10;:12::i;:::-;2333:23;;:7;:5;:7::i;:::-;:23;;;2325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28523:18:::1;28503:17;:38;;;;28419:130:::0;:::o;22465:32::-;22496:1;22465:32;:::o;29617:122::-;2344:12;:10;:12::i;:::-;2333:23;;:7;:5;:7::i;:::-;:23;;;2325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29715:16:::1;29697:15;:34;;;;29617:122:::0;:::o;10325:93::-;10383:5;10408:2;10401:9;;10325:93;:::o;30030:102::-;2344:12;:10;:12::i;:::-;2333:23;;:7;:5;:7::i;:::-;:23;;;2325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30113:11:::1;30100:10;:24;;;;30030:102:::0;:::o;21202:543::-;21300:15;21317:25;21368:13;;21359:5;:22;21355:56;;21391:1;21408;21394:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21383:28;;;;;;21355:56;21424:8;21443:5;21435;:13;;;;:::i;:::-;21424:24;;21469:13;;21463:3;:19;21459:71;;;21505:13;;21499:19;;21459:71;21559:5;21553:3;:11;;;;:::i;:::-;21540:24;;21602:10;21588:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21577:36;;21624:6;21650:5;21646:9;;21641:97;21661:10;21657:1;:14;21641:97;;;21707:8;:19;21724:1;21716:5;:9;;;;:::i;:::-;21707:19;;;;;;;;;;;;;;;;;;;;;21693:8;21702:1;21693:11;;;;;;;;:::i;:::-;;;;;;;:33;;;;;;;;;;;21673:3;;;;;21641:97;;;21344:401;;21202:543;;;;;;:::o;13082:215::-;13170:4;13187:80;13196:12;:10;:12::i;:::-;13210:7;13256:10;13219:11;:25;13231:12;:10;:12::i;:::-;13219:25;;;;;;;;;;;;;;;:34;13245:7;13219:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;13187:8;:80::i;:::-;13285:4;13278:11;;13082:215;;;;:::o;30222:98::-;2344:12;:10;:12::i;:::-;2333:23;;:7;:5;:7::i;:::-;:23;;;2325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30302:10:::1;30290:9;:22;;;;30222:98:::0;:::o;19789:135::-;2344:12;:10;:12::i;:::-;2333:23;;:7;:5;:7::i;:::-;:23;;;2325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19901:15:::1;19878:10;:20;19889:8;19878:20;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;19789:135:::0;;:::o;20966:81::-;21015:24;21021:10;21033:5;21015;:24::i;:::-;20966:81;:::o;19614:28::-;;;;;;;;;;;;;:::o;28193:103::-;2344:12;:10;:12::i;:::-;2333:23;;:7;:5;:7::i;:::-;:23;;;2325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28277:11:::1;28264:10;:24;;;;28193:103:::0;:::o;29095:114::-;2344:12;:10;:12::i;:::-;2333:23;;:7;:5;:7::i;:::-;:23;;;2325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29187:14:::1;29171:13;:30;;;;29095:114:::0;:::o;30657:102::-;2344:12;:10;:12::i;:::-;2333:23;;:7;:5;:7::i;:::-;:23;;;2325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30740:11:::1;30727:10;:24;;;;30657:102:::0;:::o;28107:78::-;2344:12;:10;:12::i;:::-;2333:23;;:7;:5;:7::i;:::-;:23;;;2325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28172:5:::1;28165:4;:12;;;;28107:78:::0;:::o;29413:82::-;2344:12;:10;:12::i;:::-;2333:23;;:7;:5;:7::i;:::-;:23;;;2325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29481:6:::1;29473:5;:14;;;;29413:82:::0;:::o;28875:114::-;2344:12;:10;:12::i;:::-;2333:23;;:7;:5;:7::i;:::-;:23;;;2325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28967:14:::1;28951:13;:30;;;;28875:114:::0;:::o;27973:126::-;2344:12;:10;:12::i;:::-;2333:23;;:7;:5;:7::i;:::-;:23;;;2325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28074:17:::1;28055:16;:36;;;;27973:126:::0;:::o;30571:78::-;2344:12;:10;:12::i;:::-;2333:23;;:7;:5;:7::i;:::-;:23;;;2325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30636:5:::1;30629:4;:12;;;;30571:78:::0;:::o;30328:106::-;2344:12;:10;:12::i;:::-;2333:23;;:7;:5;:7::i;:::-;:23;;;2325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30414:12:::1;30400:11;:26;;;;30328:106:::0;:::o;10654:127::-;10728:7;10755:9;:18;10765:7;10755:18;;;;;;;;;;;;;;;;10748:25;;10654:127;;;:::o;2764:103::-;2344:12;:10;:12::i;:::-;2333:23;;:7;:5;:7::i;:::-;:23;;;2325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2829:30:::1;2856:1;2829:18;:30::i;:::-;2764:103::o:0;26332:470::-;26457:15;26474:24;26511:18;26532:6;:15;26539:7;26532:15;;;;;;;;;;;;;;;;26511:36;;26565:8;26584:5;26576;:13;;;;:::i;:::-;26565:24;;26610:13;26604:3;:19;26600:71;;;26646:13;26640:19;;26600:71;26700:5;26694:3;:11;;;;:::i;:::-;26681:24;;26726:6;26752:1;26748:5;;26743:52;26759:10;26755:1;:14;26743:52;;;26771:3;;;;;26743:52;;;26500:302;;;26332:470;;;;;;:::o;28777:90::-;2344:12;:10;:12::i;:::-;2333:23;;:7;:5;:7::i;:::-;:23;;;2325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28851:8:::1;28841:7;:18;;;;28777:90:::0;:::o;19437:26::-;;;;;;;;;;;;;:::o;29503:106::-;2344:12;:10;:12::i;:::-;2333:23;;:7;:5;:7::i;:::-;:23;;;2325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29589:12:::1;29575:11;:26;;;;29503:106:::0;:::o;19513:52::-;;;;:::o;2113:87::-;2159:7;2186:6;;;;;;;;;;;2179:13;;2113:87;:::o;22504:45::-;22454:4;22504:45;:::o;28304:107::-;2344:12;:10;:12::i;:::-;2333:23;;:7;:5;:7::i;:::-;:23;;;2325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28391:12:::1;28377:11;:26;;;;28304:107:::0;:::o;9582:104::-;9638:13;9671:7;9664:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9582:104;:::o;25858:466::-;25984:15;26001:24;26038:18;26059:6;:15;26066:7;26059:15;;;;;;;;;;;;;;;;26038:36;;26090:8;26109:5;26101;:13;;;;:::i;:::-;26090:24;;26135:13;26129:3;:19;26125:71;;;26171:13;26165:19;;26125:71;26225:5;26219:3;:11;;;;:::i;:::-;26206:24;;26249:6;26275:1;26271:5;;26266:51;26282:10;26278:1;:14;26266:51;;;26294:3;;;;;26266:51;;;26027:297;;;25858:466;;;;;;:::o;20046:80::-;2344:12;:10;:12::i;:::-;2333:23;;:7;:5;:7::i;:::-;:23;;;2325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20113:5:::1;20103:7;;:15;;;;;;;;;;;;;;;;;;20046:80::o:0;13800:413::-;13893:4;13910:24;13937:11;:25;13949:12;:10;:12::i;:::-;13937:25;;;;;;;;;;;;;;;:34;13963:7;13937:34;;;;;;;;;;;;;;;;13910:61;;14010:15;13990:16;:35;;13982:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;14103:67;14112:12;:10;:12::i;:::-;14126:7;14154:15;14135:16;:34;14103:8;:67::i;:::-;14201:4;14194:11;;;13800:413;;;;:::o;10994:175::-;11080:4;11097:42;11107:12;:10;:12::i;:::-;11121:9;11132:6;11097:9;:42::i;:::-;11157:4;11150:11;;10994:175;;;;:::o;22690:29::-;;;;:::o;28557:90::-;2344:12;:10;:12::i;:::-;2333:23;;:7;:5;:7::i;:::-;:23;;;2325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28631:8:::1;28621:7;:18;;;;28557:90:::0;:::o;29303:102::-;2344:12;:10;:12::i;:::-;2333:23;;:7;:5;:7::i;:::-;:23;;;2325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29386:11:::1;29373:10;:24;;;;29303:102:::0;:::o;22556:32::-;;;;:::o;22945:213::-;23046:6;:18;23053:10;23046:18;;;;;;;;;;;;;;;;23038:5;:26;23030:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;23095:55;23128:10;23140:5;23147:2;23095:32;:55::i;:::-;22945:213;;:::o;25713:137::-;25817:13;25713:137;;;;:::o;28655:114::-;2344:12;:10;:12::i;:::-;2333:23;;:7;:5;:7::i;:::-;:23;;;2325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28747:14:::1;28731:13;:30;;;;28655:114:::0;:::o;29217:78::-;2344:12;:10;:12::i;:::-;2333:23;;:7;:5;:7::i;:::-;:23;;;2325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29282:5:::1;29275:4;:12;;;;29217:78:::0;:::o;26810:590::-;26934:15;26951:24;26988:18;27009:6;:15;27016:7;27009:15;;;;;;;;;;;;;;;;26988:36;;27048:13;27039:5;:22;27035:55;;27071:1;27087;27074:15;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27063:27;;;;;;;27035:55;27103:8;27122:5;27114;:13;;;;:::i;:::-;27103:24;;27148:13;27142:3;:19;27138:110;;;27184:13;27178:19;;27233:3;27225:5;:11;;;;:::i;:::-;27212:24;;27138:110;27284:10;27271:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27260:35;;27306:6;27323;27332:1;27323:10;;27353:5;27349:9;;27344:49;27364:3;27360:1;:7;27344:49;;;27369:3;;;;;27344:49;;;26977:423;;;;26810:590;;;;;;;:::o;19932:106::-;2344:12;:10;:12::i;:::-;2333:23;;:7;:5;:7::i;:::-;:23;;;2325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20016:14:::1;20000:13;;:30;;;;;;;;;;;;;;;;;;19932:106:::0;:::o;11232:151::-;11321:7;11348:11;:18;11360:5;11348:18;;;;;;;;;;;;;;;:27;11367:7;11348:27;;;;;;;;;;;;;;;;11341:34;;11232:151;;;;:::o;22595:37::-;22628:4;22595:37;:::o;20282:101::-;2344:12;:10;:12::i;:::-;2333:23;;:7;:5;:7::i;:::-;:23;;;2325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20374:1:::1;20355:16;;:20;;;;:::i;:::-;20336:16;:39;;;;20282:101::o:0;3022:201::-;2344:12;:10;:12::i;:::-;2333:23;;:7;:5;:7::i;:::-;:23;;;2325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3131:1:::1;3111:22;;:8;:22;;::::0;3103:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3187:28;3206:8;3187:18;:28::i;:::-;3022:201:::0;:::o;831:98::-;884:7;911:10;904:17;;831:98;:::o;17484:380::-;17637:1;17620:19;;:5;:19;;;17612:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17718:1;17699:21;;:7;:21;;;17691:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17802:6;17772:11;:18;17784:5;17772:18;;;;;;;;;;;;;;;:27;17791:7;17772:27;;;;;;;;;;;;;;;:36;;;;17840:7;17824:32;;17833:5;17824:32;;;17849:6;17824:32;;;;;;:::i;:::-;;;;;;;;17484:380;;;:::o;14703:733::-;14861:1;14843:20;;:6;:20;;;14835:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;14945:1;14924:23;;:9;:23;;;14916:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15000:47;15021:6;15029:9;15040:6;15000:20;:47::i;:::-;15060:21;15084:9;:17;15094:6;15084:17;;;;;;;;;;;;;;;;15060:41;;15137:6;15120:13;:23;;15112:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;15258:6;15242:13;:22;15222:9;:17;15232:6;15222:17;;;;;;;;;;;;;;;:42;;;;15310:6;15286:9;:20;15296:9;15286:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;15351:9;15334:35;;15343:6;15334:35;;;15362:6;15334:35;;;;;;:::i;:::-;;;;;;;;15382:46;15402:6;15410:9;15421:6;15382:19;:46::i;:::-;14824:612;14703:733;;;:::o;16455:591::-;16558:1;16539:21;;:7;:21;;;16531:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16611:49;16632:7;16649:1;16653:6;16611:20;:49::i;:::-;16673:22;16698:9;:18;16708:7;16698:18;;;;;;;;;;;;;;;;16673:43;;16753:6;16735:14;:24;;16727:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;16872:6;16855:14;:23;16834:9;:18;16844:7;16834:18;;;;;;;;;;;;;;;:44;;;;16916:6;16900:12;;:22;;;;;;;:::i;:::-;;;;;;;;16966:1;16940:37;;16949:7;16940:37;;;16970:6;16940:37;;;;;;:::i;:::-;;;;;;;;16990:48;17010:7;17027:1;17031:6;16990:19;:48::i;:::-;16520:526;16455:591;;:::o;3383:191::-;3457:16;3476:6;;;;;;;;;;;3457:25;;3502:8;3493:6;;:17;;;;;;;;;;;;;;;;;;3557:8;3526:40;;3547:8;3526:40;;;;;;;;;;;;3446:128;3383:191;:::o;22759:178::-;22895:19;:24;;;;;;;;;;;;;;22884:53;22759:178;;;:::o;20391:567::-;20543:10;:14;20554:2;20543:14;;;;;;;;;;;;;;;;;;;;;;;;;20542:15;:36;;;;;20562:10;:16;20573:4;20562:16;;;;;;;;;;;;;;;;;;;;;;;;;20561:17;20542:36;20534:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;20636:1;20611:27;;:13;;;;;;;;;;;:27;;;20607:148;;20671:7;:5;:7::i;:::-;20663:15;;:4;:15;;;:32;;;;20688:7;:5;:7::i;:::-;20682:13;;:2;:13;;;20663:32;20655:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20737:7;;20607:148;20771:7;;;;;;;;;;;:32;;;;;20790:13;;;;;;;;;;;20782:21;;:4;:21;;;20771:32;20767:184;;;20860:16;;20850:6;20828:19;20844:2;20828:15;:19::i;:::-;:28;;;;:::i;:::-;:48;;:100;;;;;20912:16;;20902:6;20880:19;20896:2;20880:15;:19::i;:::-;:28;;;;:::i;:::-;:48;;20828:100;20820:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;20767:184;20391:567;;;;:::o;19193:124::-;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;523:117::-;632:1;629;622:12;769:122;842:24;860:5;842:24;:::i;:::-;835:5;832:35;822:63;;881:1;878;871:12;822:63;769:122;:::o;897:139::-;943:5;981:6;968:20;959:29;;997:33;1024:5;997:33;:::i;:::-;897:139;;;;:::o;1042:329::-;1101:6;1150:2;1138:9;1129:7;1125:23;1121:32;1118:119;;;1156:79;;:::i;:::-;1118:119;1276:1;1301:53;1346:7;1337:6;1326:9;1322:22;1301:53;:::i;:::-;1291:63;;1247:117;1042:329;;;;:::o;1377:126::-;1414:7;1454:42;1447:5;1443:54;1432:65;;1377:126;;;:::o;1509:96::-;1546:7;1575:24;1593:5;1575:24;:::i;:::-;1564:35;;1509:96;;;:::o;1611:122::-;1684:24;1702:5;1684:24;:::i;:::-;1677:5;1674:35;1664:63;;1723:1;1720;1713:12;1664:63;1611:122;:::o;1739:139::-;1785:5;1823:6;1810:20;1801:29;;1839:33;1866:5;1839:33;:::i;:::-;1739:139;;;;:::o;1884:329::-;1943:6;1992:2;1980:9;1971:7;1967:23;1963:32;1960:119;;;1998:79;;:::i;:::-;1960:119;2118:1;2143:53;2188:7;2179:6;2168:9;2164:22;2143:53;:::i;:::-;2133:63;;2089:117;1884:329;;;;:::o;2219:99::-;2271:6;2305:5;2299:12;2289:22;;2219:99;;;:::o;2324:169::-;2408:11;2442:6;2437:3;2430:19;2482:4;2477:3;2473:14;2458:29;;2324:169;;;;:::o;2499:139::-;2588:6;2583:3;2578;2572:23;2629:1;2620:6;2615:3;2611:16;2604:27;2499:139;;;:::o;2644:102::-;2685:6;2736:2;2732:7;2727:2;2720:5;2716:14;2712:28;2702:38;;2644:102;;;:::o;2752:377::-;2840:3;2868:39;2901:5;2868:39;:::i;:::-;2923:71;2987:6;2982:3;2923:71;:::i;:::-;2916:78;;3003:65;3061:6;3056:3;3049:4;3042:5;3038:16;3003:65;:::i;:::-;3093:29;3115:6;3093:29;:::i;:::-;3088:3;3084:39;3077:46;;2844:285;2752:377;;;;:::o;3135:313::-;3248:4;3286:2;3275:9;3271:18;3263:26;;3335:9;3329:4;3325:20;3321:1;3310:9;3306:17;3299:47;3363:78;3436:4;3427:6;3363:78;:::i;:::-;3355:86;;3135:313;;;;:::o;3454:474::-;3522:6;3530;3579:2;3567:9;3558:7;3554:23;3550:32;3547:119;;;3585:79;;:::i;:::-;3547:119;3705:1;3730:53;3775:7;3766:6;3755:9;3751:22;3730:53;:::i;:::-;3720:63;;3676:117;3832:2;3858:53;3903:7;3894:6;3883:9;3879:22;3858:53;:::i;:::-;3848:63;;3803:118;3454:474;;;;;:::o;3934:90::-;3968:7;4011:5;4004:13;3997:21;3986:32;;3934:90;;;:::o;4030:109::-;4111:21;4126:5;4111:21;:::i;:::-;4106:3;4099:34;4030:109;;:::o;4145:210::-;4232:4;4270:2;4259:9;4255:18;4247:26;;4283:65;4345:1;4334:9;4330:17;4321:6;4283:65;:::i;:::-;4145:210;;;;:::o;4361:619::-;4438:6;4446;4454;4503:2;4491:9;4482:7;4478:23;4474:32;4471:119;;;4509:79;;:::i;:::-;4471:119;4629:1;4654:53;4699:7;4690:6;4679:9;4675:22;4654:53;:::i;:::-;4644:63;;4600:117;4756:2;4782:53;4827:7;4818:6;4807:9;4803:22;4782:53;:::i;:::-;4772:63;;4727:118;4884:2;4910:53;4955:7;4946:6;4935:9;4931:22;4910:53;:::i;:::-;4900:63;;4855:118;4361:619;;;;;:::o;4986:86::-;5021:7;5061:4;5054:5;5050:16;5039:27;;4986:86;;;:::o;5078:112::-;5161:22;5177:5;5161:22;:::i;:::-;5156:3;5149:35;5078:112;;:::o;5196:214::-;5285:4;5323:2;5312:9;5308:18;5300:26;;5336:67;5400:1;5389:9;5385:17;5376:6;5336:67;:::i;:::-;5196:214;;;;:::o;5416:474::-;5484:6;5492;5541:2;5529:9;5520:7;5516:23;5512:32;5509:119;;;5547:79;;:::i;:::-;5509:119;5667:1;5692:53;5737:7;5728:6;5717:9;5713:22;5692:53;:::i;:::-;5682:63;;5638:117;5794:2;5820:53;5865:7;5856:6;5845:9;5841:22;5820:53;:::i;:::-;5810:63;;5765:118;5416:474;;;;;:::o;5896:114::-;5963:6;5997:5;5991:12;5981:22;;5896:114;;;:::o;6016:184::-;6115:11;6149:6;6144:3;6137:19;6189:4;6184:3;6180:14;6165:29;;6016:184;;;;:::o;6206:132::-;6273:4;6296:3;6288:11;;6326:4;6321:3;6317:14;6309:22;;6206:132;;;:::o;6344:108::-;6421:24;6439:5;6421:24;:::i;:::-;6416:3;6409:37;6344:108;;:::o;6458:179::-;6527:10;6548:46;6590:3;6582:6;6548:46;:::i;:::-;6626:4;6621:3;6617:14;6603:28;;6458:179;;;;:::o;6643:113::-;6713:4;6745;6740:3;6736:14;6728:22;;6643:113;;;:::o;6792:732::-;6911:3;6940:54;6988:5;6940:54;:::i;:::-;7010:86;7089:6;7084:3;7010:86;:::i;:::-;7003:93;;7120:56;7170:5;7120:56;:::i;:::-;7199:7;7230:1;7215:284;7240:6;7237:1;7234:13;7215:284;;;7316:6;7310:13;7343:63;7402:3;7387:13;7343:63;:::i;:::-;7336:70;;7429:60;7482:6;7429:60;:::i;:::-;7419:70;;7275:224;7262:1;7259;7255:9;7250:14;;7215:284;;;7219:14;7515:3;7508:10;;6916:608;;;6792:732;;;;:::o;7530:483::-;7701:4;7739:2;7728:9;7724:18;7716:26;;7752:71;7820:1;7809:9;7805:17;7796:6;7752:71;:::i;:::-;7870:9;7864:4;7860:20;7855:2;7844:9;7840:18;7833:48;7898:108;8001:4;7992:6;7898:108;:::i;:::-;7890:116;;7530:483;;;;;:::o;8019:116::-;8089:21;8104:5;8089:21;:::i;:::-;8082:5;8079:32;8069:60;;8125:1;8122;8115:12;8069:60;8019:116;:::o;8141:133::-;8184:5;8222:6;8209:20;8200:29;;8238:30;8262:5;8238:30;:::i;:::-;8141:133;;;;:::o;8280:468::-;8345:6;8353;8402:2;8390:9;8381:7;8377:23;8373:32;8370:119;;;8408:79;;:::i;:::-;8370:119;8528:1;8553:53;8598:7;8589:6;8578:9;8574:22;8553:53;:::i;:::-;8543:63;;8499:117;8655:2;8681:50;8723:7;8714:6;8703:9;8699:22;8681:50;:::i;:::-;8671:60;;8626:115;8280:468;;;;;:::o;8754:118::-;8841:24;8859:5;8841:24;:::i;:::-;8836:3;8829:37;8754:118;;:::o;8878:222::-;8971:4;9009:2;8998:9;8994:18;8986:26;;9022:71;9090:1;9079:9;9075:17;9066:6;9022:71;:::i;:::-;8878:222;;;;:::o;9106:619::-;9183:6;9191;9199;9248:2;9236:9;9227:7;9223:23;9219:32;9216:119;;;9254:79;;:::i;:::-;9216:119;9374:1;9399:53;9444:7;9435:6;9424:9;9420:22;9399:53;:::i;:::-;9389:63;;9345:117;9501:2;9527:53;9572:7;9563:6;9552:9;9548:22;9527:53;:::i;:::-;9517:63;;9472:118;9629:2;9655:53;9700:7;9691:6;9680:9;9676:22;9655:53;:::i;:::-;9645:63;;9600:118;9106:619;;;;;:::o;9731:124::-;9808:6;9842:5;9836:12;9826:22;;9731:124;;;:::o;9861:194::-;9970:11;10004:6;9999:3;9992:19;10044:4;10039:3;10035:14;10020:29;;9861:194;;;;:::o;10061:142::-;10138:4;10161:3;10153:11;;10191:4;10186:3;10182:14;10174:22;;10061:142;;;:::o;10209:159::-;10283:11;10317:6;10312:3;10305:19;10357:4;10352:3;10348:14;10333:29;;10209:159;;;;:::o;10374:357::-;10452:3;10480:39;10513:5;10480:39;:::i;:::-;10535:61;10589:6;10584:3;10535:61;:::i;:::-;10528:68;;10605:65;10663:6;10658:3;10651:4;10644:5;10640:16;10605:65;:::i;:::-;10695:29;10717:6;10695:29;:::i;:::-;10690:3;10686:39;10679:46;;10456:275;10374:357;;;;:::o;10737:196::-;10826:10;10861:66;10923:3;10915:6;10861:66;:::i;:::-;10847:80;;10737:196;;;;:::o;10939:123::-;11019:4;11051;11046:3;11042:14;11034:22;;10939:123;;;:::o;11096:991::-;11235:3;11264:64;11322:5;11264:64;:::i;:::-;11344:96;11433:6;11428:3;11344:96;:::i;:::-;11337:103;;11466:3;11511:4;11503:6;11499:17;11494:3;11490:27;11541:66;11601:5;11541:66;:::i;:::-;11630:7;11661:1;11646:396;11671:6;11668:1;11665:13;11646:396;;;11742:9;11736:4;11732:20;11727:3;11720:33;11793:6;11787:13;11821:84;11900:4;11885:13;11821:84;:::i;:::-;11813:92;;11928:70;11991:6;11928:70;:::i;:::-;11918:80;;12027:4;12022:3;12018:14;12011:21;;11706:336;11693:1;11690;11686:9;11681:14;;11646:396;;;11650:14;12058:4;12051:11;;12078:3;12071:10;;11240:847;;;;;11096:991;;;;:::o;12093:523::-;12284:4;12322:2;12311:9;12307:18;12299:26;;12335:71;12403:1;12392:9;12388:17;12379:6;12335:71;:::i;:::-;12453:9;12447:4;12443:20;12438:2;12427:9;12423:18;12416:48;12481:128;12604:4;12595:6;12481:128;:::i;:::-;12473:136;;12093:523;;;;;:::o;12622:474::-;12690:6;12698;12747:2;12735:9;12726:7;12722:23;12718:32;12715:119;;;12753:79;;:::i;:::-;12715:119;12873:1;12898:53;12943:7;12934:6;12923:9;12919:22;12898:53;:::i;:::-;12888:63;;12844:117;13000:2;13026:53;13071:7;13062:6;13051:9;13047:22;13026:53;:::i;:::-;13016:63;;12971:118;12622:474;;;;;:::o;13102:::-;13170:6;13178;13227:2;13215:9;13206:7;13202:23;13198:32;13195:119;;;13233:79;;:::i;:::-;13195:119;13353:1;13378:53;13423:7;13414:6;13403:9;13399:22;13378:53;:::i;:::-;13368:63;;13324:117;13480:2;13506:53;13551:7;13542:6;13531:9;13527:22;13506:53;:::i;:::-;13496:63;;13451:118;13102:474;;;;;:::o;13582:182::-;13722:34;13718:1;13710:6;13706:14;13699:58;13582:182;:::o;13770:366::-;13912:3;13933:67;13997:2;13992:3;13933:67;:::i;:::-;13926:74;;14009:93;14098:3;14009:93;:::i;:::-;14127:2;14122:3;14118:12;14111:19;;13770:366;;;:::o;14142:419::-;14308:4;14346:2;14335:9;14331:18;14323:26;;14395:9;14389:4;14385:20;14381:1;14370:9;14366:17;14359:47;14423:131;14549:4;14423:131;:::i;:::-;14415:139;;14142:419;;;:::o;14567:180::-;14615:77;14612:1;14605:88;14712:4;14709:1;14702:15;14736:4;14733:1;14726:15;14753:320;14797:6;14834:1;14828:4;14824:12;14814:22;;14881:1;14875:4;14871:12;14902:18;14892:81;;14958:4;14950:6;14946:17;14936:27;;14892:81;15020:2;15012:6;15009:14;14989:18;14986:38;14983:84;;15039:18;;:::i;:::-;14983:84;14804:269;14753:320;;;:::o;15079:227::-;15219:34;15215:1;15207:6;15203:14;15196:58;15288:10;15283:2;15275:6;15271:15;15264:35;15079:227;:::o;15312:366::-;15454:3;15475:67;15539:2;15534:3;15475:67;:::i;:::-;15468:74;;15551:93;15640:3;15551:93;:::i;:::-;15669:2;15664:3;15660:12;15653:19;;15312:366;;;:::o;15684:419::-;15850:4;15888:2;15877:9;15873:18;15865:26;;15937:9;15931:4;15927:20;15923:1;15912:9;15908:17;15901:47;15965:131;16091:4;15965:131;:::i;:::-;15957:139;;15684:419;;;:::o;16109:180::-;16157:77;16154:1;16147:88;16254:4;16251:1;16244:15;16278:4;16275:1;16268:15;16295:180;16343:77;16340:1;16333:88;16440:4;16437:1;16430:15;16464:4;16461:1;16454:15;16481:191;16521:3;16540:20;16558:1;16540:20;:::i;:::-;16535:25;;16574:20;16592:1;16574:20;:::i;:::-;16569:25;;16617:1;16614;16610:9;16603:16;;16638:3;16635:1;16632:10;16629:36;;;16645:18;;:::i;:::-;16629:36;16481:191;;;;:::o;16678:194::-;16718:4;16738:20;16756:1;16738:20;:::i;:::-;16733:25;;16772:20;16790:1;16772:20;:::i;:::-;16767:25;;16816:1;16813;16809:9;16801:17;;16840:1;16834:4;16831:11;16828:37;;;16845:18;;:::i;:::-;16828:37;16678:194;;;;:::o;16878:180::-;16926:77;16923:1;16916:88;17023:4;17020:1;17013:15;17047:4;17044:1;17037:15;17064:224;17204:34;17200:1;17192:6;17188:14;17181:58;17273:7;17268:2;17260:6;17256:15;17249:32;17064:224;:::o;17294:366::-;17436:3;17457:67;17521:2;17516:3;17457:67;:::i;:::-;17450:74;;17533:93;17622:3;17533:93;:::i;:::-;17651:2;17646:3;17642:12;17635:19;;17294:366;;;:::o;17666:419::-;17832:4;17870:2;17859:9;17855:18;17847:26;;17919:9;17913:4;17909:20;17905:1;17894:9;17890:17;17883:47;17947:131;18073:4;17947:131;:::i;:::-;17939:139;;17666:419;;;:::o;18091:165::-;18231:17;18227:1;18219:6;18215:14;18208:41;18091:165;:::o;18262:366::-;18404:3;18425:67;18489:2;18484:3;18425:67;:::i;:::-;18418:74;;18501:93;18590:3;18501:93;:::i;:::-;18619:2;18614:3;18610:12;18603:19;;18262:366;;;:::o;18634:419::-;18800:4;18838:2;18827:9;18823:18;18815:26;;18887:9;18881:4;18877:20;18873:1;18862:9;18858:17;18851:47;18915:131;19041:4;18915:131;:::i;:::-;18907:139;;18634:419;;;:::o;19059:410::-;19099:7;19122:20;19140:1;19122:20;:::i;:::-;19117:25;;19156:20;19174:1;19156:20;:::i;:::-;19151:25;;19211:1;19208;19204:9;19233:30;19251:11;19233:30;:::i;:::-;19222:41;;19412:1;19403:7;19399:15;19396:1;19393:22;19373:1;19366:9;19346:83;19323:139;;19442:18;;:::i;:::-;19323:139;19107:362;19059:410;;;;:::o;19475:225::-;19615:34;19611:1;19603:6;19599:14;19592:58;19684:8;19679:2;19671:6;19667:15;19660:33;19475:225;:::o;19706:366::-;19848:3;19869:67;19933:2;19928:3;19869:67;:::i;:::-;19862:74;;19945:93;20034:3;19945:93;:::i;:::-;20063:2;20058:3;20054:12;20047:19;;19706:366;;;:::o;20078:419::-;20244:4;20282:2;20271:9;20267:18;20259:26;;20331:9;20325:4;20321:20;20317:1;20306:9;20302:17;20295:47;20359:131;20485:4;20359:131;:::i;:::-;20351:139;;20078:419;;;:::o;20503:223::-;20643:34;20639:1;20631:6;20627:14;20620:58;20712:6;20707:2;20699:6;20695:15;20688:31;20503:223;:::o;20732:366::-;20874:3;20895:67;20959:2;20954:3;20895:67;:::i;:::-;20888:74;;20971:93;21060:3;20971:93;:::i;:::-;21089:2;21084:3;21080:12;21073:19;;20732:366;;;:::o;21104:419::-;21270:4;21308:2;21297:9;21293:18;21285:26;;21357:9;21351:4;21347:20;21343:1;21332:9;21328:17;21321:47;21385:131;21511:4;21385:131;:::i;:::-;21377:139;;21104:419;;;:::o;21529:221::-;21669:34;21665:1;21657:6;21653:14;21646:58;21738:4;21733:2;21725:6;21721:15;21714:29;21529:221;:::o;21756:366::-;21898:3;21919:67;21983:2;21978:3;21919:67;:::i;:::-;21912:74;;21995:93;22084:3;21995:93;:::i;:::-;22113:2;22108:3;22104:12;22097:19;;21756:366;;;:::o;22128:419::-;22294:4;22332:2;22321:9;22317:18;22309:26;;22381:9;22375:4;22371:20;22367:1;22356:9;22352:17;22345:47;22409:131;22535:4;22409:131;:::i;:::-;22401:139;;22128:419;;;:::o;22553:224::-;22693:34;22689:1;22681:6;22677:14;22670:58;22762:7;22757:2;22749:6;22745:15;22738:32;22553:224;:::o;22783:366::-;22925:3;22946:67;23010:2;23005:3;22946:67;:::i;:::-;22939:74;;23022:93;23111:3;23022:93;:::i;:::-;23140:2;23135:3;23131:12;23124:19;;22783:366;;;:::o;23155:419::-;23321:4;23359:2;23348:9;23344:18;23336:26;;23408:9;23402:4;23398:20;23394:1;23383:9;23379:17;23372:47;23436:131;23562:4;23436:131;:::i;:::-;23428:139;;23155:419;;;:::o;23580:222::-;23720:34;23716:1;23708:6;23704:14;23697:58;23789:5;23784:2;23776:6;23772:15;23765:30;23580:222;:::o;23808:366::-;23950:3;23971:67;24035:2;24030:3;23971:67;:::i;:::-;23964:74;;24047:93;24136:3;24047:93;:::i;:::-;24165:2;24160:3;24156:12;24149:19;;23808:366;;;:::o;24180:419::-;24346:4;24384:2;24373:9;24369:18;24361:26;;24433:9;24427:4;24423:20;24419:1;24408:9;24404:17;24397:47;24461:131;24587:4;24461:131;:::i;:::-;24453:139;;24180:419;;;:::o;24605:225::-;24745:34;24741:1;24733:6;24729:14;24722:58;24814:8;24809:2;24801:6;24797:15;24790:33;24605:225;:::o;24836:366::-;24978:3;24999:67;25063:2;25058:3;24999:67;:::i;:::-;24992:74;;25075:93;25164:3;25075:93;:::i;:::-;25193:2;25188:3;25184:12;25177:19;;24836:366;;;:::o;25208:419::-;25374:4;25412:2;25401:9;25397:18;25389:26;;25461:9;25455:4;25451:20;25447:1;25436:9;25432:17;25425:47;25489:131;25615:4;25489:131;:::i;:::-;25481:139;;25208:419;;;:::o;25633:220::-;25773:34;25769:1;25761:6;25757:14;25750:58;25842:3;25837:2;25829:6;25825:15;25818:28;25633:220;:::o;25859:366::-;26001:3;26022:67;26086:2;26081:3;26022:67;:::i;:::-;26015:74;;26098:93;26187:3;26098:93;:::i;:::-;26216:2;26211:3;26207:12;26200:19;;25859:366;;;:::o;26231:419::-;26397:4;26435:2;26424:9;26420:18;26412:26;;26484:9;26478:4;26474:20;26470:1;26459:9;26455:17;26448:47;26512:131;26638:4;26512:131;:::i;:::-;26504:139;;26231:419;;;:::o;26656:221::-;26796:34;26792:1;26784:6;26780:14;26773:58;26865:4;26860:2;26852:6;26848:15;26841:29;26656:221;:::o;26883:366::-;27025:3;27046:67;27110:2;27105:3;27046:67;:::i;:::-;27039:74;;27122:93;27211:3;27122:93;:::i;:::-;27240:2;27235:3;27231:12;27224:19;;26883:366;;;:::o;27255:419::-;27421:4;27459:2;27448:9;27444:18;27436:26;;27508:9;27502:4;27498:20;27494:1;27483:9;27479:17;27472:47;27536:131;27662:4;27536:131;:::i;:::-;27528:139;;27255:419;;;:::o;27680:161::-;27820:13;27816:1;27808:6;27804:14;27797:37;27680:161;:::o;27847:366::-;27989:3;28010:67;28074:2;28069:3;28010:67;:::i;:::-;28003:74;;28086:93;28175:3;28086:93;:::i;:::-;28204:2;28199:3;28195:12;28188:19;;27847:366;;;:::o;28219:419::-;28385:4;28423:2;28412:9;28408:18;28400:26;;28472:9;28466:4;28462:20;28458:1;28447:9;28443:17;28436:47;28500:131;28626:4;28500:131;:::i;:::-;28492:139;;28219:419;;;:::o;28644:172::-;28784:24;28780:1;28772:6;28768:14;28761:48;28644:172;:::o;28822:366::-;28964:3;28985:67;29049:2;29044:3;28985:67;:::i;:::-;28978:74;;29061:93;29150:3;29061:93;:::i;:::-;29179:2;29174:3;29170:12;29163:19;;28822:366;;;:::o;29194:419::-;29360:4;29398:2;29387:9;29383:18;29375:26;;29447:9;29441:4;29437:20;29433:1;29422:9;29418:17;29411:47;29475:131;29601:4;29475:131;:::i;:::-;29467:139;;29194:419;;;:::o;29619:156::-;29759:8;29755:1;29747:6;29743:14;29736:32;29619:156;:::o;29781:365::-;29923:3;29944:66;30008:1;30003:3;29944:66;:::i;:::-;29937:73;;30019:93;30108:3;30019:93;:::i;:::-;30137:2;30132:3;30128:12;30121:19;;29781:365;;;:::o;30152:419::-;30318:4;30356:2;30345:9;30341:18;30333:26;;30405:9;30399:4;30395:20;30391:1;30380:9;30376:17;30369:47;30433:131;30559:4;30433:131;:::i;:::-;30425:139;;30152:419;;;:::o

Swarm Source

ipfs://ae18a6560a5474277b6827f33ae4c04c4fc579db950a99168bb6820bdf230cbb
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.