ETH Price: $2,068.18 (+2.24%)

Token

amatotoJob (AMAJOB)
 

Overview

Max Total Supply

7,500,000 AMAJOB

Holders

4

Transfers

-
0

Market

Onchain Market Cap

-

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:
amatotoJob

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2023-07-24
*/

// SPDX-License-Identifier: MIT
pragma solidity >=0.8.18;


/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

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

    /**
     * @dev 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 `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, 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 `from` to `to` 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 from, address to, uint256 amount) external returns (bool);
}


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


/**
 * @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;
    }
}


/**
 * @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.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * The default value of {decimals} is 18. To change this, you should override
 * this function so it returns a different value.
 *
 * 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}.
     *
     * 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 default value returned by this function, unless
     * it's overridden.
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

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

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

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

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

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

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

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

        return true;
    }

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

        _beforeTokenTransfer(from, to, amount);

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

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/**
 * @dev Extension of {ERC20} that allows token holders to destroy both their own
 * tokens and those that they have an allowance for, in a way that can be
 * recognized off-chain (via event analysis).
 */
abstract contract ERC20Burnable is Context, ERC20 {
    /**
     * @dev Destroys `amount` tokens from the caller.
     *
     * See {ERC20-_burn}.
     */
    function burn(uint256 amount) public virtual {
        _burn(_msgSender(), amount);
    }

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

/**
 * @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 Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby disabling 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);
    }
}


//-------------------------------------------
//contact: amatoto.io, amatoto.us,amatoto.com /  office@amatoto.io
//clock_In(), clock_Out() and jobSuccess() to play with this contract.
//setDate()   to reset the activity or send at exaxt x time any amount to the contract
//-----------------------------------------------
//import the uniswap router
//the contract needs to use swapExactTokensForTokens
//this will allow us to import swapExactTokensForTokens into our contract

//---------------------------------------------------

contract amatotoJob is ERC20, ERC20Burnable, Ownable {
  using SafeMath for uint256;
    address Owner;
    address walletX=0xD0cb495d8cb4dF873DEB55D857EfAD3119b8d480;
    address WalletY=0x1F62A5380a694613b81e7a9b44bA3268d6f838E5;
    address WalletZ=0x1F62A5380a694613b81e7a9b44bA3268d6f838E5;
    address anyWallet=0x0B7672b366953CA23160eB742eaBdd34A02926F6;

    uint timeHours;uint timeReset;
    uint walletDate;uint amatotoDate;
    mapping(address=>uint) private clockIn;
    mapping(address=>uint) private clockOut;
    uint256 tokenPaid=2500000 *10**18;
    uint256 tokenPaid_B=25 *10**18;
    
    uint256 limitToken=0;
    uint tranferChoice=2;
    uint qtToken=3;
    uint mintOrStock=1;
    uint stopmint=0;
    constructor() ERC20("amatotoJob", "AMAJOB") {
    walletDate = block.timestamp;
    amatotoDate = block.timestamp;
    timeHours=3 hours;
    timeReset=4 hours;
    Owner=msg.sender;
    
    }

  // count number first 501 users obtain more tokens
  function alimitToken() public view returns (uint256) {
    return limitToken;
  }
  
  function xDaysHavePassed(uint xdays) private view returns (bool) {
    return (xdays == (amatotoDate + 2 days));
  }

 function setDate()external onlyOwner{
		amatotoDate = block.timestamp;
	}
 function setTimeHours(uint _timeHours)external onlyOwner{
   require(_timeHours >=3,"time < 3 hours, add one more at least");
     timeHours=_timeHours;
     timeReset=_timeHours + 1 hours;
		
	}

  function clock_In()external payable{
      require(msg.value ==1e15 wei, "Not enough funds");
      payable(walletX).transfer(msg.value);
     require(clockIn[msg.sender]==0,"User has already clocked in");
      clockIn[msg.sender]  = block.timestamp; 
      } 
      
 function clock_Out()external payable{
      require(clockIn[msg.sender]>0,"User did not clock in");
      require(msg.value ==1e15 wei, "Not enough funds");
      payable(WalletY).transfer(msg.value);
      require(clockOut[msg.sender]==0,"User has already clocked out");
      clockOut[msg.sender]  = block.timestamp; 
      } 

 function timeUser()external view returns (uint){
      require(clockOut[msg.sender]>0,"User did not clock out");
      uint timeIn=clockIn[msg.sender] ;
      uint timeOut=clockOut[msg.sender]; 
      uint diff= timeOut - timeIn;
      return diff;
      } 
      
function timeOutUser() public view returns (uint){
      require(clockOut[msg.sender]>0,"User did not clock out");
      uint timeOut=clockOut[msg.sender]; 
      return timeOut;
      } 

///use this after clock out
function jobSuccess() external payable{
      require(msg.value ==1e15 wei, "Not enough funds");
      require(clockIn[msg.sender]>0,"User did not clock in");
      require(clockOut[msg.sender]>0,"User did not clock out");
      
      payable(WalletZ).transfer(msg.value);
      uint timeOut=timeOutUser();
if (timeOut >(amatotoDate + 2 hours)) {
      if(timeOut < amatotoDate + timeHours){
//mint token for user
        if (limitToken <=2){
            if(stopmint==0){
            _mint(msg.sender, tokenPaid);
            limitToken +=1;}
      }else{
          if(stopmint==0){
          _mint(msg.sender, tokenPaid_B);}
      }

      }
}
clockIn[msg.sender] =0;
clockOut[msg.sender] =0;
}

function timeInUser()external view returns (uint){
      require(clockIn[msg.sender]>0,"User did not clock out");
      uint timeIn=clockIn[msg.sender] ;
      return timeIn;
      } 

function withdraw() public  onlyOwner {
    payable(msg.sender).transfer(address(this).balance);
}
  function withdrawToken (address tokenAddress) public
        onlyOwner() {
    IERC20 tokenx = IERC20(tokenAddress);
    uint256 balancee = tokenx.balanceOf(address(this));
    tokenx.transfer(msg.sender, balancee);
    
}
 function setWalletX(address walletPay)external onlyOwner {
		walletX = walletPay;
	}

 function setWalletY(address walletPay)external onlyOwner {
		WalletY = walletPay;
	}
function setAnyWallet(address payable anyWalletPay) public {
   require(block.timestamp > walletDate + 12 hours);//now +12 hours or in 12 hours
		anyWallet = anyWalletPay;
    walletDate = block.timestamp;//reset it to now time
	}
function setWalletZ(address walletPay)external onlyOwner {
		WalletZ = walletPay;
	}
 function setStopmint(uint valzeroOrOne)external onlyOwner {
		stopmint = valzeroOrOne;
	}

  function any_Wallet()external payable returns (address){
    require(msg.value ==1e18 wei, "Not enough funds");
    payable(walletX).transfer(msg.value);
      return anyWallet;
      } 
  function Wallet_Y()external view returns (address){
      return WalletY;
      } 

  function Wallet_X()external view returns (address){
      return walletX;
      } 

function setTranferChoice(uint choice)external onlyOwner {
		tranferChoice = choice;//
	}
 

  function resetAllWallet()external onlyOwner{
    walletX=0xD0cb495d8cb4dF873DEB55D857EfAD3119b8d480;
    WalletY=0x1F62A5380a694613b81e7a9b44bA3268d6f838E5;
    WalletZ=0x1F62A5380a694613b81e7a9b44bA3268d6f838E5;
    anyWallet=0x0B7672b366953CA23160eB742eaBdd34A02926F6;
  }
  function checkIfBusy() external returns (string memory){
      if(block.timestamp > amatotoDate + timeReset){
          amatotoDate=block.timestamp;
          return "No. You can clock in";}else{
              return "Yes. Please wait!";

      }
  }
//-----------------------------------------------
/// @notice Handles when funds are sent directly to the contract address for donation
    receive() external payable {
        
      if (tranferChoice==0){
 		payable(walletX).transfer(msg.value);
         
     }else if(tranferChoice==1){
       payable(WalletY).transfer(msg.value);
       
     }else if(tranferChoice==2){
       payable(anyWallet).transfer(msg.value);
       
     }else{
       // send the wei earned to the token owner
    payable(Owner).transfer((msg.value).div(2));
		 // send half ether earned to a service wallet for the project
		payable(WalletZ).transfer((msg.value).div(2));
    
     }
     //----------reset the time automatically------------------
      if(block.timestamp > amatotoDate + timeReset){
          amatotoDate=block.timestamp;

      }
    }
    }

   
/**
 * @title SafeMathInt
 * @dev Math operations for int256 with overflow safety checks.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        uint256 c = a + b;
        if (c < a) return (false, 0);
        return (true, c);
    }

    /**
     * @dev Returns the substraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b > a) return (false, 0);
        return (true, a - b);
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        // Gas optimization: this is cheArtHatr than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) return (true, 0);
        uint256 c = a * b;
        if (c / a != b) return (false, 0);
        return (true, c);
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b == 0) return (false, 0);
        return (true, a / b);
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b == 0) return (false, 0);
        return (true, a % b);
    }

    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

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

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) return 0;
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

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

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

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        return a - b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryDiv}.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        return a % b;
    }
}

//-------------------end safeMath------------

Contract Security Audit

Contract ABI

API
[{"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":"Wallet_X","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Wallet_Y","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"alimitToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"any_Wallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkIfBusy","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"clock_In","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"clock_Out","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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":"jobSuccess","outputs":[],"stateMutability":"payable","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":"resetAllWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"anyWalletPay","type":"address"}],"name":"setAnyWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setDate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"valzeroOrOne","type":"uint256"}],"name":"setStopmint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_timeHours","type":"uint256"}],"name":"setTimeHours","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"choice","type":"uint256"}],"name":"setTranferChoice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"walletPay","type":"address"}],"name":"setWalletX","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"walletPay","type":"address"}],"name":"setWalletY","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"walletPay","type":"address"}],"name":"setWalletZ","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"timeInUser","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"timeOutUser","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"timeUser","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405273d0cb495d8cb4df873deb55d857efad3119b8d480600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550731f62a5380a694613b81e7a9b44ba3268d6f838e5600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550731f62a5380a694613b81e7a9b44ba3268d6f838e5600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550730b7672b366953ca23160eb742eabdd34a02926f6600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506a021165458500521280000060115568015af1d78b58c40000601255600060135560026014556003601555600160165560006017553480156200019a57600080fd5b506040518060400160405280600a81526020017f616d61746f746f4a6f62000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f414d414a4f4200000000000000000000000000000000000000000000000000008152508160039081620002189190620005fc565b5080600490816200022a9190620005fc565b5050506200024d62000241620002b460201b60201c565b620002bc60201b60201c565b42600d8190555042600e81905550612a30600b81905550613840600c8190555033600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620006e3565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200040457607f821691505b6020821081036200041a5762000419620003bc565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620004847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000445565b62000490868362000445565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620004dd620004d7620004d184620004a8565b620004b2565b620004a8565b9050919050565b6000819050919050565b620004f983620004bc565b620005116200050882620004e4565b84845462000452565b825550505050565b600090565b6200052862000519565b62000535818484620004ee565b505050565b5b818110156200055d57620005516000826200051e565b6001810190506200053b565b5050565b601f821115620005ac57620005768162000420565b620005818462000435565b8101602085101562000591578190505b620005a9620005a08562000435565b8301826200053a565b50505b505050565b600082821c905092915050565b6000620005d160001984600802620005b1565b1980831691505092915050565b6000620005ec8383620005be565b9150826002028217905092915050565b620006078262000382565b67ffffffffffffffff8111156200062357620006226200038d565b5b6200062f8254620003eb565b6200063c82828562000561565b600060209050601f8311600181146200067457600084156200065f578287015190505b6200066b8582620005de565b865550620006db565b601f198416620006848662000420565b60005b82811015620006ae5784890151825560018201915060208501945060208101905062000687565b86831015620006ce5784890151620006ca601f891682620005be565b8355505b6001600288020188555050505b505050505050565b61377880620006f36000396000f3fe6080604052600436106102295760003560e01c8063849a275b11610123578063a9059cbb116100ab578063dd62ed3e1161006f578063dd62ed3e146109ee578063f2fde38b14610a2b578063f985000814610a54578063f9e382cf14610a6b578063fe6bef4214610a96576104b2565b8063a9059cbb14610914578063afa9d23614610951578063c81247461461097c578063cd8cd05b146109a7578063d808d0ab146109d0576104b2565b80639ffdb853116100f25780639ffdb85314610890578063a457c2d71461089a578063a5ff9d6b146108d7578063a7fedaa3146108e1578063a8f8a4fe146108eb576104b2565b8063849a275b146107e657806389476069146108115780638da5cb5b1461083a57806395d89b4114610865576104b2565b806342966c68116101b1578063696f936e11610175578063696f936e1461071557806370a0823114610740578063715018a61461077d57806377d5ae641461079457806379cc6790146107bd576104b2565b806342966c681461065857806345a8ce6b146106815780635419fc9d146106aa57806368696169146106d357806368c7bf84146106fe576104b2565b80631a4a0278116101f85780631a4a02781461057357806323b872dd1461059c578063313ce567146105d957806339509351146106045780633ccfd60b14610641576104b2565b806306fdde03146104b7578063095ea7b3146104e25780630f51ed521461051f57806318160ddd14610548576104b2565b366104b2576000601454036102a657600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156102a0573d6000803e3d6000fd5b50610491565b60016014540361031e57600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015610318573d6000803e3d6000fd5b50610490565b60026014540361039657600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015610390573d6000803e3d6000fd5b5061048f565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6103e6600234610ac190919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015610411573d6000803e3d6000fd5b50600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc610462600234610ac190919063ffffffff16565b9081150290604051600060405180830381858888f1935050505015801561048d573d6000803e3d6000fd5b505b5b5b600c54600e546104a1919061283c565b4211156104b05742600e819055505b005b600080fd5b3480156104c357600080fd5b506104cc610b19565b6040516104d99190612900565b60405180910390f35b3480156104ee57600080fd5b50610509600480360381019061050491906129b1565b610bab565b6040516105169190612a0c565b60405180910390f35b34801561052b57600080fd5b5061054660048036038101906105419190612a65565b610bce565b005b34801561055457600080fd5b5061055d610c34565b60405161056a9190612aa1565b60405180910390f35b34801561057f57600080fd5b5061059a60048036038101906105959190612abc565b610c3e565b005b3480156105a857600080fd5b506105c360048036038101906105be9190612ae9565b610ca8565b6040516105d09190612a0c565b60405180910390f35b3480156105e557600080fd5b506105ee610cd7565b6040516105fb9190612b58565b60405180910390f35b34801561061057600080fd5b5061062b600480360381019061062691906129b1565b610ce0565b6040516106389190612a0c565b60405180910390f35b34801561064d57600080fd5b50610656610d17565b005b34801561066457600080fd5b5061067f600480360381019061067a9190612abc565b610d68565b005b34801561068d57600080fd5b506106a860048036038101906106a39190612b73565b610d7c565b005b3480156106b657600080fd5b506106d160048036038101906106cc9190612abc565b610dc8565b005b3480156106df57600080fd5b506106e8610dda565b6040516106f59190612baf565b60405180910390f35b34801561070a57600080fd5b50610713610e04565b005b34801561072157600080fd5b5061072a610f62565b6040516107379190612aa1565b60405180910390f35b34801561074c57600080fd5b5061076760048036038101906107629190612b73565b611030565b6040516107749190612aa1565b60405180910390f35b34801561078957600080fd5b50610792611078565b005b3480156107a057600080fd5b506107bb60048036038101906107b69190612b73565b61108c565b005b3480156107c957600080fd5b506107e460048036038101906107df91906129b1565b6110d8565b005b3480156107f257600080fd5b506107fb6110f8565b6040516108089190612baf565b60405180910390f35b34801561081d57600080fd5b5061083860048036038101906108339190612b73565b611122565b005b34801561084657600080fd5b5061084f611231565b60405161085c9190612baf565b60405180910390f35b34801561087157600080fd5b5061087a61125b565b6040516108879190612900565b60405180910390f35b6108986112ed565b005b3480156108a657600080fd5b506108c160048036038101906108bc91906129b1565b611467565b6040516108ce9190612a0c565b60405180910390f35b6108df6114de565b005b6108e96116da565b005b3480156108f757600080fd5b50610912600480360381019061090d9190612abc565b6119b1565b005b34801561092057600080fd5b5061093b600480360381019061093691906129b1565b6119c3565b6040516109489190612a0c565b60405180910390f35b34801561095d57600080fd5b506109666119e6565b6040516109739190612900565b60405180910390f35b34801561098857600080fd5b50610991611a7f565b60405161099e9190612aa1565b60405180910390f35b3480156109b357600080fd5b506109ce60048036038101906109c99190612b73565b611ba3565b005b6109d8611bef565b6040516109e59190612baf565b60405180910390f35b3480156109fa57600080fd5b50610a156004803603810190610a109190612bca565b611ccc565b604051610a229190612aa1565b60405180910390f35b348015610a3757600080fd5b50610a526004803603810190610a4d9190612b73565b611d53565b005b348015610a6057600080fd5b50610a69611dd6565b005b348015610a7757600080fd5b50610a80611de7565b604051610a8d9190612aa1565b60405180910390f35b348015610aa257600080fd5b50610aab611df1565b604051610ab89190612aa1565b60405180910390f35b6000808211610b05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610afc90612c56565b60405180910390fd5b8183610b119190612ca5565b905092915050565b606060038054610b2890612d05565b80601f0160208091040260200160405190810160405280929190818152602001828054610b5490612d05565b8015610ba15780601f10610b7657610100808354040283529160200191610ba1565b820191906000526020600020905b815481529060010190602001808311610b8457829003601f168201915b5050505050905090565b600080610bb6611ebf565b9050610bc3818585611ec7565b600191505092915050565b61a8c0600d54610bde919061283c565b4211610be957600080fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555042600d8190555050565b6000600254905090565b610c46612090565b6003811015610c8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8190612da8565b60405180910390fd5b80600b81905550610e1081610c9f919061283c565b600c8190555050565b600080610cb3611ebf565b9050610cc085828561210e565b610ccb85858561219a565b60019150509392505050565b60006012905090565b600080610ceb611ebf565b9050610d0c818585610cfd8589611ccc565b610d07919061283c565b611ec7565b600191505092915050565b610d1f612090565b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610d65573d6000803e3d6000fd5b50565b610d79610d73611ebf565b82612410565b50565b610d84612090565b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610dd0612090565b8060178190555050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610e0c612090565b73d0cb495d8cb4df873deb55d857efad3119b8d480600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550731f62a5380a694613b81e7a9b44ba3268d6f838e5600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550731f62a5380a694613b81e7a9b44ba3268d6f838e5600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550730b7672b366953ca23160eb742eabdd34a02926f6600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411610fe5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdc90612e14565b60405180910390fd5b6000601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508091505090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611080612090565b61108a60006125dd565b565b611094612090565b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6110ea826110e4611ebf565b8361210e565b6110f48282612410565b5050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61112a612090565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161116a9190612baf565b602060405180830381865afa158015611187573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ab9190612e49565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016111e8929190612e76565b6020604051808303816000875af1158015611207573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061122b9190612ecb565b50505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461126a90612d05565b80601f016020809104026020016040519081016040528092919081815260200182805461129690612d05565b80156112e35780601f106112b8576101008083540402835291602001916112e3565b820191906000526020600020905b8154815290600101906020018083116112c657829003601f168201915b5050505050905090565b66038d7ea4c680003414611336576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132d90612f44565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f1935050505015801561139e573d6000803e3d6000fd5b506000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611421576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141890612fb0565b60405180910390fd5b42600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b600080611472611ebf565b905060006114808286611ccc565b9050838110156114c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bc90613042565b60405180910390fd5b6114d28286868403611ec7565b60019250505092915050565b6000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411611560576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611557906130ae565b60405180910390fd5b66038d7ea4c6800034146115a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a090612f44565b60405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015611611573d6000803e3d6000fd5b506000601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611694576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168b9061311a565b60405180910390fd5b42601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b66038d7ea4c680003414611723576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171a90612f44565b60405180910390fd5b6000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054116117a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179c906130ae565b60405180910390fd5b6000601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411611827576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181e90612e14565b60405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f1935050505015801561188f573d6000803e3d6000fd5b50600061189a610f62565b9050611c20600e546118ac919061283c565b81111561192457600b54600e546118c3919061283c565b8110156119235760026013541161190a57600060175403611905576118ea336011546126a3565b6001601360008282546118fd919061283c565b925050819055505b611922565b60006017540361192157611920336012546126a3565b5b5b5b5b6000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b6119b9612090565b8060148190555050565b6000806119ce611ebf565b90506119db81858561219a565b600191505092915050565b6060600c54600e546119f8919061283c565b421115611a435742600e819055506040518060400160405280601481526020017f4e6f2e20596f752063616e20636c6f636b20696e0000000000000000000000008152509050611a7c565b6040518060400160405280601181526020017f5965732e20506c6561736520776169742100000000000000000000000000000081525090505b90565b600080601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411611b02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af990612e14565b60405180910390fd5b6000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008282611b98919061313a565b905080935050505090565b611bab612090565b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000670de0b6b3a76400003414611c3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3290612f44565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015611ca3573d6000803e3d6000fd5b50600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611d5b612090565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611dca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc1906131e0565b60405180910390fd5b611dd3816125dd565b50565b611dde612090565b42600e81905550565b6000601354905090565b600080600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411611e74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6b90612e14565b60405180910390fd5b6000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508091505090565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2d90613272565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9c90613304565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516120839190612aa1565b60405180910390a3505050565b612098611ebf565b73ffffffffffffffffffffffffffffffffffffffff166120b6611231565b73ffffffffffffffffffffffffffffffffffffffff161461210c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210390613370565b60405180910390fd5b565b600061211a8484611ccc565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146121945781811015612186576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217d906133dc565b60405180910390fd5b6121938484848403611ec7565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612209576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122009061346e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612278576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226f90613500565b60405180910390fd5b6122838383836127f9565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612309576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230090613592565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516123f79190612aa1565b60405180910390a361240a8484846127fe565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361247f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247690613624565b60405180910390fd5b61248b826000836127f9565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612511576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612508906136b6565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516125c49190612aa1565b60405180910390a36125d8836000846127fe565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612712576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270990613722565b60405180910390fd5b61271e600083836127f9565b8060026000828254612730919061283c565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516127e19190612aa1565b60405180910390a36127f5600083836127fe565b5050565b505050565b505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061284782612803565b915061285283612803565b925082820190508082111561286a5761286961280d565b5b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156128aa57808201518184015260208101905061288f565b60008484015250505050565b6000601f19601f8301169050919050565b60006128d282612870565b6128dc818561287b565b93506128ec81856020860161288c565b6128f5816128b6565b840191505092915050565b6000602082019050818103600083015261291a81846128c7565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061295282612927565b9050919050565b61296281612947565b811461296d57600080fd5b50565b60008135905061297f81612959565b92915050565b61298e81612803565b811461299957600080fd5b50565b6000813590506129ab81612985565b92915050565b600080604083850312156129c8576129c7612922565b5b60006129d685828601612970565b92505060206129e78582860161299c565b9150509250929050565b60008115159050919050565b612a06816129f1565b82525050565b6000602082019050612a2160008301846129fd565b92915050565b6000612a3282612927565b9050919050565b612a4281612a27565b8114612a4d57600080fd5b50565b600081359050612a5f81612a39565b92915050565b600060208284031215612a7b57612a7a612922565b5b6000612a8984828501612a50565b91505092915050565b612a9b81612803565b82525050565b6000602082019050612ab66000830184612a92565b92915050565b600060208284031215612ad257612ad1612922565b5b6000612ae08482850161299c565b91505092915050565b600080600060608486031215612b0257612b01612922565b5b6000612b1086828701612970565b9350506020612b2186828701612970565b9250506040612b328682870161299c565b9150509250925092565b600060ff82169050919050565b612b5281612b3c565b82525050565b6000602082019050612b6d6000830184612b49565b92915050565b600060208284031215612b8957612b88612922565b5b6000612b9784828501612970565b91505092915050565b612ba981612947565b82525050565b6000602082019050612bc46000830184612ba0565b92915050565b60008060408385031215612be157612be0612922565b5b6000612bef85828601612970565b9250506020612c0085828601612970565b9150509250929050565b7f536166654d6174683a206469766973696f6e206279207a65726f000000000000600082015250565b6000612c40601a8361287b565b9150612c4b82612c0a565b602082019050919050565b60006020820190508181036000830152612c6f81612c33565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612cb082612803565b9150612cbb83612803565b925082612ccb57612cca612c76565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612d1d57607f821691505b602082108103612d3057612d2f612cd6565b5b50919050565b7f74696d65203c203320686f7572732c20616464206f6e65206d6f72652061742060008201527f6c65617374000000000000000000000000000000000000000000000000000000602082015250565b6000612d9260258361287b565b9150612d9d82612d36565b604082019050919050565b60006020820190508181036000830152612dc181612d85565b9050919050565b7f5573657220646964206e6f7420636c6f636b206f757400000000000000000000600082015250565b6000612dfe60168361287b565b9150612e0982612dc8565b602082019050919050565b60006020820190508181036000830152612e2d81612df1565b9050919050565b600081519050612e4381612985565b92915050565b600060208284031215612e5f57612e5e612922565b5b6000612e6d84828501612e34565b91505092915050565b6000604082019050612e8b6000830185612ba0565b612e986020830184612a92565b9392505050565b612ea8816129f1565b8114612eb357600080fd5b50565b600081519050612ec581612e9f565b92915050565b600060208284031215612ee157612ee0612922565b5b6000612eef84828501612eb6565b91505092915050565b7f4e6f7420656e6f7567682066756e647300000000000000000000000000000000600082015250565b6000612f2e60108361287b565b9150612f3982612ef8565b602082019050919050565b60006020820190508181036000830152612f5d81612f21565b9050919050565b7f557365722068617320616c726561647920636c6f636b656420696e0000000000600082015250565b6000612f9a601b8361287b565b9150612fa582612f64565b602082019050919050565b60006020820190508181036000830152612fc981612f8d565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061302c60258361287b565b915061303782612fd0565b604082019050919050565b6000602082019050818103600083015261305b8161301f565b9050919050565b7f5573657220646964206e6f7420636c6f636b20696e0000000000000000000000600082015250565b600061309860158361287b565b91506130a382613062565b602082019050919050565b600060208201905081810360008301526130c78161308b565b9050919050565b7f557365722068617320616c726561647920636c6f636b6564206f757400000000600082015250565b6000613104601c8361287b565b915061310f826130ce565b602082019050919050565b60006020820190508181036000830152613133816130f7565b9050919050565b600061314582612803565b915061315083612803565b92508282039050818111156131685761316761280d565b5b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006131ca60268361287b565b91506131d58261316e565b604082019050919050565b600060208201905081810360008301526131f9816131bd565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061325c60248361287b565b915061326782613200565b604082019050919050565b6000602082019050818103600083015261328b8161324f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006132ee60228361287b565b91506132f982613292565b604082019050919050565b6000602082019050818103600083015261331d816132e1565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061335a60208361287b565b915061336582613324565b602082019050919050565b600060208201905081810360008301526133898161334d565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006133c6601d8361287b565b91506133d182613390565b602082019050919050565b600060208201905081810360008301526133f5816133b9565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061345860258361287b565b9150613463826133fc565b604082019050919050565b600060208201905081810360008301526134878161344b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006134ea60238361287b565b91506134f58261348e565b604082019050919050565b60006020820190508181036000830152613519816134dd565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061357c60268361287b565b915061358782613520565b604082019050919050565b600060208201905081810360008301526135ab8161356f565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600061360e60218361287b565b9150613619826135b2565b604082019050919050565b6000602082019050818103600083015261363d81613601565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b60006136a060228361287b565b91506136ab82613644565b604082019050919050565b600060208201905081810360008301526136cf81613693565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600061370c601f8361287b565b9150613717826136d6565b602082019050919050565b6000602082019050818103600083015261373b816136ff565b905091905056fea2646970667358221220625624ec03861fa28e96993994d4ac1d27ed047a24febdaedb981ed967124dd764736f6c63430008120033

Deployed Bytecode

0x6080604052600436106102295760003560e01c8063849a275b11610123578063a9059cbb116100ab578063dd62ed3e1161006f578063dd62ed3e146109ee578063f2fde38b14610a2b578063f985000814610a54578063f9e382cf14610a6b578063fe6bef4214610a96576104b2565b8063a9059cbb14610914578063afa9d23614610951578063c81247461461097c578063cd8cd05b146109a7578063d808d0ab146109d0576104b2565b80639ffdb853116100f25780639ffdb85314610890578063a457c2d71461089a578063a5ff9d6b146108d7578063a7fedaa3146108e1578063a8f8a4fe146108eb576104b2565b8063849a275b146107e657806389476069146108115780638da5cb5b1461083a57806395d89b4114610865576104b2565b806342966c68116101b1578063696f936e11610175578063696f936e1461071557806370a0823114610740578063715018a61461077d57806377d5ae641461079457806379cc6790146107bd576104b2565b806342966c681461065857806345a8ce6b146106815780635419fc9d146106aa57806368696169146106d357806368c7bf84146106fe576104b2565b80631a4a0278116101f85780631a4a02781461057357806323b872dd1461059c578063313ce567146105d957806339509351146106045780633ccfd60b14610641576104b2565b806306fdde03146104b7578063095ea7b3146104e25780630f51ed521461051f57806318160ddd14610548576104b2565b366104b2576000601454036102a657600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156102a0573d6000803e3d6000fd5b50610491565b60016014540361031e57600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015610318573d6000803e3d6000fd5b50610490565b60026014540361039657600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015610390573d6000803e3d6000fd5b5061048f565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6103e6600234610ac190919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015610411573d6000803e3d6000fd5b50600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc610462600234610ac190919063ffffffff16565b9081150290604051600060405180830381858888f1935050505015801561048d573d6000803e3d6000fd5b505b5b5b600c54600e546104a1919061283c565b4211156104b05742600e819055505b005b600080fd5b3480156104c357600080fd5b506104cc610b19565b6040516104d99190612900565b60405180910390f35b3480156104ee57600080fd5b50610509600480360381019061050491906129b1565b610bab565b6040516105169190612a0c565b60405180910390f35b34801561052b57600080fd5b5061054660048036038101906105419190612a65565b610bce565b005b34801561055457600080fd5b5061055d610c34565b60405161056a9190612aa1565b60405180910390f35b34801561057f57600080fd5b5061059a60048036038101906105959190612abc565b610c3e565b005b3480156105a857600080fd5b506105c360048036038101906105be9190612ae9565b610ca8565b6040516105d09190612a0c565b60405180910390f35b3480156105e557600080fd5b506105ee610cd7565b6040516105fb9190612b58565b60405180910390f35b34801561061057600080fd5b5061062b600480360381019061062691906129b1565b610ce0565b6040516106389190612a0c565b60405180910390f35b34801561064d57600080fd5b50610656610d17565b005b34801561066457600080fd5b5061067f600480360381019061067a9190612abc565b610d68565b005b34801561068d57600080fd5b506106a860048036038101906106a39190612b73565b610d7c565b005b3480156106b657600080fd5b506106d160048036038101906106cc9190612abc565b610dc8565b005b3480156106df57600080fd5b506106e8610dda565b6040516106f59190612baf565b60405180910390f35b34801561070a57600080fd5b50610713610e04565b005b34801561072157600080fd5b5061072a610f62565b6040516107379190612aa1565b60405180910390f35b34801561074c57600080fd5b5061076760048036038101906107629190612b73565b611030565b6040516107749190612aa1565b60405180910390f35b34801561078957600080fd5b50610792611078565b005b3480156107a057600080fd5b506107bb60048036038101906107b69190612b73565b61108c565b005b3480156107c957600080fd5b506107e460048036038101906107df91906129b1565b6110d8565b005b3480156107f257600080fd5b506107fb6110f8565b6040516108089190612baf565b60405180910390f35b34801561081d57600080fd5b5061083860048036038101906108339190612b73565b611122565b005b34801561084657600080fd5b5061084f611231565b60405161085c9190612baf565b60405180910390f35b34801561087157600080fd5b5061087a61125b565b6040516108879190612900565b60405180910390f35b6108986112ed565b005b3480156108a657600080fd5b506108c160048036038101906108bc91906129b1565b611467565b6040516108ce9190612a0c565b60405180910390f35b6108df6114de565b005b6108e96116da565b005b3480156108f757600080fd5b50610912600480360381019061090d9190612abc565b6119b1565b005b34801561092057600080fd5b5061093b600480360381019061093691906129b1565b6119c3565b6040516109489190612a0c565b60405180910390f35b34801561095d57600080fd5b506109666119e6565b6040516109739190612900565b60405180910390f35b34801561098857600080fd5b50610991611a7f565b60405161099e9190612aa1565b60405180910390f35b3480156109b357600080fd5b506109ce60048036038101906109c99190612b73565b611ba3565b005b6109d8611bef565b6040516109e59190612baf565b60405180910390f35b3480156109fa57600080fd5b50610a156004803603810190610a109190612bca565b611ccc565b604051610a229190612aa1565b60405180910390f35b348015610a3757600080fd5b50610a526004803603810190610a4d9190612b73565b611d53565b005b348015610a6057600080fd5b50610a69611dd6565b005b348015610a7757600080fd5b50610a80611de7565b604051610a8d9190612aa1565b60405180910390f35b348015610aa257600080fd5b50610aab611df1565b604051610ab89190612aa1565b60405180910390f35b6000808211610b05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610afc90612c56565b60405180910390fd5b8183610b119190612ca5565b905092915050565b606060038054610b2890612d05565b80601f0160208091040260200160405190810160405280929190818152602001828054610b5490612d05565b8015610ba15780601f10610b7657610100808354040283529160200191610ba1565b820191906000526020600020905b815481529060010190602001808311610b8457829003601f168201915b5050505050905090565b600080610bb6611ebf565b9050610bc3818585611ec7565b600191505092915050565b61a8c0600d54610bde919061283c565b4211610be957600080fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555042600d8190555050565b6000600254905090565b610c46612090565b6003811015610c8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8190612da8565b60405180910390fd5b80600b81905550610e1081610c9f919061283c565b600c8190555050565b600080610cb3611ebf565b9050610cc085828561210e565b610ccb85858561219a565b60019150509392505050565b60006012905090565b600080610ceb611ebf565b9050610d0c818585610cfd8589611ccc565b610d07919061283c565b611ec7565b600191505092915050565b610d1f612090565b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610d65573d6000803e3d6000fd5b50565b610d79610d73611ebf565b82612410565b50565b610d84612090565b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610dd0612090565b8060178190555050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610e0c612090565b73d0cb495d8cb4df873deb55d857efad3119b8d480600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550731f62a5380a694613b81e7a9b44ba3268d6f838e5600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550731f62a5380a694613b81e7a9b44ba3268d6f838e5600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550730b7672b366953ca23160eb742eabdd34a02926f6600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411610fe5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdc90612e14565b60405180910390fd5b6000601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508091505090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611080612090565b61108a60006125dd565b565b611094612090565b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6110ea826110e4611ebf565b8361210e565b6110f48282612410565b5050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61112a612090565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161116a9190612baf565b602060405180830381865afa158015611187573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ab9190612e49565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016111e8929190612e76565b6020604051808303816000875af1158015611207573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061122b9190612ecb565b50505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461126a90612d05565b80601f016020809104026020016040519081016040528092919081815260200182805461129690612d05565b80156112e35780601f106112b8576101008083540402835291602001916112e3565b820191906000526020600020905b8154815290600101906020018083116112c657829003601f168201915b5050505050905090565b66038d7ea4c680003414611336576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132d90612f44565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f1935050505015801561139e573d6000803e3d6000fd5b506000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611421576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141890612fb0565b60405180910390fd5b42600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b600080611472611ebf565b905060006114808286611ccc565b9050838110156114c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bc90613042565b60405180910390fd5b6114d28286868403611ec7565b60019250505092915050565b6000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411611560576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611557906130ae565b60405180910390fd5b66038d7ea4c6800034146115a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a090612f44565b60405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015611611573d6000803e3d6000fd5b506000601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611694576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168b9061311a565b60405180910390fd5b42601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b66038d7ea4c680003414611723576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171a90612f44565b60405180910390fd5b6000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054116117a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179c906130ae565b60405180910390fd5b6000601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411611827576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181e90612e14565b60405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f1935050505015801561188f573d6000803e3d6000fd5b50600061189a610f62565b9050611c20600e546118ac919061283c565b81111561192457600b54600e546118c3919061283c565b8110156119235760026013541161190a57600060175403611905576118ea336011546126a3565b6001601360008282546118fd919061283c565b925050819055505b611922565b60006017540361192157611920336012546126a3565b5b5b5b5b6000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b6119b9612090565b8060148190555050565b6000806119ce611ebf565b90506119db81858561219a565b600191505092915050565b6060600c54600e546119f8919061283c565b421115611a435742600e819055506040518060400160405280601481526020017f4e6f2e20596f752063616e20636c6f636b20696e0000000000000000000000008152509050611a7c565b6040518060400160405280601181526020017f5965732e20506c6561736520776169742100000000000000000000000000000081525090505b90565b600080601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411611b02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af990612e14565b60405180910390fd5b6000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008282611b98919061313a565b905080935050505090565b611bab612090565b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000670de0b6b3a76400003414611c3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3290612f44565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015611ca3573d6000803e3d6000fd5b50600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611d5b612090565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611dca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc1906131e0565b60405180910390fd5b611dd3816125dd565b50565b611dde612090565b42600e81905550565b6000601354905090565b600080600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411611e74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6b90612e14565b60405180910390fd5b6000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508091505090565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2d90613272565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9c90613304565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516120839190612aa1565b60405180910390a3505050565b612098611ebf565b73ffffffffffffffffffffffffffffffffffffffff166120b6611231565b73ffffffffffffffffffffffffffffffffffffffff161461210c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210390613370565b60405180910390fd5b565b600061211a8484611ccc565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146121945781811015612186576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217d906133dc565b60405180910390fd5b6121938484848403611ec7565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612209576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122009061346e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612278576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226f90613500565b60405180910390fd5b6122838383836127f9565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612309576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230090613592565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516123f79190612aa1565b60405180910390a361240a8484846127fe565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361247f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247690613624565b60405180910390fd5b61248b826000836127f9565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612511576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612508906136b6565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516125c49190612aa1565b60405180910390a36125d8836000846127fe565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612712576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270990613722565b60405180910390fd5b61271e600083836127f9565b8060026000828254612730919061283c565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516127e19190612aa1565b60405180910390a36127f5600083836127fe565b5050565b505050565b505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061284782612803565b915061285283612803565b925082820190508082111561286a5761286961280d565b5b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156128aa57808201518184015260208101905061288f565b60008484015250505050565b6000601f19601f8301169050919050565b60006128d282612870565b6128dc818561287b565b93506128ec81856020860161288c565b6128f5816128b6565b840191505092915050565b6000602082019050818103600083015261291a81846128c7565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061295282612927565b9050919050565b61296281612947565b811461296d57600080fd5b50565b60008135905061297f81612959565b92915050565b61298e81612803565b811461299957600080fd5b50565b6000813590506129ab81612985565b92915050565b600080604083850312156129c8576129c7612922565b5b60006129d685828601612970565b92505060206129e78582860161299c565b9150509250929050565b60008115159050919050565b612a06816129f1565b82525050565b6000602082019050612a2160008301846129fd565b92915050565b6000612a3282612927565b9050919050565b612a4281612a27565b8114612a4d57600080fd5b50565b600081359050612a5f81612a39565b92915050565b600060208284031215612a7b57612a7a612922565b5b6000612a8984828501612a50565b91505092915050565b612a9b81612803565b82525050565b6000602082019050612ab66000830184612a92565b92915050565b600060208284031215612ad257612ad1612922565b5b6000612ae08482850161299c565b91505092915050565b600080600060608486031215612b0257612b01612922565b5b6000612b1086828701612970565b9350506020612b2186828701612970565b9250506040612b328682870161299c565b9150509250925092565b600060ff82169050919050565b612b5281612b3c565b82525050565b6000602082019050612b6d6000830184612b49565b92915050565b600060208284031215612b8957612b88612922565b5b6000612b9784828501612970565b91505092915050565b612ba981612947565b82525050565b6000602082019050612bc46000830184612ba0565b92915050565b60008060408385031215612be157612be0612922565b5b6000612bef85828601612970565b9250506020612c0085828601612970565b9150509250929050565b7f536166654d6174683a206469766973696f6e206279207a65726f000000000000600082015250565b6000612c40601a8361287b565b9150612c4b82612c0a565b602082019050919050565b60006020820190508181036000830152612c6f81612c33565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612cb082612803565b9150612cbb83612803565b925082612ccb57612cca612c76565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612d1d57607f821691505b602082108103612d3057612d2f612cd6565b5b50919050565b7f74696d65203c203320686f7572732c20616464206f6e65206d6f72652061742060008201527f6c65617374000000000000000000000000000000000000000000000000000000602082015250565b6000612d9260258361287b565b9150612d9d82612d36565b604082019050919050565b60006020820190508181036000830152612dc181612d85565b9050919050565b7f5573657220646964206e6f7420636c6f636b206f757400000000000000000000600082015250565b6000612dfe60168361287b565b9150612e0982612dc8565b602082019050919050565b60006020820190508181036000830152612e2d81612df1565b9050919050565b600081519050612e4381612985565b92915050565b600060208284031215612e5f57612e5e612922565b5b6000612e6d84828501612e34565b91505092915050565b6000604082019050612e8b6000830185612ba0565b612e986020830184612a92565b9392505050565b612ea8816129f1565b8114612eb357600080fd5b50565b600081519050612ec581612e9f565b92915050565b600060208284031215612ee157612ee0612922565b5b6000612eef84828501612eb6565b91505092915050565b7f4e6f7420656e6f7567682066756e647300000000000000000000000000000000600082015250565b6000612f2e60108361287b565b9150612f3982612ef8565b602082019050919050565b60006020820190508181036000830152612f5d81612f21565b9050919050565b7f557365722068617320616c726561647920636c6f636b656420696e0000000000600082015250565b6000612f9a601b8361287b565b9150612fa582612f64565b602082019050919050565b60006020820190508181036000830152612fc981612f8d565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061302c60258361287b565b915061303782612fd0565b604082019050919050565b6000602082019050818103600083015261305b8161301f565b9050919050565b7f5573657220646964206e6f7420636c6f636b20696e0000000000000000000000600082015250565b600061309860158361287b565b91506130a382613062565b602082019050919050565b600060208201905081810360008301526130c78161308b565b9050919050565b7f557365722068617320616c726561647920636c6f636b6564206f757400000000600082015250565b6000613104601c8361287b565b915061310f826130ce565b602082019050919050565b60006020820190508181036000830152613133816130f7565b9050919050565b600061314582612803565b915061315083612803565b92508282039050818111156131685761316761280d565b5b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006131ca60268361287b565b91506131d58261316e565b604082019050919050565b600060208201905081810360008301526131f9816131bd565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061325c60248361287b565b915061326782613200565b604082019050919050565b6000602082019050818103600083015261328b8161324f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006132ee60228361287b565b91506132f982613292565b604082019050919050565b6000602082019050818103600083015261331d816132e1565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061335a60208361287b565b915061336582613324565b602082019050919050565b600060208201905081810360008301526133898161334d565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006133c6601d8361287b565b91506133d182613390565b602082019050919050565b600060208201905081810360008301526133f5816133b9565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061345860258361287b565b9150613463826133fc565b604082019050919050565b600060208201905081810360008301526134878161344b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006134ea60238361287b565b91506134f58261348e565b604082019050919050565b60006020820190508181036000830152613519816134dd565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061357c60268361287b565b915061358782613520565b604082019050919050565b600060208201905081810360008301526135ab8161356f565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600061360e60218361287b565b9150613619826135b2565b604082019050919050565b6000602082019050818103600083015261363d81613601565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b60006136a060228361287b565b91506136ab82613644565b604082019050919050565b600060208201905081810360008301526136cf81613693565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600061370c601f8361287b565b9150613717826136d6565b602082019050919050565b6000602082019050818103600083015261373b816136ff565b905091905056fea2646970667358221220625624ec03861fa28e96993994d4ac1d27ed047a24febdaedb981ed967124dd764736f6c63430008120033

Deployed Bytecode Sourcemap

21064:6351:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26752:1;26737:13;;:16;26733:498;;26768:7;;;;;;;;;;;26760:25;;:36;26786:9;26760:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26733:498;;;26839:1;26824:13;;:16;26821:410;;26859:7;;;;;;;;;;;26851:25;;:36;26877:9;26851:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26821:410;;;26928:1;26913:13;;:16;26910:321;;26948:9;;;;;;;;;;;26940:27;;:38;26968:9;26940:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26910:321;;;27065:5;;;;;;;;;;;27057:23;;:43;27081:18;27097:1;27082:9;27081:15;;:18;;;;:::i;:::-;27057:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27179:7;;;;;;;;;;;27171:25;;:45;27197:18;27213:1;27198:9;27197:15;;:18;;;;:::i;:::-;27171:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26910:321;26821:410;26733:498;27339:9;;27325:11;;:23;;;;:::i;:::-;27307:15;:41;27304:97;;;27374:15;27362:11;:27;;;;27304:97;21064:6351;;;;;6031:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8391:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25109:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7160:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22362:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9172:261;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7002:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9842:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24595:100;;;;;;;;;;;;;:::i;:::-;;17403:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25345:86;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25434:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25815:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26003:279;;;;;;;;;;;;;:::i;:::-;;23457:190;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7331:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19702:103;;;;;;;;;;;;;:::i;:::-;;24930:86;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17813:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25725:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24699:228;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19061:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6250:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22568:265;;;:::i;:::-;;10583:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22845:333;;;:::i;:::-;;23681:719;;;:::i;:::-;;25903:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7664:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26286:257;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23184:262;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25021:86;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25531:189;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7920:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19960:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22284:75;;;;;;;;;;;;;:::i;:::-;;22070:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24404:186;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31229:153;31287:7;31319:1;31315;:5;31307:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;31373:1;31369;:5;;;;:::i;:::-;31362:12;;31229:153;;;;:::o;6031:100::-;6085:13;6118:5;6111:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6031:100;:::o;8391:201::-;8474:4;8491:13;8507:12;:10;:12::i;:::-;8491:28;;8530:32;8539:5;8546:7;8555:6;8530:8;:32::i;:::-;8580:4;8573:11;;;8391:201;;;;:::o;25109:234::-;25213:8;25200:10;;:21;;;;:::i;:::-;25182:15;:39;25174:48;;;;;;25269:12;25257:9;;:24;;;;;;;;;;;;;;;;;;25301:15;25288:10;:28;;;;25109:234;:::o;7160:108::-;7221:7;7248:12;;7241:19;;7160:108;:::o;22362:200::-;18947:13;:11;:13::i;:::-;22445:1:::1;22432:10;:14;;22424:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;22505:10;22495:9;:20;;;;22546:7;22533:10;:20;;;;:::i;:::-;22523:9;:30;;;;22362:200:::0;:::o;9172:261::-;9269:4;9286:15;9304:12;:10;:12::i;:::-;9286:30;;9327:38;9343:4;9349:7;9358:6;9327:15;:38::i;:::-;9376:27;9386:4;9392:2;9396:6;9376:9;:27::i;:::-;9421:4;9414:11;;;9172:261;;;;;:::o;7002:93::-;7060:5;7085:2;7078:9;;7002:93;:::o;9842:238::-;9930:4;9947:13;9963:12;:10;:12::i;:::-;9947:28;;9986:64;9995:5;10002:7;10039:10;10011:25;10021:5;10028:7;10011:9;:25::i;:::-;:38;;;;:::i;:::-;9986:8;:64::i;:::-;10068:4;10061:11;;;9842:238;;;;:::o;24595:100::-;18947:13;:11;:13::i;:::-;24648:10:::1;24640:28;;:51;24669:21;24640:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;24595:100::o:0;17403:91::-;17459:27;17465:12;:10;:12::i;:::-;17479:6;17459:5;:27::i;:::-;17403:91;:::o;25345:86::-;18947:13;:11;:13::i;:::-;25417:9:::1;25407:7;;:19;;;;;;;;;;;;;;;;;;25345:86:::0;:::o;25434:91::-;18947:13;:11;:13::i;:::-;25508:12:::1;25497:8;:23;;;;25434:91:::0;:::o;25815:83::-;25857:7;25881;;;;;;;;;;;25874:14;;25815:83;:::o;26003:279::-;18947:13;:11;:13::i;:::-;26061:42:::1;26053:7;;:50;;;;;;;;;;;;;;;;;;26118:42;26110:7;;:50;;;;;;;;;;;;;;;;;;26175:42;26167:7;;:50;;;;;;;;;;;;;;;;;;26234:42;26224:9;;:52;;;;;;;;;;;;;;;;;;26003:279::o:0;23457:190::-;23501:4;23544:1;23523:8;:20;23532:10;23523:20;;;;;;;;;;;;;;;;:22;23515:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;23580:12;23593:8;:20;23602:10;23593:20;;;;;;;;;;;;;;;;23580:33;;23630:7;23623:14;;;23457:190;:::o;7331:127::-;7405:7;7432:9;:18;7442:7;7432:18;;;;;;;;;;;;;;;;7425:25;;7331:127;;;:::o;19702:103::-;18947:13;:11;:13::i;:::-;19767:30:::1;19794:1;19767:18;:30::i;:::-;19702:103::o:0;24930:86::-;18947:13;:11;:13::i;:::-;25002:9:::1;24992:7;;:19;;;;;;;;;;;;;;;;;;24930:86:::0;:::o;17813:164::-;17890:46;17906:7;17915:12;:10;:12::i;:::-;17929:6;17890:15;:46::i;:::-;17947:22;17953:7;17962:6;17947:5;:22::i;:::-;17813:164;;:::o;25725:83::-;25767:7;25791;;;;;;;;;;;25784:14;;25725:83;:::o;24699:228::-;18947:13;:11;:13::i;:::-;24780::::1;24803:12;24780:36;;24823:16;24842:6;:16;;;24867:4;24842:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24823:50;;24880:6;:15;;;24896:10;24908:8;24880:37;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24773:154;;24699:228:::0;:::o;19061:87::-;19107:7;19134:6;;;;;;;;;;;19127:13;;19061:87;:::o;6250:104::-;6306:13;6339:7;6332:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6250:104;:::o;22568:265::-;22632:8;22620:9;:20;22612:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;22678:7;;;;;;;;;;;22670:25;;:36;22696:9;22670:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22743:1;22722:7;:19;22730:10;22722:19;;;;;;;;;;;;;;;;:22;22714:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;22807:15;22784:7;:19;22792:10;22784:19;;;;;;;;;;;;;;;:38;;;;22568:265::o;10583:436::-;10676:4;10693:13;10709:12;:10;:12::i;:::-;10693:28;;10732:24;10759:25;10769:5;10776:7;10759:9;:25::i;:::-;10732:52;;10823:15;10803:16;:35;;10795:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;10916:60;10925:5;10932:7;10960:15;10941:16;:34;10916:8;:60::i;:::-;11007:4;11000:11;;;;10583:436;;;;:::o;22845:333::-;22918:1;22898:7;:19;22906:10;22898:19;;;;;;;;;;;;;;;;:21;22890:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;22973:8;22961:9;:20;22953:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;23019:7;;;;;;;;;;;23011:25;;:36;23037:9;23011:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23086:1;23064:8;:20;23073:10;23064:20;;;;;;;;;;;;;;;;:23;23056:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;23152:15;23128:8;:20;23137:10;23128:20;;;;;;;;;;;;;;;:39;;;;22845:333::o;23681:719::-;23748:8;23736:9;:20;23728:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;23814:1;23794:7;:19;23802:10;23794:19;;;;;;;;;;;;;;;;:21;23786:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;23878:1;23857:8;:20;23866:10;23857:20;;;;;;;;;;;;;;;;:22;23849:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;23930:7;;;;;;;;;;;23922:25;;:36;23948:9;23922:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23967:12;23980:13;:11;:13::i;:::-;23967:26;;24024:7;24010:11;;:21;;;;:::i;:::-;24000:7;:32;23996:350;;;24070:9;;24056:11;;:23;;;;:::i;:::-;24046:7;:33;24043:300;;;24131:1;24118:10;;:14;24114:218;;24161:1;24151:8;;:11;24148:89;;24178:28;24184:10;24196:9;;24178:5;:28::i;:::-;24234:1;24221:10;;:14;;;;;;;:::i;:::-;;;;;;;;24148:89;24114:218;;;24276:1;24266:8;;:11;24263:60;;24291:30;24297:10;24309:11;;24291:5;:30::i;:::-;24263:60;24114:218;24043:300;23996:350;24369:1;24348:7;:19;24356:10;24348:19;;;;;;;;;;;;;;;:22;;;;24395:1;24373:8;:20;24382:10;24373:20;;;;;;;;;;;;;;;:23;;;;23719:681;23681:719::o;25903:91::-;18947:13;:11;:13::i;:::-;25981:6:::1;25965:13;:22;;;;25903:91:::0;:::o;7664:193::-;7743:4;7760:13;7776:12;:10;:12::i;:::-;7760:28;;7799;7809:5;7816:2;7820:6;7799:9;:28::i;:::-;7845:4;7838:11;;;7664:193;;;;:::o;26286:257::-;26327:13;26385:9;;26371:11;;:23;;;;:::i;:::-;26353:15;:41;26350:188;;;26420:15;26408:11;:27;;;;26448:29;;;;;;;;;;;;;;;;;;;;;26350:188;26500:26;;;;;;;;;;;;;;;;;;;26286:257;;:::o;23184:262::-;23226:4;23269:1;23248:8;:20;23257:10;23248:20;;;;;;;;;;;;;;;;:22;23240:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;23305:11;23317:7;:19;23325:10;23317:19;;;;;;;;;;;;;;;;23305:31;;23346:12;23359:8;:20;23368:10;23359:20;;;;;;;;;;;;;;;;23346:33;;23389:9;23410:6;23400:7;:16;;;;:::i;:::-;23389:27;;23432:4;23425:11;;;;;23184:262;:::o;25021:86::-;18947:13;:11;:13::i;:::-;25093:9:::1;25083:7;;:19;;;;;;;;;;;;;;;;;;25021:86:::0;:::o;25531:189::-;25578:7;25613:8;25601:9;:20;25593:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;25657:7;;;;;;;;;;;25649:25;;:36;25675:9;25649:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25701:9;;;;;;;;;;;25694:16;;25531:189;:::o;7920:151::-;8009:7;8036:11;:18;8048:5;8036:18;;;;;;;;;;;;;;;:27;8055:7;8036:27;;;;;;;;;;;;;;;;8029:34;;7920:151;;;;:::o;19960:201::-;18947:13;:11;:13::i;:::-;20069:1:::1;20049:22;;:8;:22;;::::0;20041:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;20125:28;20144:8;20125:18;:28::i;:::-;19960:201:::0;:::o;22284:75::-;18947:13;:11;:13::i;:::-;22339:15:::1;22325:11;:29;;;;22284:75::o:0;22070:83::-;22114:7;22137:10;;22130:17;;22070:83;:::o;24404:186::-;24448:4;24490:1;24470:7;:19;24478:10;24470:19;;;;;;;;;;;;;;;;:21;24462:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;24526:11;24538:7;:19;24546:10;24538:19;;;;;;;;;;;;;;;;24526:31;;24574:6;24567:13;;;24404:186;:::o;3835:98::-;3888:7;3915:10;3908:17;;3835:98;:::o;14576:346::-;14695:1;14678:19;;:5;:19;;;14670:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14776:1;14757:21;;:7;:21;;;14749:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14860:6;14830:11;:18;14842:5;14830:18;;;;;;;;;;;;;;;:27;14849:7;14830:27;;;;;;;;;;;;;;;:36;;;;14898:7;14882:32;;14891:5;14882:32;;;14907:6;14882:32;;;;;;:::i;:::-;;;;;;;;14576:346;;;:::o;19226:132::-;19301:12;:10;:12::i;:::-;19290:23;;:7;:5;:7::i;:::-;:23;;;19282:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19226:132::o;15213:419::-;15314:24;15341:25;15351:5;15358:7;15341:9;:25::i;:::-;15314:52;;15401:17;15381:16;:37;15377:248;;15463:6;15443:16;:26;;15435:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15547:51;15556:5;15563:7;15591:6;15572:16;:25;15547:8;:51::i;:::-;15377:248;15303:329;15213:419;;;:::o;11489:806::-;11602:1;11586:18;;:4;:18;;;11578:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11679:1;11665:16;;:2;:16;;;11657:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11734:38;11755:4;11761:2;11765:6;11734:20;:38::i;:::-;11785:19;11807:9;:15;11817:4;11807:15;;;;;;;;;;;;;;;;11785:37;;11856:6;11841:11;:21;;11833:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;11973:6;11959:11;:20;11941:9;:15;11951:4;11941:15;;;;;;;;;;;;;;;:38;;;;12176:6;12159:9;:13;12169:2;12159:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;12226:2;12211:26;;12220:4;12211:26;;;12230:6;12211:26;;;;;;:::i;:::-;;;;;;;;12250:37;12270:4;12276:2;12280:6;12250:19;:37::i;:::-;11567:728;11489:806;;;:::o;13463:675::-;13566:1;13547:21;;:7;:21;;;13539:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13619:49;13640:7;13657:1;13661:6;13619:20;:49::i;:::-;13681:22;13706:9;:18;13716:7;13706:18;;;;;;;;;;;;;;;;13681:43;;13761:6;13743:14;:24;;13735:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13880:6;13863:14;:23;13842:9;:18;13852:7;13842:18;;;;;;;;;;;;;;;:44;;;;13997:6;13981:12;;:22;;;;;;;;;;;14058:1;14032:37;;14041:7;14032:37;;;14062:6;14032:37;;;;;;:::i;:::-;;;;;;;;14082:48;14102:7;14119:1;14123:6;14082:19;:48::i;:::-;13528:610;13463:675;;:::o;20321:191::-;20395:16;20414:6;;;;;;;;;;;20395:25;;20440:8;20431:6;;:17;;;;;;;;;;;;;;;;;;20495:8;20464:40;;20485:8;20464:40;;;;;;;;;;;;20384:128;20321:191;:::o;12582:548::-;12685:1;12666:21;;:7;:21;;;12658:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;12736:49;12765:1;12769:7;12778:6;12736:20;:49::i;:::-;12814:6;12798:12;;:22;;;;;;;:::i;:::-;;;;;;;;12991:6;12969:9;:18;12979:7;12969:18;;;;;;;;;;;;;;;;:28;;;;;;;;;;;13045:7;13024:37;;13041:1;13024:37;;;13054:6;13024:37;;;;;;:::i;:::-;;;;;;;;13074:48;13102:1;13106:7;13115:6;13074:19;:48::i;:::-;12582:548;;:::o;16232:91::-;;;;:::o;16927:90::-;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:180::-;138:77;135:1;128:88;235:4;232:1;225:15;259:4;256:1;249:15;276:191;316:3;335:20;353:1;335:20;:::i;:::-;330:25;;369:20;387:1;369:20;:::i;:::-;364:25;;412:1;409;405:9;398:16;;433:3;430:1;427:10;424:36;;;440:18;;:::i;:::-;424:36;276:191;;;;:::o;473:99::-;525:6;559:5;553:12;543:22;;473:99;;;:::o;578:169::-;662:11;696:6;691:3;684:19;736:4;731:3;727:14;712:29;;578:169;;;;:::o;753:246::-;834:1;844:113;858:6;855:1;852:13;844:113;;;943:1;938:3;934:11;928:18;924:1;919:3;915:11;908:39;880:2;877:1;873:10;868:15;;844:113;;;991:1;982:6;977:3;973:16;966:27;815:184;753:246;;;:::o;1005:102::-;1046:6;1097:2;1093:7;1088:2;1081:5;1077:14;1073:28;1063:38;;1005:102;;;:::o;1113:377::-;1201:3;1229:39;1262:5;1229:39;:::i;:::-;1284:71;1348:6;1343:3;1284:71;:::i;:::-;1277:78;;1364:65;1422:6;1417:3;1410:4;1403:5;1399:16;1364:65;:::i;:::-;1454:29;1476:6;1454:29;:::i;:::-;1449:3;1445:39;1438:46;;1205:285;1113:377;;;;:::o;1496:313::-;1609:4;1647:2;1636:9;1632:18;1624:26;;1696:9;1690:4;1686:20;1682:1;1671:9;1667:17;1660:47;1724:78;1797:4;1788:6;1724:78;:::i;:::-;1716:86;;1496:313;;;;:::o;1896:117::-;2005:1;2002;1995:12;2142:126;2179:7;2219:42;2212:5;2208:54;2197:65;;2142:126;;;:::o;2274:96::-;2311:7;2340:24;2358:5;2340:24;:::i;:::-;2329:35;;2274:96;;;:::o;2376:122::-;2449:24;2467:5;2449:24;:::i;:::-;2442:5;2439:35;2429:63;;2488:1;2485;2478:12;2429:63;2376:122;:::o;2504:139::-;2550:5;2588:6;2575:20;2566:29;;2604:33;2631:5;2604:33;:::i;:::-;2504:139;;;;:::o;2649:122::-;2722:24;2740:5;2722:24;:::i;:::-;2715:5;2712:35;2702:63;;2761:1;2758;2751:12;2702:63;2649:122;:::o;2777:139::-;2823:5;2861:6;2848:20;2839:29;;2877:33;2904:5;2877:33;:::i;:::-;2777:139;;;;:::o;2922:474::-;2990:6;2998;3047:2;3035:9;3026:7;3022:23;3018:32;3015:119;;;3053:79;;:::i;:::-;3015:119;3173:1;3198:53;3243:7;3234:6;3223:9;3219:22;3198:53;:::i;:::-;3188:63;;3144:117;3300:2;3326:53;3371:7;3362:6;3351:9;3347:22;3326:53;:::i;:::-;3316:63;;3271:118;2922:474;;;;;:::o;3402:90::-;3436:7;3479:5;3472:13;3465:21;3454:32;;3402:90;;;:::o;3498:109::-;3579:21;3594:5;3579:21;:::i;:::-;3574:3;3567:34;3498:109;;:::o;3613:210::-;3700:4;3738:2;3727:9;3723:18;3715:26;;3751:65;3813:1;3802:9;3798:17;3789:6;3751:65;:::i;:::-;3613:210;;;;:::o;3829:104::-;3874:7;3903:24;3921:5;3903:24;:::i;:::-;3892:35;;3829:104;;;:::o;3939:138::-;4020:32;4046:5;4020:32;:::i;:::-;4013:5;4010:43;4000:71;;4067:1;4064;4057:12;4000:71;3939:138;:::o;4083:155::-;4137:5;4175:6;4162:20;4153:29;;4191:41;4226:5;4191:41;:::i;:::-;4083:155;;;;:::o;4244:345::-;4311:6;4360:2;4348:9;4339:7;4335:23;4331:32;4328:119;;;4366:79;;:::i;:::-;4328:119;4486:1;4511:61;4564:7;4555:6;4544:9;4540:22;4511:61;:::i;:::-;4501:71;;4457:125;4244:345;;;;:::o;4595:118::-;4682:24;4700:5;4682:24;:::i;:::-;4677:3;4670:37;4595:118;;:::o;4719:222::-;4812:4;4850:2;4839:9;4835:18;4827:26;;4863:71;4931:1;4920:9;4916:17;4907:6;4863:71;:::i;:::-;4719:222;;;;:::o;4947:329::-;5006:6;5055:2;5043:9;5034:7;5030:23;5026:32;5023:119;;;5061:79;;:::i;:::-;5023:119;5181:1;5206:53;5251:7;5242:6;5231:9;5227:22;5206:53;:::i;:::-;5196:63;;5152:117;4947:329;;;;:::o;5282:619::-;5359:6;5367;5375;5424:2;5412:9;5403:7;5399:23;5395:32;5392:119;;;5430:79;;:::i;:::-;5392:119;5550:1;5575:53;5620:7;5611:6;5600:9;5596:22;5575:53;:::i;:::-;5565:63;;5521:117;5677:2;5703:53;5748:7;5739:6;5728:9;5724:22;5703:53;:::i;:::-;5693:63;;5648:118;5805:2;5831:53;5876:7;5867:6;5856:9;5852:22;5831:53;:::i;:::-;5821:63;;5776:118;5282:619;;;;;:::o;5907:86::-;5942:7;5982:4;5975:5;5971:16;5960:27;;5907:86;;;:::o;5999:112::-;6082:22;6098:5;6082:22;:::i;:::-;6077:3;6070:35;5999:112;;:::o;6117:214::-;6206:4;6244:2;6233:9;6229:18;6221:26;;6257:67;6321:1;6310:9;6306:17;6297:6;6257:67;:::i;:::-;6117:214;;;;:::o;6337:329::-;6396:6;6445:2;6433:9;6424:7;6420:23;6416:32;6413:119;;;6451:79;;:::i;:::-;6413:119;6571:1;6596:53;6641:7;6632:6;6621:9;6617:22;6596:53;:::i;:::-;6586:63;;6542:117;6337:329;;;;:::o;6672:118::-;6759:24;6777:5;6759:24;:::i;:::-;6754:3;6747:37;6672:118;;:::o;6796:222::-;6889:4;6927:2;6916:9;6912:18;6904:26;;6940:71;7008:1;6997:9;6993:17;6984:6;6940:71;:::i;:::-;6796:222;;;;:::o;7024:474::-;7092:6;7100;7149:2;7137:9;7128:7;7124:23;7120:32;7117:119;;;7155:79;;:::i;:::-;7117:119;7275:1;7300:53;7345:7;7336:6;7325:9;7321:22;7300:53;:::i;:::-;7290:63;;7246:117;7402:2;7428:53;7473:7;7464:6;7453:9;7449:22;7428:53;:::i;:::-;7418:63;;7373:118;7024:474;;;;;:::o;7504:176::-;7644:28;7640:1;7632:6;7628:14;7621:52;7504:176;:::o;7686:366::-;7828:3;7849:67;7913:2;7908:3;7849:67;:::i;:::-;7842:74;;7925:93;8014:3;7925:93;:::i;:::-;8043:2;8038:3;8034:12;8027:19;;7686:366;;;:::o;8058:419::-;8224:4;8262:2;8251:9;8247:18;8239:26;;8311:9;8305:4;8301:20;8297:1;8286:9;8282:17;8275:47;8339:131;8465:4;8339:131;:::i;:::-;8331:139;;8058:419;;;:::o;8483:180::-;8531:77;8528:1;8521:88;8628:4;8625:1;8618:15;8652:4;8649:1;8642:15;8669:185;8709:1;8726:20;8744:1;8726:20;:::i;:::-;8721:25;;8760:20;8778:1;8760:20;:::i;:::-;8755:25;;8799:1;8789:35;;8804:18;;:::i;:::-;8789:35;8846:1;8843;8839:9;8834:14;;8669:185;;;;:::o;8860:180::-;8908:77;8905:1;8898:88;9005:4;9002:1;8995:15;9029:4;9026:1;9019:15;9046:320;9090:6;9127:1;9121:4;9117:12;9107:22;;9174:1;9168:4;9164:12;9195:18;9185:81;;9251:4;9243:6;9239:17;9229:27;;9185:81;9313:2;9305:6;9302:14;9282:18;9279:38;9276:84;;9332:18;;:::i;:::-;9276:84;9097:269;9046:320;;;:::o;9372:224::-;9512:34;9508:1;9500:6;9496:14;9489:58;9581:7;9576:2;9568:6;9564:15;9557:32;9372:224;:::o;9602:366::-;9744:3;9765:67;9829:2;9824:3;9765:67;:::i;:::-;9758:74;;9841:93;9930:3;9841:93;:::i;:::-;9959:2;9954:3;9950:12;9943:19;;9602:366;;;:::o;9974:419::-;10140:4;10178:2;10167:9;10163:18;10155:26;;10227:9;10221:4;10217:20;10213:1;10202:9;10198:17;10191:47;10255:131;10381:4;10255:131;:::i;:::-;10247:139;;9974:419;;;:::o;10399:172::-;10539:24;10535:1;10527:6;10523:14;10516:48;10399:172;:::o;10577:366::-;10719:3;10740:67;10804:2;10799:3;10740:67;:::i;:::-;10733:74;;10816:93;10905:3;10816:93;:::i;:::-;10934:2;10929:3;10925:12;10918:19;;10577:366;;;:::o;10949:419::-;11115:4;11153:2;11142:9;11138:18;11130:26;;11202:9;11196:4;11192:20;11188:1;11177:9;11173:17;11166:47;11230:131;11356:4;11230:131;:::i;:::-;11222:139;;10949:419;;;:::o;11374:143::-;11431:5;11462:6;11456:13;11447:22;;11478:33;11505:5;11478:33;:::i;:::-;11374:143;;;;:::o;11523:351::-;11593:6;11642:2;11630:9;11621:7;11617:23;11613:32;11610:119;;;11648:79;;:::i;:::-;11610:119;11768:1;11793:64;11849:7;11840:6;11829:9;11825:22;11793:64;:::i;:::-;11783:74;;11739:128;11523:351;;;;:::o;11880:332::-;12001:4;12039:2;12028:9;12024:18;12016:26;;12052:71;12120:1;12109:9;12105:17;12096:6;12052:71;:::i;:::-;12133:72;12201:2;12190:9;12186:18;12177:6;12133:72;:::i;:::-;11880:332;;;;;:::o;12218:116::-;12288:21;12303:5;12288:21;:::i;:::-;12281:5;12278:32;12268:60;;12324:1;12321;12314:12;12268:60;12218:116;:::o;12340:137::-;12394:5;12425:6;12419:13;12410:22;;12441:30;12465:5;12441:30;:::i;:::-;12340:137;;;;:::o;12483:345::-;12550:6;12599:2;12587:9;12578:7;12574:23;12570:32;12567:119;;;12605:79;;:::i;:::-;12567:119;12725:1;12750:61;12803:7;12794:6;12783:9;12779:22;12750:61;:::i;:::-;12740:71;;12696:125;12483:345;;;;:::o;12834:166::-;12974:18;12970:1;12962:6;12958:14;12951:42;12834:166;:::o;13006:366::-;13148:3;13169:67;13233:2;13228:3;13169:67;:::i;:::-;13162:74;;13245:93;13334:3;13245:93;:::i;:::-;13363:2;13358:3;13354:12;13347:19;;13006:366;;;:::o;13378:419::-;13544:4;13582:2;13571:9;13567:18;13559:26;;13631:9;13625:4;13621:20;13617:1;13606:9;13602:17;13595:47;13659:131;13785:4;13659:131;:::i;:::-;13651:139;;13378:419;;;:::o;13803:177::-;13943:29;13939:1;13931:6;13927:14;13920:53;13803:177;:::o;13986:366::-;14128:3;14149:67;14213:2;14208:3;14149:67;:::i;:::-;14142:74;;14225:93;14314:3;14225:93;:::i;:::-;14343:2;14338:3;14334:12;14327:19;;13986:366;;;:::o;14358:419::-;14524:4;14562:2;14551:9;14547:18;14539:26;;14611:9;14605:4;14601:20;14597:1;14586:9;14582:17;14575:47;14639:131;14765:4;14639:131;:::i;:::-;14631:139;;14358:419;;;:::o;14783:224::-;14923:34;14919:1;14911:6;14907:14;14900:58;14992:7;14987:2;14979:6;14975:15;14968:32;14783:224;:::o;15013:366::-;15155:3;15176:67;15240:2;15235:3;15176:67;:::i;:::-;15169:74;;15252:93;15341:3;15252:93;:::i;:::-;15370:2;15365:3;15361:12;15354:19;;15013:366;;;:::o;15385:419::-;15551:4;15589:2;15578:9;15574:18;15566:26;;15638:9;15632:4;15628:20;15624:1;15613:9;15609:17;15602:47;15666:131;15792:4;15666:131;:::i;:::-;15658:139;;15385:419;;;:::o;15810:171::-;15950:23;15946:1;15938:6;15934:14;15927:47;15810:171;:::o;15987:366::-;16129:3;16150:67;16214:2;16209:3;16150:67;:::i;:::-;16143:74;;16226:93;16315:3;16226:93;:::i;:::-;16344:2;16339:3;16335:12;16328:19;;15987:366;;;:::o;16359:419::-;16525:4;16563:2;16552:9;16548:18;16540:26;;16612:9;16606:4;16602:20;16598:1;16587:9;16583:17;16576:47;16640:131;16766:4;16640:131;:::i;:::-;16632:139;;16359:419;;;:::o;16784:178::-;16924:30;16920:1;16912:6;16908:14;16901:54;16784:178;:::o;16968:366::-;17110:3;17131:67;17195:2;17190:3;17131:67;:::i;:::-;17124:74;;17207:93;17296:3;17207:93;:::i;:::-;17325:2;17320:3;17316:12;17309:19;;16968:366;;;:::o;17340:419::-;17506:4;17544:2;17533:9;17529:18;17521:26;;17593:9;17587:4;17583:20;17579:1;17568:9;17564:17;17557:47;17621:131;17747:4;17621:131;:::i;:::-;17613:139;;17340:419;;;:::o;17765:194::-;17805:4;17825:20;17843:1;17825:20;:::i;:::-;17820:25;;17859:20;17877:1;17859:20;:::i;:::-;17854:25;;17903:1;17900;17896:9;17888:17;;17927:1;17921:4;17918:11;17915:37;;;17932:18;;:::i;:::-;17915:37;17765:194;;;;:::o;17965:225::-;18105:34;18101:1;18093:6;18089:14;18082:58;18174:8;18169:2;18161:6;18157:15;18150:33;17965:225;:::o;18196:366::-;18338:3;18359:67;18423:2;18418:3;18359:67;:::i;:::-;18352:74;;18435:93;18524:3;18435:93;:::i;:::-;18553:2;18548:3;18544:12;18537:19;;18196:366;;;:::o;18568:419::-;18734:4;18772:2;18761:9;18757:18;18749:26;;18821:9;18815:4;18811:20;18807:1;18796:9;18792:17;18785:47;18849:131;18975:4;18849:131;:::i;:::-;18841:139;;18568:419;;;:::o;18993:223::-;19133:34;19129:1;19121:6;19117:14;19110:58;19202:6;19197:2;19189:6;19185:15;19178:31;18993:223;:::o;19222:366::-;19364:3;19385:67;19449:2;19444:3;19385:67;:::i;:::-;19378:74;;19461:93;19550:3;19461:93;:::i;:::-;19579:2;19574:3;19570:12;19563:19;;19222:366;;;:::o;19594:419::-;19760:4;19798:2;19787:9;19783:18;19775:26;;19847:9;19841:4;19837:20;19833:1;19822:9;19818:17;19811:47;19875:131;20001:4;19875:131;:::i;:::-;19867:139;;19594:419;;;:::o;20019:221::-;20159:34;20155:1;20147:6;20143:14;20136:58;20228:4;20223:2;20215:6;20211:15;20204:29;20019:221;:::o;20246:366::-;20388:3;20409:67;20473:2;20468:3;20409:67;:::i;:::-;20402:74;;20485:93;20574:3;20485:93;:::i;:::-;20603:2;20598:3;20594:12;20587:19;;20246:366;;;:::o;20618:419::-;20784:4;20822:2;20811:9;20807:18;20799:26;;20871:9;20865:4;20861:20;20857:1;20846:9;20842:17;20835:47;20899:131;21025:4;20899:131;:::i;:::-;20891:139;;20618:419;;;:::o;21043:182::-;21183:34;21179:1;21171:6;21167:14;21160:58;21043:182;:::o;21231:366::-;21373:3;21394:67;21458:2;21453:3;21394:67;:::i;:::-;21387:74;;21470:93;21559:3;21470:93;:::i;:::-;21588:2;21583:3;21579:12;21572:19;;21231:366;;;:::o;21603:419::-;21769:4;21807:2;21796:9;21792:18;21784:26;;21856:9;21850:4;21846:20;21842:1;21831:9;21827:17;21820:47;21884:131;22010:4;21884:131;:::i;:::-;21876:139;;21603:419;;;:::o;22028:179::-;22168:31;22164:1;22156:6;22152:14;22145:55;22028:179;:::o;22213:366::-;22355:3;22376:67;22440:2;22435:3;22376:67;:::i;:::-;22369:74;;22452:93;22541:3;22452:93;:::i;:::-;22570:2;22565:3;22561:12;22554:19;;22213:366;;;:::o;22585:419::-;22751:4;22789:2;22778:9;22774:18;22766:26;;22838:9;22832:4;22828:20;22824:1;22813:9;22809:17;22802:47;22866:131;22992:4;22866:131;:::i;:::-;22858:139;;22585:419;;;:::o;23010:224::-;23150:34;23146:1;23138:6;23134:14;23127:58;23219:7;23214:2;23206:6;23202:15;23195:32;23010:224;:::o;23240:366::-;23382:3;23403:67;23467:2;23462:3;23403:67;:::i;:::-;23396:74;;23479:93;23568:3;23479:93;:::i;:::-;23597:2;23592:3;23588:12;23581:19;;23240:366;;;:::o;23612:419::-;23778:4;23816:2;23805:9;23801:18;23793:26;;23865:9;23859:4;23855:20;23851:1;23840:9;23836:17;23829:47;23893:131;24019:4;23893:131;:::i;:::-;23885:139;;23612:419;;;:::o;24037:222::-;24177:34;24173:1;24165:6;24161:14;24154:58;24246:5;24241:2;24233:6;24229:15;24222:30;24037:222;:::o;24265:366::-;24407:3;24428:67;24492:2;24487:3;24428:67;:::i;:::-;24421:74;;24504:93;24593:3;24504:93;:::i;:::-;24622:2;24617:3;24613:12;24606:19;;24265:366;;;:::o;24637:419::-;24803:4;24841:2;24830:9;24826:18;24818:26;;24890:9;24884:4;24880:20;24876:1;24865:9;24861:17;24854:47;24918:131;25044:4;24918:131;:::i;:::-;24910:139;;24637:419;;;:::o;25062:225::-;25202:34;25198:1;25190:6;25186:14;25179:58;25271:8;25266:2;25258:6;25254:15;25247:33;25062:225;:::o;25293:366::-;25435:3;25456:67;25520:2;25515:3;25456:67;:::i;:::-;25449:74;;25532:93;25621:3;25532:93;:::i;:::-;25650:2;25645:3;25641:12;25634:19;;25293:366;;;:::o;25665:419::-;25831:4;25869:2;25858:9;25854:18;25846:26;;25918:9;25912:4;25908:20;25904:1;25893:9;25889:17;25882:47;25946:131;26072:4;25946:131;:::i;:::-;25938:139;;25665:419;;;:::o;26090:220::-;26230:34;26226:1;26218:6;26214:14;26207:58;26299:3;26294:2;26286:6;26282:15;26275:28;26090:220;:::o;26316:366::-;26458:3;26479:67;26543:2;26538:3;26479:67;:::i;:::-;26472:74;;26555:93;26644:3;26555:93;:::i;:::-;26673:2;26668:3;26664:12;26657:19;;26316:366;;;:::o;26688:419::-;26854:4;26892:2;26881:9;26877:18;26869:26;;26941:9;26935:4;26931:20;26927:1;26916:9;26912:17;26905:47;26969:131;27095:4;26969:131;:::i;:::-;26961:139;;26688:419;;;:::o;27113:221::-;27253:34;27249:1;27241:6;27237:14;27230:58;27322:4;27317:2;27309:6;27305:15;27298:29;27113:221;:::o;27340:366::-;27482:3;27503:67;27567:2;27562:3;27503:67;:::i;:::-;27496:74;;27579:93;27668:3;27579:93;:::i;:::-;27697:2;27692:3;27688:12;27681:19;;27340:366;;;:::o;27712:419::-;27878:4;27916:2;27905:9;27901:18;27893:26;;27965:9;27959:4;27955:20;27951:1;27940:9;27936:17;27929:47;27993:131;28119:4;27993:131;:::i;:::-;27985:139;;27712:419;;;:::o;28137:181::-;28277:33;28273:1;28265:6;28261:14;28254:57;28137:181;:::o;28324:366::-;28466:3;28487:67;28551:2;28546:3;28487:67;:::i;:::-;28480:74;;28563:93;28652:3;28563:93;:::i;:::-;28681:2;28676:3;28672:12;28665:19;;28324:366;;;:::o;28696:419::-;28862:4;28900:2;28889:9;28885:18;28877:26;;28949:9;28943:4;28939:20;28935:1;28924:9;28920:17;28913:47;28977:131;29103:4;28977:131;:::i;:::-;28969:139;;28696:419;;;:::o

Swarm Source

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