Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
100,000,000 GAS
Holders
32
Total Transfers
-
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
GasUtilityToken
Compiler Version
v0.8.25+commit.b61c2a91
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2025-02-05 */ // SPDX-License-Identifier: MIT /** ⣿⣿⠛⡋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⣿⠭⠤⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣐⢂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠤⠀⠀⢀⠀⠀⢀⠀⢀⣤⣤⣾⣿⣿⣷⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⣶⣶⣶⣦⣦⣢⢀⠀⢀⣠⣴⣶⣶⣿⣷⣶⣤⣆⣤⠐⠄⠈⣴⣿⡿⠹⠟⠀⠀⠚⠛⢻⣷⡆⠀⠀⠀⠀⠀⠀ ⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⡀⠀⠀⠀⠀⠀⢠⣾⣿⣿⠿⠛⠛⠿⢿⣿⣿⣷⣿⠿⠟⠛⠛⠉⠛⠻⢿⣿⣿⣷⣄⠀⠻⣿⣧⣀⡀⠀⠐⠀⠀⠀⣿⣯⠅⠀⠀⠀⠀⠀ ⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⣼⣀⠤⢀⠀⠀⠀⣾⣿⡟⠀⠀⠀⠀⠀⠀⠈⠛⣿⣷⡂⠀⠀⠀⠀⠀⠀⠀⠙⢿⣿⣿⣤⠀⠈⣽⣯⠀⠀⠀⡀⠀⠛⢿⡏⠀⠀⠀⠀⠀⠀ ⣿⠀⠀⠀⠀⠀⠀⠀⠀⣸⣿⡿⢻⣿⣀⠀⠂⠀⢠⣿⠿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠻⣿⡀⠀⠀⠀⠀⠀⠀⠀⠘⣿⣿⡏⠀⠀⠻⣷⣶⣠⣼⢧⣬⣶⣿⠗⠀⠀⠀⠀⠀⠀ ⣿⠀⠀⠀⠀⠀⠀⠀⣾⣿⠋⠀⠀⢈⣙⣷⣆⠀⢸⣿⣵⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠁⠀⠀⠀⠀⠀⠀⠀⠀⢹⣿⡏⠀⠀⠀⠀⠉⠉⠀⠈⠉⠉⠀⠀⠀⠀⠀⠀⠀⠀ ⣿⠀⠀⠀⠀⠀⠀⠀⠿⣿⣱⣴⣷⣼⣿⡿⠏⠀⠀⠘⣿⣆⠀⠠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣤⣴⣾⣿⣿⣿⣷⣶⣴⣦⡀⠲⠨⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠈⠁⠀⠀⢀⣴⣿⡿⢧⣀⠒⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⠻⣿⣿⣿⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠀⠀⠀⠀⠀⠀⢤⣿⣿⠋⠀⠀⢩⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢻⣿⣿⣧⡄⠈⠀⢠⣄⠀⠀⠀⠀⠀ ⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠄⣿⣻⡃⠀⠀⠀⠀⢿⣦⣄⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⣿⣿⣺⠀⣠⣴⣶⣄⡀⠀⠀⠀ ⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢸⣿⣼⠇⠀⠀⠀⠀⠈⢻⣿⣷⣦⣤⣤⣤⣾⡄⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⡟⣀⣿⣿⣿⣿⣶⣶⣶⡀ ⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⢻⣿⣶⡀⠀⠀⠀⠀⢠⡽⠛⣿⣿⠋⠁⣿⣧⠀⠆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⣿⣿⣿⠇⢴⣿⣿⢿⡿⠛⠻⣿⣿ ⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⣿⣿⣦⣄⠀⠀⣾⡇⠀⠸⣿⣷⣶⣿⣿⣧⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⣿⣿⠟⠁⢈⣿⢿⡁⠀⠀⠀⠙⢿⣿ ⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠛⡟⠿⣿⣯⠋⢀⡀⠈⠈⠉⠉⠻⣿⣿⣶⣤⣄⡀⠀⠀⠀⠀⣠⣠⣴⠿⣿⣿⣿⣷⡄⠀⢿⣿⣦⣀⣴⣆⣤⣿⣿ ⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⡿⠉⠀⣌⠁⠉⠀⢀⣠⡾⠂⠡⠈⠉⠉⠁⠀⠀⠀⠀⠉⠁⠀⠀⠈⠻⣿⣿⣿⠆⠀⠀⠉⠉⠙⢛⣟⠟⠁ ⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⡋⣠⣾⠏⣴⣴⣶⡿⠃⠀⠀⠀⠈⠀⠀⢠⣦⠈⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⣿⣿⡀⠀⠀⠀⠉⠀⠀⠀⠀ ⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⣿⣿⣿⣿⣷⣿⣿⣿⣿⣅⠀⠀⠀⠀⠀⠀⢠⣴⣿⣦⣀⠀⠀⠀⠀⠀⠀⠀⣠⣿⣿⠿⠁⠀⠀⠀⠀⠀⠀⠀⠀ ⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣾⣿⣿⣿⣿⣿⡿⠟⠀⠘⠻⣿⣷⣀⡀⠀⠀⣀⣾⡟⠋⠛⢿⣿⣶⣤⣤⣤⣴⣾⣿⣿⡿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⣿⣿⣿⣿⠟⠁⠀⠀⠀⠀⠂⠈⠙⢻⡿⡿⠟⠛⠉⠀⠀⠀⠀⠈⠙⢛⢿⠿⠿⠻⠻⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣼⣿⡿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⣿⠟⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⡟⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⣿⣤⣤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ * This contract implements the $GAS token, a complementary asset * designed to support and enhance the $ASS token ecosystem by * automatically swapping $GAS for $ASS, thereby potentially supporting * its price floor. By using this contract, you agree to the terms and * conditions described herein. * * @dev * - This version replaces any ETH-swapping logic with direct swaps for $ASS * (address: 0x1BF56759e95D9E85b6927161f6F8DBC4568642bc). * - Ensure you audit and test this thoroughly before mainnet deployment. * * DISCLAIMER: * - The information contained herein is provided “as is” and without any * representations or warranties, express or implied. The authors, developers, * and contributors shall not be held liable for any damages or losses arising * from the use of this software, including but not limited to direct, indirect, * incidental, or consequential damages. * - This is not financial advice. Conduct your own due diligence and consult * professional advisors before making any investment decisions. * - Token holders and users are solely responsible for compliance with * applicable laws and regulations related to cryptocurrencies and digital * assets. * * Web: https://ass.financial * Twitter/X: https://x.com/assfinancial * Telegram: https://t.me/ass_financial */ pragma solidity 0.8.25; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); } /** * @dev *** IMPORTANT *** * This is your $GAS contract with direct swapping for $ASS instead of ETH. */ contract GasUtilityToken is Context, IERC20, Ownable { using SafeMath for uint256; // ========================== NEW: The $ASS token address ========================== address public constant ASS_TOKEN = 0x1BF56759e95D9E85b6927161f6F8DBC4568642bc; // Balances and allowances mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; // Exile logic (likely an exempt or excluded list) mapping (address => bool) private isExile; // Identifies whether an address is a marketPair (DEX pair) mapping (address => bool) public marketPair; // Anti-bot logic mapping (uint256 => uint256) private perBuyCount; uint256 private firstBlock = 0; // Taxes uint256 private _initialBuyTax=23; uint256 private _initialSellTax=23; uint256 private _finalBuyTax=2; uint256 private _finalSellTax=3; uint256 private _reduceBuyTaxAt=23; uint256 private _reduceSellTaxAt=23; // BUY/SELL counters uint256 private _buyCount=0; uint256 private sellCount = 0; uint256 private lastSellBlock = 0; // -------------------- ADD THIS VARIABLE -------------------- // Set this to the buy count threshold you want before allowing swaps: uint256 private _preventSwapBefore = 10; // Basic token info uint8 private constant _decimals = 9; uint256 private constant _tTotal = 100000000 * 10**_decimals; string private constant _name = unicode"Gas Utility Token"; string private constant _symbol = unicode"GAS"; // Transaction limits uint256 public _maxTxAmount = 1_000_000 * 10**_decimals; uint256 public _maxWalletSize = 1_000_000 * 10**_decimals; // Swap thresholds uint256 public _taxSwapThreshold= 1_000_000 * 10**_decimals; uint256 public _maxTaxSwap= 1_000_000 * 10**_decimals; // Tax wallet (if you still need to collect some ETH or tokens) address payable private _taxWallet; // Uniswap IUniswapV2Router02 private uniswapV2Router; address public uniswapV2Pair; // Trading / swap controls bool private tradingOpen; bool private inSwap = false; bool private swapEnabled = false; // Sell limit triggers uint256 public caSell = 3; bool public caTrigger = true; event MaxTxAmountUpdated(uint _maxTxAmount); modifier lockTheSwap { inSwap = true; _; inSwap = false; } constructor () { _taxWallet = payable(_msgSender()); _balances[_msgSender()] = _tTotal; isExile[owner()] = true; isExile[address(this)] = true; // You might exclude the Uniswap pair from certain rules // isExile[address(uniswapV2Pair)] = true; // set later after pair creation emit Transfer(address(0), _msgSender(), _tTotal); } // -------------------- ERC20 Standard Methods -------------------- function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function totalSupply() public pure override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public override returns (bool) { _transfer(sender, recipient, amount); _approve( sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance") ); return true; } // Internal approve function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from zero"); require(spender != address(0), "ERC20: approve to zero"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } // If you want to designate certain DEX pairs after creation function setMarketPair(address addr) public onlyOwner { marketPair[addr] = true; } // -------------------- MAIN TRANSFER LOGIC -------------------- function _transfer(address from, address to, uint256 amount) private { require(from != address(0), "ERC20: from zero address"); require(to != address(0), "ERC20: to zero address"); require(amount > 0, "Transfer must be > 0"); uint256 taxAmount = 0; // If neither from nor to is the owner... if (from != owner() && to != owner()) { // Enforce buy/sell taxes taxAmount = amount.mul((_buyCount > _reduceBuyTaxAt) ? _finalBuyTax : _initialBuyTax).div(100); // First block anti-snipe logic if(block.number == firstBlock){ require(perBuyCount[block.number] < 51, "Exceeds buys on the first block."); perBuyCount[block.number]++; } // BUY if (marketPair[from] && to != address(uniswapV2Router) && !isExile[to]) { require(amount <= _maxTxAmount, "Exceeds _maxTxAmount"); require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds maxWalletSize"); _buyCount++; } // Normal transfer if (!marketPair[to] && !isExile[to]) { require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds maxWalletSize"); } // SELL if (marketPair[to] && from != address(this)) { taxAmount = amount.mul((_buyCount > _reduceSellTaxAt) ? _finalSellTax : _initialSellTax).div(100); } // Transfer between wallets (not a buy/sell) if (!marketPair[from] && !marketPair[to] && from != address(this)) { taxAmount = 0; } // -------------------- SWAP LOGIC (now swaps $GAS for $ASS) -------------------- uint256 contractTokenBalance = balanceOf(address(this)); if ( caTrigger && !inSwap && marketPair[to] && swapEnabled && contractTokenBalance > _taxSwapThreshold && _buyCount > _preventSwapBefore // <-- now recognized ) { // Limit sells per block if needed if (block.number > lastSellBlock) { sellCount = 0; } require(sellCount < caSell, "CA balance sell limit"); // Swap for $ASS swapTokensForAss(_min(amount, _min(contractTokenBalance, _maxTaxSwap))); // OPTIONAL: Burn or handle the newly acquired $ASS _burnAllAssInContract(); sellCount++; lastSellBlock = block.number; } else if ( !inSwap && marketPair[to] && swapEnabled && contractTokenBalance > _taxSwapThreshold && _buyCount > _preventSwapBefore // <-- now recognized ) { swapTokensForAss(_min(amount, _min(contractTokenBalance, _maxTaxSwap))); _burnAllAssInContract(); } } // Take Tax if(taxAmount > 0){ _balances[address(this)] = _balances[address(this)].add(taxAmount); emit Transfer(from, address(this), taxAmount); } // Transfer the remainder _balances[from] = _balances[from].sub(amount); _balances[to] = _balances[to].add(amount.sub(taxAmount)); emit Transfer(from, to, amount.sub(taxAmount)); } // -------------------- HELPER: get min of two values -------------------- function _min(uint256 a, uint256 b) private pure returns (uint256) { return (a > b) ? b : a; } // -------------------- NEW FUNCTION: Swap $GAS for $ASS -------------------- function swapTokensForAss(uint256 tokenAmount) private lockTheSwap { require(tokenAmount > 0, "Token amount must be > 0"); address[] memory path = new address[](3); path[0] = address(this); // $GAS path[1] = uniswapV2Router.WETH(); // Intermediate WETH path[2] = ASS_TOKEN; // $ASS _approve(address(this), address(uniswapV2Router), tokenAmount); // We do NOT expect any particular amount of $ASS (set to 0 => accept any output) uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), // Contract receives the $ASS block.timestamp ); } // -------------------- OPTIONAL: Burn the $ASS we acquire -------------------- function _burnAllAssInContract() private { uint256 assBalance = IERC20(ASS_TOKEN).balanceOf(address(this)); if(assBalance > 0) { // Example: Transfer to 0xdead (burn address) IERC20(ASS_TOKEN).transfer( 0x000000000000000000000000000000000000dEaD, assBalance ); } } // -------------------- Various Owner/Admin Functions -------------------- function setMaxTaxSwap(bool enabled, uint256 amount) external onlyOwner { swapEnabled = enabled; _maxTaxSwap = amount; } function setcaSell(uint256 amount) external onlyOwner { caSell = amount; } function setcaTrigger(bool _status) external onlyOwner { caTrigger = _status; } // If you still want to rescue stray ETH function rescueETH() external onlyOwner { payable(_taxWallet).transfer(address(this).balance); } function rescueERC20tokens(address _tokenAddr, uint _amount) external onlyOwner { IERC20(_tokenAddr).transfer(_taxWallet, _amount); } function setFeeWallet(address newTaxWallet) external onlyOwner { _taxWallet = payable(newTaxWallet); } // Removes transaction/hold limits function isNotRestricted() external onlyOwner { _maxTxAmount = _tTotal; _maxWalletSize = _tTotal; emit MaxTxAmountUpdated(_tTotal); } // -------------------- TRADING ENABLE -------------------- function enableTrading() external onlyOwner() { require(!tradingOpen, "trading already open"); uniswapV2Router = IUniswapV2Router02( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D // Uniswap mainnet router ); _approve(address(this), address(uniswapV2Router), _tTotal); uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()) .createPair(address(this), uniswapV2Router.WETH()); marketPair[address(uniswapV2Pair)] = true; isExile[address(uniswapV2Pair)] = true; // Add liquidity (if you’re sending tokens & ETH from the contract) uniswapV2Router.addLiquidityETH{value: address(this).balance}( address(this), balanceOf(address(this)), 0, 0, owner(), block.timestamp ); IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max); swapEnabled = true; tradingOpen = true; firstBlock = block.number; } receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","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":"ASS_TOKEN","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"caSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"caTrigger","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isNotRestricted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"marketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueERC20tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newTaxWallet","type":"address"}],"name":"setFeeWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setMarketPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxTaxSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setcaSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"setcaTrigger","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040525f6006556017600755601760085560026009556003600a556017600b556017600c555f600d555f600e555f600f55600a6010556009600a610045919061055e565b620f424061005391906105a8565b6011556009600a610064919061055e565b620f424061007291906105a8565b6012556009600a610083919061055e565b620f424061009191906105a8565b6013556009600a6100a2919061055e565b620f42406100b091906105a8565b6014555f601760156101000a81548160ff0219169083151502179055505f601760166101000a81548160ff0219169083151502179055506003601855600160195f6101000a81548160ff021916908315150217905550348015610111575f80fd5b505f6101216103bf60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506101cb6103bf60201b60201c565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a610218919061055e565b6305f5e10061022791906105a8565b60015f6102386103bf60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f6102886103c660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555061033a6103bf60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a610396919061055e565b6305f5e1006103a591906105a8565b6040516103b291906105f8565b60405180910390a3610611565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561046f5780860481111561044b5761044a6103ed565b5b600185161561045a5780820291505b80810290506104688561041a565b945061042f565b94509492505050565b5f826104875760019050610542565b81610494575f9050610542565b81600181146104aa57600281146104b4576104e3565b6001915050610542565b60ff8411156104c6576104c56103ed565b5b8360020a9150848211156104dd576104dc6103ed565b5b50610542565b5060208310610133831016604e8410600b84101617156105185782820a905083811115610513576105126103ed565b5b610542565b6105258484846001610426565b9250905081840481111561053c5761053b6103ed565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f61056882610549565b915061057383610552565b92506105a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484610478565b905092915050565b5f6105b282610549565b91506105bd83610549565b92508282026105cb81610549565b915082820484148315176105e2576105e16103ed565b5b5092915050565b6105f281610549565b82525050565b5f60208201905061060b5f8301846105e9565b92915050565b613f318061061e5f395ff3fe6080604052600436106101d0575f3560e01c806374bebabb116100f6578063a9059cbb11610094578063e68d0b0511610063578063e68d0b0514610621578063f2fde38b14610649578063f5b3c3bf14610671578063fce0299a146106ad576101d7565b8063a9059cbb14610555578063bf474bed14610591578063c8d464a4146105bb578063dd62ed3e146105e5576101d7565b80638da5cb5b116100d05780638da5cb5b146104af5780638f9a55c0146104d957806390d49b9d1461050357806395d89b411461052b576101d7565b806374bebabb146104455780637d1db4a51461046f5780638a8c523c14610499576101d7565b806323b872dd1161016e57806353bc13dc1161013d57806353bc13dc146103a157806365e3daaf146103c957806370a08231146103f3578063715018a61461042f576101d7565b806323b872dd146102e9578063313ce567146103255780633bdb20c51461034f57806349bd5a5e14610377576101d7565b80630faee56f116101aa5780630faee56f1461025757806318160ddd1461028157806320800a00146102ab57806322c97e31146102c1576101d7565b806301ab6ee5146101db57806306fdde03146101f1578063095ea7b31461021b576101d7565b366101d757005b5f80fd5b3480156101e6575f80fd5b506101ef6106d5565b005b3480156101fc575f80fd5b50610205610804565b6040516102129190612e83565b60405180910390f35b348015610226575f80fd5b50610241600480360381019061023c9190612f34565b610841565b60405161024e9190612f8c565b60405180910390f35b348015610262575f80fd5b5061026b61085e565b6040516102789190612fb4565b60405180910390f35b34801561028c575f80fd5b50610295610864565b6040516102a29190612fb4565b60405180910390f35b3480156102b6575f80fd5b506102bf610887565b005b3480156102cc575f80fd5b506102e760048036038101906102e29190612ff7565b610982565b005b3480156102f4575f80fd5b5061030f600480360381019061030a9190613022565b610a32565b60405161031c9190612f8c565b60405180910390f35b348015610330575f80fd5b50610339610b06565b604051610346919061308d565b60405180910390f35b34801561035a575f80fd5b50610375600480360381019061037091906130a6565b610b0e565b005b348015610382575f80fd5b5061038b610bac565b60405161039891906130e0565b60405180910390f35b3480156103ac575f80fd5b506103c760048036038101906103c291906130f9565b610bd1565b005b3480156103d4575f80fd5b506103dd610cbd565b6040516103ea91906130e0565b60405180910390f35b3480156103fe575f80fd5b50610419600480360381019061041491906130f9565b610cd5565b6040516104269190612fb4565b60405180910390f35b34801561043a575f80fd5b50610443610d1b565b005b348015610450575f80fd5b50610459610e69565b6040516104669190612fb4565b60405180910390f35b34801561047a575f80fd5b50610483610e6f565b6040516104909190612fb4565b60405180910390f35b3480156104a4575f80fd5b506104ad610e75565b005b3480156104ba575f80fd5b506104c361148a565b6040516104d091906130e0565b60405180910390f35b3480156104e4575f80fd5b506104ed6114b1565b6040516104fa9190612fb4565b60405180910390f35b34801561050e575f80fd5b50610529600480360381019061052491906130f9565b6114b7565b005b348015610536575f80fd5b5061053f61158e565b60405161054c9190612e83565b60405180910390f35b348015610560575f80fd5b5061057b60048036038101906105769190612f34565b6115cb565b6040516105889190612f8c565b60405180910390f35b34801561059c575f80fd5b506105a56115e8565b6040516105b29190612fb4565b60405180910390f35b3480156105c6575f80fd5b506105cf6115ee565b6040516105dc9190612f8c565b60405180910390f35b3480156105f0575f80fd5b5061060b60048036038101906106069190613124565b611600565b6040516106189190612fb4565b60405180910390f35b34801561062c575f80fd5b5061064760048036038101906106429190613162565b611682565b005b348015610654575f80fd5b5061066f600480360381019061066a91906130f9565b61173b565b005b34801561067c575f80fd5b50610697600480360381019061069291906130f9565b6118f8565b6040516106a49190612f8c565b60405180910390f35b3480156106b8575f80fd5b506106d360048036038101906106ce9190612f34565b611915565b005b6106dd611a4a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610769576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610760906131ea565b60405180910390fd5b6009600a6107779190613364565b6305f5e10061078691906133ae565b6011819055506009600a61079a9190613364565b6305f5e1006107a991906133ae565b6012819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a6107de9190613364565b6305f5e1006107ed91906133ae565b6040516107fa9190612fb4565b60405180910390a1565b60606040518060400160405280601181526020017f476173205574696c69747920546f6b656e000000000000000000000000000000815250905090565b5f61085461084d611a4a565b8484611a51565b6001905092915050565b60145481565b5f6009600a6108739190613364565b6305f5e10061088291906133ae565b905090565b61088f611a4a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461091b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610912906131ea565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f1935050505015801561097f573d5f803e3d5ffd5b50565b61098a611a4a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0d906131ea565b60405180910390fd5b8060195f6101000a81548160ff02191690831515021790555050565b5f610a3e848484611c14565b610afb84610a4a611a4a565b610af685604051806060016040528060288152602001613ed46028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610aad611a4a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127959092919063ffffffff16565b611a51565b600190509392505050565b5f6009905090565b610b16611a4a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ba2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b99906131ea565b60405180910390fd5b8060188190555050565b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610bd9611a4a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5c906131ea565b60405180910390fd5b600160045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b731bf56759e95d9e85b6927161f6f8dbc4568642bc81565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610d23611a4a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610daf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da6906131ea565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60185481565b60115481565b610e7d611a4a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f00906131ea565b60405180910390fd5b601760149054906101000a900460ff1615610f59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5090613439565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610ff53060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610fe19190613364565b6305f5e100610ff091906133ae565b611a51565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561105f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611083919061346b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611109573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061112d919061346b565b6040518363ffffffff1660e01b815260040161114a929190613496565b6020604051808303815f875af1158015611166573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061118a919061346b565b60175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160045f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306112fd30610cd5565b5f8061130761148a565b426040518863ffffffff1660e01b8152600401611329969594939291906134ff565b60606040518083038185885af1158015611345573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061136a9190613572565b50505060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161140a9291906135c2565b6020604051808303815f875af1158015611426573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061144a91906135fd565b506001601760166101000a81548160ff0219169083151502179055506001601760146101000a81548160ff02191690831515021790555043600681905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60125481565b6114bf611a4a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461154b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611542906131ea565b60405180910390fd5b8060155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606040518060400160405280600381526020017f4741530000000000000000000000000000000000000000000000000000000000815250905090565b5f6115de6115d7611a4a565b8484611c14565b6001905092915050565b60135481565b60195f9054906101000a900460ff1681565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61168a611a4a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611716576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170d906131ea565b60405180910390fd5b81601760166101000a81548160ff021916908315150217905550806014819055505050565b611743611a4a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c6906131ea565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361183d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183490613698565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6004602052805f5260405f205f915054906101000a900460ff1681565b61191d611a4a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a0906131ea565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401611a05929190613708565b6020604051808303815f875af1158015611a21573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a4591906135fd565b505050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611abf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab690613779565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b24906137e1565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c079190612fb4565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7990613849565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611cf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce7906138b1565b60405180910390fd5b5f8111611d32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2990613919565b60405180910390fd5b5f611d3b61148a565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611da95750611d7961148a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156124e557611dea6064611ddc600b54600d5411611dc957600754611dcd565b6009545b856127f790919063ffffffff16565b61286e90919063ffffffff16565b90506006544303611e7057603360055f4381526020019081526020015f205410611e49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4090613981565b60405180910390fd5b60055f4381526020019081526020015f205f815480929190611e6a9061399f565b91905055505b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611f13575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611f66575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561202057601154821115611fb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa790613a30565b60405180910390fd5b60125482611fbd85610cd5565b611fc79190613a4e565b1115612008576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fff90613acb565b60405180910390fd5b600d5f81548092919061201a9061399f565b91905055505b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156120be575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561211c57601254826120d085610cd5565b6120da9190613a4e565b111561211b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211290613acb565b60405180910390fd5b5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561219e57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156121e2576121df60646121d1600c54600d54116121be576008546121c2565b600a545b856127f790919063ffffffff16565b61286e90919063ffffffff16565b90505b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612280575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156122b857503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156122c1575f90505b5f6122cb30610cd5565b905060195f9054906101000a900460ff1680156122f55750601760159054906101000a900460ff16155b8015612347575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b801561235f5750601760169054906101000a900460ff165b801561236c575060135481115b801561237b5750601054600d54115b1561242057600f54431115612392575f600e819055505b601854600e54106123d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123cf90613b33565b60405180910390fd5b6123f56123f0846123eb846014546128b7565b6128b7565b6128cf565b6123fd612bdf565b600e5f81548092919061240f9061399f565b919050555043600f819055506124e3565b601760159054906101000a900460ff16158015612483575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b801561249b5750601760169054906101000a900460ff165b80156124a8575060135481115b80156124b75750601054600d54115b156124e2576124d96124d4846124cf846014546128b7565b6128b7565b6128cf565b6124e1612bdf565b5b5b505b5f8111156125e45761253d8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612d0c90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125db9190612fb4565b60405180910390a35b6126348260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612d6990919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506126d761268b8284612d6990919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612d0c90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61277a8486612d6990919063ffffffff16565b6040516127879190612fb4565b60405180910390a350505050565b5f8383111582906127dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d39190612e83565b60405180910390fd5b505f83856127ea9190613b51565b9050809150509392505050565b5f808303612807575f9050612868565b5f828461281491906133ae565b90508284826128239190613bb1565b14612863576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285a90613c51565b60405180910390fd5b809150505b92915050565b5f6128af83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612db2565b905092915050565b5f8183116128c557826128c7565b815b905092915050565b6001601760156101000a81548160ff0219169083151502179055505f811161292c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292390613cb9565b60405180910390fd5b5f600367ffffffffffffffff81111561294857612947613cd7565b5b6040519080825280602002602001820160405280156129765781602001602082028036833780820191505090505b50905030815f8151811061298d5761298c613d04565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a31573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a55919061346b565b81600181518110612a6957612a68613d04565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050731bf56759e95d9e85b6927161f6f8dbc4568642bc81600281518110612acc57612acb613d04565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612b323060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611a51565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d795835f8430426040518663ffffffff1660e01b8152600401612b94959493929190613de8565b5f604051808303815f87803b158015612bab575f80fd5b505af1158015612bbd573d5f803e3d5ffd5b50505050505f601760156101000a81548160ff02191690831515021790555050565b5f731bf56759e95d9e85b6927161f6f8dbc4568642bc73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612c2d91906130e0565b602060405180830381865afa158015612c48573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c6c9190613e40565b90505f811115612d0957731bf56759e95d9e85b6927161f6f8dbc4568642bc73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61dead836040518363ffffffff1660e01b8152600401612cc79291906135c2565b6020604051808303815f875af1158015612ce3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d0791906135fd565b505b50565b5f808284612d1a9190613a4e565b905083811015612d5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d5690613eb5565b60405180910390fd5b8091505092915050565b5f612daa83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612795565b905092915050565b5f8083118290612df8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612def9190612e83565b60405180910390fd5b505f8385612e069190613bb1565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612e5582612e13565b612e5f8185612e1d565b9350612e6f818560208601612e2d565b612e7881612e3b565b840191505092915050565b5f6020820190508181035f830152612e9b8184612e4b565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612ed082612ea7565b9050919050565b612ee081612ec6565b8114612eea575f80fd5b50565b5f81359050612efb81612ed7565b92915050565b5f819050919050565b612f1381612f01565b8114612f1d575f80fd5b50565b5f81359050612f2e81612f0a565b92915050565b5f8060408385031215612f4a57612f49612ea3565b5b5f612f5785828601612eed565b9250506020612f6885828601612f20565b9150509250929050565b5f8115159050919050565b612f8681612f72565b82525050565b5f602082019050612f9f5f830184612f7d565b92915050565b612fae81612f01565b82525050565b5f602082019050612fc75f830184612fa5565b92915050565b612fd681612f72565b8114612fe0575f80fd5b50565b5f81359050612ff181612fcd565b92915050565b5f6020828403121561300c5761300b612ea3565b5b5f61301984828501612fe3565b91505092915050565b5f805f6060848603121561303957613038612ea3565b5b5f61304686828701612eed565b935050602061305786828701612eed565b925050604061306886828701612f20565b9150509250925092565b5f60ff82169050919050565b61308781613072565b82525050565b5f6020820190506130a05f83018461307e565b92915050565b5f602082840312156130bb576130ba612ea3565b5b5f6130c884828501612f20565b91505092915050565b6130da81612ec6565b82525050565b5f6020820190506130f35f8301846130d1565b92915050565b5f6020828403121561310e5761310d612ea3565b5b5f61311b84828501612eed565b91505092915050565b5f806040838503121561313a57613139612ea3565b5b5f61314785828601612eed565b925050602061315885828601612eed565b9150509250929050565b5f806040838503121561317857613177612ea3565b5b5f61318585828601612fe3565b925050602061319685828601612f20565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6131d4602083612e1d565b91506131df826131a0565b602082019050919050565b5f6020820190508181035f830152613201816131c8565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561328a5780860481111561326657613265613208565b5b60018516156132755780820291505b808102905061328385613235565b945061324a565b94509492505050565b5f826132a2576001905061335d565b816132af575f905061335d565b81600181146132c557600281146132cf576132fe565b600191505061335d565b60ff8411156132e1576132e0613208565b5b8360020a9150848211156132f8576132f7613208565b5b5061335d565b5060208310610133831016604e8410600b84101617156133335782820a90508381111561332e5761332d613208565b5b61335d565b6133408484846001613241565b9250905081840481111561335757613356613208565b5b81810290505b9392505050565b5f61336e82612f01565b915061337983613072565b92506133a67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613293565b905092915050565b5f6133b882612f01565b91506133c383612f01565b92508282026133d181612f01565b915082820484148315176133e8576133e7613208565b5b5092915050565b7f74726164696e6720616c7265616479206f70656e0000000000000000000000005f82015250565b5f613423601483612e1d565b915061342e826133ef565b602082019050919050565b5f6020820190508181035f83015261345081613417565b9050919050565b5f8151905061346581612ed7565b92915050565b5f602082840312156134805761347f612ea3565b5b5f61348d84828501613457565b91505092915050565b5f6040820190506134a95f8301856130d1565b6134b660208301846130d1565b9392505050565b5f819050919050565b5f819050919050565b5f6134e96134e46134df846134bd565b6134c6565b612f01565b9050919050565b6134f9816134cf565b82525050565b5f60c0820190506135125f8301896130d1565b61351f6020830188612fa5565b61352c60408301876134f0565b61353960608301866134f0565b61354660808301856130d1565b61355360a0830184612fa5565b979650505050505050565b5f8151905061356c81612f0a565b92915050565b5f805f6060848603121561358957613588612ea3565b5b5f6135968682870161355e565b93505060206135a78682870161355e565b92505060406135b88682870161355e565b9150509250925092565b5f6040820190506135d55f8301856130d1565b6135e26020830184612fa5565b9392505050565b5f815190506135f781612fcd565b92915050565b5f6020828403121561361257613611612ea3565b5b5f61361f848285016135e9565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613682602683612e1d565b915061368d82613628565b604082019050919050565b5f6020820190508181035f8301526136af81613676565b9050919050565b5f6136d06136cb6136c684612ea7565b6134c6565b612ea7565b9050919050565b5f6136e1826136b6565b9050919050565b5f6136f2826136d7565b9050919050565b613702816136e8565b82525050565b5f60408201905061371b5f8301856136f9565b6137286020830184612fa5565b9392505050565b7f45524332303a20617070726f76652066726f6d207a65726f00000000000000005f82015250565b5f613763601883612e1d565b915061376e8261372f565b602082019050919050565b5f6020820190508181035f83015261379081613757565b9050919050565b7f45524332303a20617070726f766520746f207a65726f000000000000000000005f82015250565b5f6137cb601683612e1d565b91506137d682613797565b602082019050919050565b5f6020820190508181035f8301526137f8816137bf565b9050919050565b7f45524332303a2066726f6d207a65726f206164647265737300000000000000005f82015250565b5f613833601883612e1d565b915061383e826137ff565b602082019050919050565b5f6020820190508181035f83015261386081613827565b9050919050565b7f45524332303a20746f207a65726f2061646472657373000000000000000000005f82015250565b5f61389b601683612e1d565b91506138a682613867565b602082019050919050565b5f6020820190508181035f8301526138c88161388f565b9050919050565b7f5472616e73666572206d757374206265203e20300000000000000000000000005f82015250565b5f613903601483612e1d565b915061390e826138cf565b602082019050919050565b5f6020820190508181035f830152613930816138f7565b9050919050565b7f457863656564732062757973206f6e2074686520666972737420626c6f636b2e5f82015250565b5f61396b602083612e1d565b915061397682613937565b602082019050919050565b5f6020820190508181035f8301526139988161395f565b9050919050565b5f6139a982612f01565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036139db576139da613208565b5b600182019050919050565b7f45786365656473205f6d61785478416d6f756e740000000000000000000000005f82015250565b5f613a1a601483612e1d565b9150613a25826139e6565b602082019050919050565b5f6020820190508181035f830152613a4781613a0e565b9050919050565b5f613a5882612f01565b9150613a6383612f01565b9250828201905080821115613a7b57613a7a613208565b5b92915050565b7f45786365656473206d617857616c6c657453697a6500000000000000000000005f82015250565b5f613ab5601583612e1d565b9150613ac082613a81565b602082019050919050565b5f6020820190508181035f830152613ae281613aa9565b9050919050565b7f43412062616c616e63652073656c6c206c696d697400000000000000000000005f82015250565b5f613b1d601583612e1d565b9150613b2882613ae9565b602082019050919050565b5f6020820190508181035f830152613b4a81613b11565b9050919050565b5f613b5b82612f01565b9150613b6683612f01565b9250828203905081811115613b7e57613b7d613208565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613bbb82612f01565b9150613bc683612f01565b925082613bd657613bd5613b84565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613c3b602183612e1d565b9150613c4682613be1565b604082019050919050565b5f6020820190508181035f830152613c6881613c2f565b9050919050565b7f546f6b656e20616d6f756e74206d757374206265203e203000000000000000005f82015250565b5f613ca3601883612e1d565b9150613cae82613c6f565b602082019050919050565b5f6020820190508181035f830152613cd081613c97565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613d6381612ec6565b82525050565b5f613d748383613d5a565b60208301905092915050565b5f602082019050919050565b5f613d9682613d31565b613da08185613d3b565b9350613dab83613d4b565b805f5b83811015613ddb578151613dc28882613d69565b9750613dcd83613d80565b925050600181019050613dae565b5085935050505092915050565b5f60a082019050613dfb5f830188612fa5565b613e0860208301876134f0565b8181036040830152613e1a8186613d8c565b9050613e2960608301856130d1565b613e366080830184612fa5565b9695505050505050565b5f60208284031215613e5557613e54612ea3565b5b5f613e628482850161355e565b91505092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613e9f601b83612e1d565b9150613eaa82613e6b565b602082019050919050565b5f6020820190508181035f830152613ecc81613e93565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212201b4415df949fb1e6c4d790e3413dc853cbd9dd9bd238282b56302066ebacb4df64736f6c63430008190033
Deployed Bytecode
0x6080604052600436106101d0575f3560e01c806374bebabb116100f6578063a9059cbb11610094578063e68d0b0511610063578063e68d0b0514610621578063f2fde38b14610649578063f5b3c3bf14610671578063fce0299a146106ad576101d7565b8063a9059cbb14610555578063bf474bed14610591578063c8d464a4146105bb578063dd62ed3e146105e5576101d7565b80638da5cb5b116100d05780638da5cb5b146104af5780638f9a55c0146104d957806390d49b9d1461050357806395d89b411461052b576101d7565b806374bebabb146104455780637d1db4a51461046f5780638a8c523c14610499576101d7565b806323b872dd1161016e57806353bc13dc1161013d57806353bc13dc146103a157806365e3daaf146103c957806370a08231146103f3578063715018a61461042f576101d7565b806323b872dd146102e9578063313ce567146103255780633bdb20c51461034f57806349bd5a5e14610377576101d7565b80630faee56f116101aa5780630faee56f1461025757806318160ddd1461028157806320800a00146102ab57806322c97e31146102c1576101d7565b806301ab6ee5146101db57806306fdde03146101f1578063095ea7b31461021b576101d7565b366101d757005b5f80fd5b3480156101e6575f80fd5b506101ef6106d5565b005b3480156101fc575f80fd5b50610205610804565b6040516102129190612e83565b60405180910390f35b348015610226575f80fd5b50610241600480360381019061023c9190612f34565b610841565b60405161024e9190612f8c565b60405180910390f35b348015610262575f80fd5b5061026b61085e565b6040516102789190612fb4565b60405180910390f35b34801561028c575f80fd5b50610295610864565b6040516102a29190612fb4565b60405180910390f35b3480156102b6575f80fd5b506102bf610887565b005b3480156102cc575f80fd5b506102e760048036038101906102e29190612ff7565b610982565b005b3480156102f4575f80fd5b5061030f600480360381019061030a9190613022565b610a32565b60405161031c9190612f8c565b60405180910390f35b348015610330575f80fd5b50610339610b06565b604051610346919061308d565b60405180910390f35b34801561035a575f80fd5b50610375600480360381019061037091906130a6565b610b0e565b005b348015610382575f80fd5b5061038b610bac565b60405161039891906130e0565b60405180910390f35b3480156103ac575f80fd5b506103c760048036038101906103c291906130f9565b610bd1565b005b3480156103d4575f80fd5b506103dd610cbd565b6040516103ea91906130e0565b60405180910390f35b3480156103fe575f80fd5b50610419600480360381019061041491906130f9565b610cd5565b6040516104269190612fb4565b60405180910390f35b34801561043a575f80fd5b50610443610d1b565b005b348015610450575f80fd5b50610459610e69565b6040516104669190612fb4565b60405180910390f35b34801561047a575f80fd5b50610483610e6f565b6040516104909190612fb4565b60405180910390f35b3480156104a4575f80fd5b506104ad610e75565b005b3480156104ba575f80fd5b506104c361148a565b6040516104d091906130e0565b60405180910390f35b3480156104e4575f80fd5b506104ed6114b1565b6040516104fa9190612fb4565b60405180910390f35b34801561050e575f80fd5b50610529600480360381019061052491906130f9565b6114b7565b005b348015610536575f80fd5b5061053f61158e565b60405161054c9190612e83565b60405180910390f35b348015610560575f80fd5b5061057b60048036038101906105769190612f34565b6115cb565b6040516105889190612f8c565b60405180910390f35b34801561059c575f80fd5b506105a56115e8565b6040516105b29190612fb4565b60405180910390f35b3480156105c6575f80fd5b506105cf6115ee565b6040516105dc9190612f8c565b60405180910390f35b3480156105f0575f80fd5b5061060b60048036038101906106069190613124565b611600565b6040516106189190612fb4565b60405180910390f35b34801561062c575f80fd5b5061064760048036038101906106429190613162565b611682565b005b348015610654575f80fd5b5061066f600480360381019061066a91906130f9565b61173b565b005b34801561067c575f80fd5b50610697600480360381019061069291906130f9565b6118f8565b6040516106a49190612f8c565b60405180910390f35b3480156106b8575f80fd5b506106d360048036038101906106ce9190612f34565b611915565b005b6106dd611a4a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610769576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610760906131ea565b60405180910390fd5b6009600a6107779190613364565b6305f5e10061078691906133ae565b6011819055506009600a61079a9190613364565b6305f5e1006107a991906133ae565b6012819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a6107de9190613364565b6305f5e1006107ed91906133ae565b6040516107fa9190612fb4565b60405180910390a1565b60606040518060400160405280601181526020017f476173205574696c69747920546f6b656e000000000000000000000000000000815250905090565b5f61085461084d611a4a565b8484611a51565b6001905092915050565b60145481565b5f6009600a6108739190613364565b6305f5e10061088291906133ae565b905090565b61088f611a4a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461091b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610912906131ea565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f1935050505015801561097f573d5f803e3d5ffd5b50565b61098a611a4a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0d906131ea565b60405180910390fd5b8060195f6101000a81548160ff02191690831515021790555050565b5f610a3e848484611c14565b610afb84610a4a611a4a565b610af685604051806060016040528060288152602001613ed46028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610aad611a4a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127959092919063ffffffff16565b611a51565b600190509392505050565b5f6009905090565b610b16611a4a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ba2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b99906131ea565b60405180910390fd5b8060188190555050565b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610bd9611a4a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5c906131ea565b60405180910390fd5b600160045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b731bf56759e95d9e85b6927161f6f8dbc4568642bc81565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610d23611a4a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610daf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da6906131ea565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60185481565b60115481565b610e7d611a4a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f00906131ea565b60405180910390fd5b601760149054906101000a900460ff1615610f59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5090613439565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610ff53060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610fe19190613364565b6305f5e100610ff091906133ae565b611a51565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561105f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611083919061346b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611109573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061112d919061346b565b6040518363ffffffff1660e01b815260040161114a929190613496565b6020604051808303815f875af1158015611166573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061118a919061346b565b60175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160045f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306112fd30610cd5565b5f8061130761148a565b426040518863ffffffff1660e01b8152600401611329969594939291906134ff565b60606040518083038185885af1158015611345573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061136a9190613572565b50505060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161140a9291906135c2565b6020604051808303815f875af1158015611426573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061144a91906135fd565b506001601760166101000a81548160ff0219169083151502179055506001601760146101000a81548160ff02191690831515021790555043600681905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60125481565b6114bf611a4a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461154b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611542906131ea565b60405180910390fd5b8060155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606040518060400160405280600381526020017f4741530000000000000000000000000000000000000000000000000000000000815250905090565b5f6115de6115d7611a4a565b8484611c14565b6001905092915050565b60135481565b60195f9054906101000a900460ff1681565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61168a611a4a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611716576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170d906131ea565b60405180910390fd5b81601760166101000a81548160ff021916908315150217905550806014819055505050565b611743611a4a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c6906131ea565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361183d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183490613698565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6004602052805f5260405f205f915054906101000a900460ff1681565b61191d611a4a565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a0906131ea565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401611a05929190613708565b6020604051808303815f875af1158015611a21573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a4591906135fd565b505050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611abf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab690613779565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b24906137e1565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c079190612fb4565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7990613849565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611cf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce7906138b1565b60405180910390fd5b5f8111611d32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2990613919565b60405180910390fd5b5f611d3b61148a565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611da95750611d7961148a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156124e557611dea6064611ddc600b54600d5411611dc957600754611dcd565b6009545b856127f790919063ffffffff16565b61286e90919063ffffffff16565b90506006544303611e7057603360055f4381526020019081526020015f205410611e49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4090613981565b60405180910390fd5b60055f4381526020019081526020015f205f815480929190611e6a9061399f565b91905055505b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611f13575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611f66575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561202057601154821115611fb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa790613a30565b60405180910390fd5b60125482611fbd85610cd5565b611fc79190613a4e565b1115612008576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fff90613acb565b60405180910390fd5b600d5f81548092919061201a9061399f565b91905055505b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156120be575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561211c57601254826120d085610cd5565b6120da9190613a4e565b111561211b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211290613acb565b60405180910390fd5b5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561219e57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156121e2576121df60646121d1600c54600d54116121be576008546121c2565b600a545b856127f790919063ffffffff16565b61286e90919063ffffffff16565b90505b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612280575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156122b857503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156122c1575f90505b5f6122cb30610cd5565b905060195f9054906101000a900460ff1680156122f55750601760159054906101000a900460ff16155b8015612347575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b801561235f5750601760169054906101000a900460ff165b801561236c575060135481115b801561237b5750601054600d54115b1561242057600f54431115612392575f600e819055505b601854600e54106123d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123cf90613b33565b60405180910390fd5b6123f56123f0846123eb846014546128b7565b6128b7565b6128cf565b6123fd612bdf565b600e5f81548092919061240f9061399f565b919050555043600f819055506124e3565b601760159054906101000a900460ff16158015612483575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b801561249b5750601760169054906101000a900460ff165b80156124a8575060135481115b80156124b75750601054600d54115b156124e2576124d96124d4846124cf846014546128b7565b6128b7565b6128cf565b6124e1612bdf565b5b5b505b5f8111156125e45761253d8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612d0c90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125db9190612fb4565b60405180910390a35b6126348260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612d6990919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506126d761268b8284612d6990919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612d0c90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61277a8486612d6990919063ffffffff16565b6040516127879190612fb4565b60405180910390a350505050565b5f8383111582906127dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d39190612e83565b60405180910390fd5b505f83856127ea9190613b51565b9050809150509392505050565b5f808303612807575f9050612868565b5f828461281491906133ae565b90508284826128239190613bb1565b14612863576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285a90613c51565b60405180910390fd5b809150505b92915050565b5f6128af83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612db2565b905092915050565b5f8183116128c557826128c7565b815b905092915050565b6001601760156101000a81548160ff0219169083151502179055505f811161292c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292390613cb9565b60405180910390fd5b5f600367ffffffffffffffff81111561294857612947613cd7565b5b6040519080825280602002602001820160405280156129765781602001602082028036833780820191505090505b50905030815f8151811061298d5761298c613d04565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a31573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a55919061346b565b81600181518110612a6957612a68613d04565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050731bf56759e95d9e85b6927161f6f8dbc4568642bc81600281518110612acc57612acb613d04565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612b323060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611a51565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d795835f8430426040518663ffffffff1660e01b8152600401612b94959493929190613de8565b5f604051808303815f87803b158015612bab575f80fd5b505af1158015612bbd573d5f803e3d5ffd5b50505050505f601760156101000a81548160ff02191690831515021790555050565b5f731bf56759e95d9e85b6927161f6f8dbc4568642bc73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612c2d91906130e0565b602060405180830381865afa158015612c48573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c6c9190613e40565b90505f811115612d0957731bf56759e95d9e85b6927161f6f8dbc4568642bc73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61dead836040518363ffffffff1660e01b8152600401612cc79291906135c2565b6020604051808303815f875af1158015612ce3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d0791906135fd565b505b50565b5f808284612d1a9190613a4e565b905083811015612d5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d5690613eb5565b60405180910390fd5b8091505092915050565b5f612daa83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612795565b905092915050565b5f8083118290612df8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612def9190612e83565b60405180910390fd5b505f8385612e069190613bb1565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612e5582612e13565b612e5f8185612e1d565b9350612e6f818560208601612e2d565b612e7881612e3b565b840191505092915050565b5f6020820190508181035f830152612e9b8184612e4b565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612ed082612ea7565b9050919050565b612ee081612ec6565b8114612eea575f80fd5b50565b5f81359050612efb81612ed7565b92915050565b5f819050919050565b612f1381612f01565b8114612f1d575f80fd5b50565b5f81359050612f2e81612f0a565b92915050565b5f8060408385031215612f4a57612f49612ea3565b5b5f612f5785828601612eed565b9250506020612f6885828601612f20565b9150509250929050565b5f8115159050919050565b612f8681612f72565b82525050565b5f602082019050612f9f5f830184612f7d565b92915050565b612fae81612f01565b82525050565b5f602082019050612fc75f830184612fa5565b92915050565b612fd681612f72565b8114612fe0575f80fd5b50565b5f81359050612ff181612fcd565b92915050565b5f6020828403121561300c5761300b612ea3565b5b5f61301984828501612fe3565b91505092915050565b5f805f6060848603121561303957613038612ea3565b5b5f61304686828701612eed565b935050602061305786828701612eed565b925050604061306886828701612f20565b9150509250925092565b5f60ff82169050919050565b61308781613072565b82525050565b5f6020820190506130a05f83018461307e565b92915050565b5f602082840312156130bb576130ba612ea3565b5b5f6130c884828501612f20565b91505092915050565b6130da81612ec6565b82525050565b5f6020820190506130f35f8301846130d1565b92915050565b5f6020828403121561310e5761310d612ea3565b5b5f61311b84828501612eed565b91505092915050565b5f806040838503121561313a57613139612ea3565b5b5f61314785828601612eed565b925050602061315885828601612eed565b9150509250929050565b5f806040838503121561317857613177612ea3565b5b5f61318585828601612fe3565b925050602061319685828601612f20565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6131d4602083612e1d565b91506131df826131a0565b602082019050919050565b5f6020820190508181035f830152613201816131c8565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561328a5780860481111561326657613265613208565b5b60018516156132755780820291505b808102905061328385613235565b945061324a565b94509492505050565b5f826132a2576001905061335d565b816132af575f905061335d565b81600181146132c557600281146132cf576132fe565b600191505061335d565b60ff8411156132e1576132e0613208565b5b8360020a9150848211156132f8576132f7613208565b5b5061335d565b5060208310610133831016604e8410600b84101617156133335782820a90508381111561332e5761332d613208565b5b61335d565b6133408484846001613241565b9250905081840481111561335757613356613208565b5b81810290505b9392505050565b5f61336e82612f01565b915061337983613072565b92506133a67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613293565b905092915050565b5f6133b882612f01565b91506133c383612f01565b92508282026133d181612f01565b915082820484148315176133e8576133e7613208565b5b5092915050565b7f74726164696e6720616c7265616479206f70656e0000000000000000000000005f82015250565b5f613423601483612e1d565b915061342e826133ef565b602082019050919050565b5f6020820190508181035f83015261345081613417565b9050919050565b5f8151905061346581612ed7565b92915050565b5f602082840312156134805761347f612ea3565b5b5f61348d84828501613457565b91505092915050565b5f6040820190506134a95f8301856130d1565b6134b660208301846130d1565b9392505050565b5f819050919050565b5f819050919050565b5f6134e96134e46134df846134bd565b6134c6565b612f01565b9050919050565b6134f9816134cf565b82525050565b5f60c0820190506135125f8301896130d1565b61351f6020830188612fa5565b61352c60408301876134f0565b61353960608301866134f0565b61354660808301856130d1565b61355360a0830184612fa5565b979650505050505050565b5f8151905061356c81612f0a565b92915050565b5f805f6060848603121561358957613588612ea3565b5b5f6135968682870161355e565b93505060206135a78682870161355e565b92505060406135b88682870161355e565b9150509250925092565b5f6040820190506135d55f8301856130d1565b6135e26020830184612fa5565b9392505050565b5f815190506135f781612fcd565b92915050565b5f6020828403121561361257613611612ea3565b5b5f61361f848285016135e9565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613682602683612e1d565b915061368d82613628565b604082019050919050565b5f6020820190508181035f8301526136af81613676565b9050919050565b5f6136d06136cb6136c684612ea7565b6134c6565b612ea7565b9050919050565b5f6136e1826136b6565b9050919050565b5f6136f2826136d7565b9050919050565b613702816136e8565b82525050565b5f60408201905061371b5f8301856136f9565b6137286020830184612fa5565b9392505050565b7f45524332303a20617070726f76652066726f6d207a65726f00000000000000005f82015250565b5f613763601883612e1d565b915061376e8261372f565b602082019050919050565b5f6020820190508181035f83015261379081613757565b9050919050565b7f45524332303a20617070726f766520746f207a65726f000000000000000000005f82015250565b5f6137cb601683612e1d565b91506137d682613797565b602082019050919050565b5f6020820190508181035f8301526137f8816137bf565b9050919050565b7f45524332303a2066726f6d207a65726f206164647265737300000000000000005f82015250565b5f613833601883612e1d565b915061383e826137ff565b602082019050919050565b5f6020820190508181035f83015261386081613827565b9050919050565b7f45524332303a20746f207a65726f2061646472657373000000000000000000005f82015250565b5f61389b601683612e1d565b91506138a682613867565b602082019050919050565b5f6020820190508181035f8301526138c88161388f565b9050919050565b7f5472616e73666572206d757374206265203e20300000000000000000000000005f82015250565b5f613903601483612e1d565b915061390e826138cf565b602082019050919050565b5f6020820190508181035f830152613930816138f7565b9050919050565b7f457863656564732062757973206f6e2074686520666972737420626c6f636b2e5f82015250565b5f61396b602083612e1d565b915061397682613937565b602082019050919050565b5f6020820190508181035f8301526139988161395f565b9050919050565b5f6139a982612f01565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036139db576139da613208565b5b600182019050919050565b7f45786365656473205f6d61785478416d6f756e740000000000000000000000005f82015250565b5f613a1a601483612e1d565b9150613a25826139e6565b602082019050919050565b5f6020820190508181035f830152613a4781613a0e565b9050919050565b5f613a5882612f01565b9150613a6383612f01565b9250828201905080821115613a7b57613a7a613208565b5b92915050565b7f45786365656473206d617857616c6c657453697a6500000000000000000000005f82015250565b5f613ab5601583612e1d565b9150613ac082613a81565b602082019050919050565b5f6020820190508181035f830152613ae281613aa9565b9050919050565b7f43412062616c616e63652073656c6c206c696d697400000000000000000000005f82015250565b5f613b1d601583612e1d565b9150613b2882613ae9565b602082019050919050565b5f6020820190508181035f830152613b4a81613b11565b9050919050565b5f613b5b82612f01565b9150613b6683612f01565b9250828203905081811115613b7e57613b7d613208565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613bbb82612f01565b9150613bc683612f01565b925082613bd657613bd5613b84565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613c3b602183612e1d565b9150613c4682613be1565b604082019050919050565b5f6020820190508181035f830152613c6881613c2f565b9050919050565b7f546f6b656e20616d6f756e74206d757374206265203e203000000000000000005f82015250565b5f613ca3601883612e1d565b9150613cae82613c6f565b602082019050919050565b5f6020820190508181035f830152613cd081613c97565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613d6381612ec6565b82525050565b5f613d748383613d5a565b60208301905092915050565b5f602082019050919050565b5f613d9682613d31565b613da08185613d3b565b9350613dab83613d4b565b805f5b83811015613ddb578151613dc28882613d69565b9750613dcd83613d80565b925050600181019050613dae565b5085935050505092915050565b5f60a082019050613dfb5f830188612fa5565b613e0860208301876134f0565b8181036040830152613e1a8186613d8c565b9050613e2960608301856130d1565b613e366080830184612fa5565b9695505050505050565b5f60208284031215613e5557613e54612ea3565b5b5f613e628482850161355e565b91505092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613e9f601b83612e1d565b9150613eaa82613e6b565b602082019050919050565b5f6020820190508181035f830152613ecc81613e93565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212201b4415df949fb1e6c4d790e3413dc853cbd9dd9bd238282b56302066ebacb4df64736f6c63430008190033
Deployed Bytecode Sourcemap
12193:12344:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23206:165;;;;;;;;;;;;;:::i;:::-;;15200:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16019:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14054:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15471:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22769:110;;;;;;;;;;;;;:::i;:::-;;22622:93;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16186:401;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15382:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22528:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14293:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17005:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12378:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15572:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10690:148;;;;;;;;;;;;;:::i;:::-;;14496:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13834:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23444:1053;;;;;;;;;;;;;:::i;:::-;;10480:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13898:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23042:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15289:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15697:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13988:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14528:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15870:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22379;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10844:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12797:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22887:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23206:165;10615:12;:10;:12::i;:::-;10605:22;;:6;;;;;;;;;;:22;;;10597:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13611:1:::1;13666:2;:13;;;;:::i;:::-;13654:9;:25;;;;:::i;:::-;23263:12;:22;;;;13611:1;13666:2;:13;;;;:::i;:::-;13654:9;:25;;;;:::i;:::-;23296:14;:24;;;;23336:27;13611:1;13666:2;:13;;;;:::i;:::-;13654:9;:25;;;;:::i;:::-;23336:27;;;;;;:::i;:::-;;;;;;;;23206:165::o:0;15200:83::-;15237:13;15270:5;;;;;;;;;;;;;;;;;15263:12;;15200:83;:::o;16019:161::-;16094:4;16111:39;16120:12;:10;:12::i;:::-;16134:7;16143:6;16111:8;:39::i;:::-;16168:4;16161:11;;16019:161;;;;:::o;14054:53::-;;;;:::o;15471:95::-;15524:7;13611:1;13666:2;:13;;;;:::i;:::-;13654:9;:25;;;;:::i;:::-;15544:14;;15471:95;:::o;22769:110::-;10615:12;:10;:12::i;:::-;10605:22;;:6;;;;;;;;;;:22;;;10597:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22828:10:::1;;;;;;;;;;;22820:28;;:51;22849:21;22820:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;22769:110::o:0;22622:93::-;10615:12;:10;:12::i;:::-;10605:22;;:6;;;;;;;;;;:22;;;10597:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22700:7:::1;22688:9;;:19;;;;;;;;;;;;;;;;;;22622:93:::0;:::o;16186:401::-;16320:4;16337:36;16347:6;16355:9;16366:6;16337:9;:36::i;:::-;16384:173;16407:6;16429:12;:10;:12::i;:::-;16457:89;16495:6;16457:89;;;;;;;;;;;;;;;;;:11;:19;16469:6;16457:19;;;;;;;;;;;;;;;:33;16477:12;:10;:12::i;:::-;16457:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;16384:8;:173::i;:::-;16575:4;16568:11;;16186:401;;;;;:::o;15382:83::-;15423:5;13611:1;15441:16;;15382:83;:::o;22528:88::-;10615:12;:10;:12::i;:::-;10605:22;;:6;;;;;;;;;;:22;;;10597:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22602:6:::1;22593;:15;;;;22528:88:::0;:::o;14293:28::-;;;;;;;;;;;;;:::o;17005:96::-;10615:12;:10;:12::i;:::-;10605:22;;:6;;;;;;;;;;:22;;;10597:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17089:4:::1;17070:10;:16;17081:4;17070:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;17005:96:::0;:::o;12378:78::-;12414:42;12378:78;:::o;15572:119::-;15638:7;15665:9;:18;15675:7;15665:18;;;;;;;;;;;;;;;;15658:25;;15572:119;;;:::o;10690:148::-;10615:12;:10;:12::i;:::-;10605:22;;:6;;;;;;;;;;:22;;;10597:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10797:1:::1;10760:40;;10781:6;::::0;::::1;;;;;;;;10760:40;;;;;;;;;;;;10828:1;10811:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;10690:148::o:0;14496:25::-;;;;:::o;13834:57::-;;;;:::o;23444:1053::-;10615:12;:10;:12::i;:::-;10605:22;;:6;;;;;;;;;;:22;;;10597:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23510:11:::1;;;;;;;;;;;23509:12;23501:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;23608:42;23557:15;;:130;;;;;;;;;;;;;;;;;;23700:58;23717:4;23732:15;;;;;;;;;;;13611:1;13666:2;:13;;;;:::i;:::-;13654:9;:25;;;;:::i;:::-;23700:8;:58::i;:::-;23803:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23785:69;;;23863:4;23870:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23785:108;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23769:13;;:124;;;;;;;;;;;;;;;;;;23943:4;23906:10;:34;23925:13;;;;;;;;;;;23906:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;23992:4;23958:7;:31;23974:13;;;;;;;;;;;23958:31;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;24088:15;;;;;;;;;;;:31;;;24127:21;24172:4;24192:24;24210:4;24192:9;:24::i;:::-;24231:1;24247::::0;24263:7:::1;:5;:7::i;:::-;24285:15;24088:223;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;24331:13;;;;;;;;;;;24324:29;;;24362:15;;;;;;;;;;;24380:14;24324:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24420:4;24406:11;;:18;;;;;;;;;;;;;;;;;;24449:4;24435:11;;:18;;;;;;;;;;;;;;;;;;24477:12;24464:10;:25;;;;23444:1053::o:0;10480:79::-;10518:7;10545:6;;;;;;;;;;;10538:13;;10480:79;:::o;13898:57::-;;;;:::o;23042:116::-;10615:12;:10;:12::i;:::-;10605:22;;:6;;;;;;;;;;:22;;;10597:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23137:12:::1;23116:10;;:34;;;;;;;;;;;;;;;;;;23042:116:::0;:::o;15289:87::-;15328:13;15361:7;;;;;;;;;;;;;;;;;15354:14;;15289:87;:::o;15697:167::-;15775:4;15792:42;15802:12;:10;:12::i;:::-;15816:9;15827:6;15792:9;:42::i;:::-;15852:4;15845:11;;15697:167;;;;:::o;13988:59::-;;;;:::o;14528:28::-;;;;;;;;;;;;;:::o;15870:143::-;15951:7;15978:11;:18;15990:5;15978:18;;;;;;;;;;;;;;;:27;15997:7;15978:27;;;;;;;;;;;;;;;;15971:34;;15870:143;;;;:::o;22379:::-;10615:12;:10;:12::i;:::-;10605:22;;:6;;;;;;;;;;:22;;;10597:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22476:7:::1;22462:11;;:21;;;;;;;;;;;;;;;;;;22508:6;22494:11;:20;;;;22379:143:::0;;:::o;10844:244::-;10615:12;:10;:12::i;:::-;10605:22;;:6;;;;;;;;;;:22;;;10597:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10953:1:::1;10933:22;;:8;:22;;::::0;10925:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;11043:8;11014:38;;11035:6;::::0;::::1;;;;;;;;11014:38;;;;;;;;;;;;11072:8;11063:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;10844:244:::0;:::o;12797:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;22887:147::-;10615:12;:10;:12::i;:::-;10605:22;;:6;;;;;;;;;;:22;;;10597:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22985:10:::1;22978:27;;;23006:10;;;;;;;;;;;23018:7;22978:48;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22887:147:::0;;:::o;8233:98::-;8286:7;8313:10;8306:17;;8233:98;:::o;16620:311::-;16730:1;16713:19;;:5;:19;;;16705:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;16799:1;16780:21;;:7;:21;;;16772:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;16869:6;16839:11;:18;16851:5;16839:18;;;;;;;;;;;;;;;:27;16858:7;16839:27;;;;;;;;;;;;;;;:36;;;;16907:7;16891:32;;16900:5;16891:32;;;16916:6;16891:32;;;;;;:::i;:::-;;;;;;;;16620:311;;;:::o;17179:3586::-;17283:1;17267:18;;:4;:18;;;17259:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;17347:1;17333:16;;:2;:16;;;17325:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;17404:1;17395:6;:10;17387:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;17443:17;17540:7;:5;:7::i;:::-;17532:15;;:4;:15;;;;:32;;;;;17557:7;:5;:7::i;:::-;17551:13;;:2;:13;;;;17532:32;17528:2808;;;17632:82;17710:3;17632:73;17656:15;;17644:9;;:27;17643:61;;17690:14;;17643:61;;;17675:12;;17643:61;17632:6;:10;;:73;;;;:::i;:::-;:77;;:82;;;;:::i;:::-;17620:94;;17795:10;;17779:12;:26;17776:186;;17861:2;17833:11;:25;17845:12;17833:25;;;;;;;;;;;;:30;17825:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;17919:11;:25;17931:12;17919:25;;;;;;;;;;;;:27;;;;;;;;;:::i;:::-;;;;;;17776:186;18002:10;:16;18013:4;18002:16;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;18036:15;;;;;;;;;;;18022:30;;:2;:30;;;;18002:50;:66;;;;;18057:7;:11;18065:2;18057:11;;;;;;;;;;;;;;;;;;;;;;;;;18056:12;18002:66;17998:285;;;18107:12;;18097:6;:22;;18089:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;18197:14;;18187:6;18171:13;18181:2;18171:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;18163:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;18256:9;;:11;;;;;;;;;:::i;:::-;;;;;;17998:285;18336:10;:14;18347:2;18336:14;;;;;;;;;;;;;;;;;;;;;;;;;18335:15;:31;;;;;18355:7;:11;18363:2;18355:11;;;;;;;;;;;;;;;;;;;;;;;;;18354:12;18335:31;18331:146;;;18421:14;;18411:6;18395:13;18405:2;18395:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;18387:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;18331:146;18518:10;:14;18529:2;18518:14;;;;;;;;;;;;;;;;;;;;;;;;;:39;;;;;18552:4;18536:21;;:4;:21;;;;18518:39;18514:177;;;18590:85;18671:3;18590:76;18614:16;;18602:9;;:28;18601:64;;18650:15;;18601:64;;;18634:13;;18601:64;18590:6;:10;;:76;;;;:::i;:::-;:80;;:85;;;;:::i;:::-;18578:97;;18514:177;18770:10;:16;18781:4;18770:16;;;;;;;;;;;;;;;;;;;;;;;;;18769:17;:36;;;;;18791:10;:14;18802:2;18791:14;;;;;;;;;;;;;;;;;;;;;;;;;18790:15;18769:36;:61;;;;;18825:4;18809:21;;:4;:21;;;;18769:61;18765:115;;;18863:1;18851:13;;18765:115;18991:28;19022:24;19040:4;19022:9;:24::i;:::-;18991:55;;19083:9;;;;;;;;;;;:38;;;;;19115:6;;;;;;;;;;;19114:7;19083:38;:74;;;;;19143:10;:14;19154:2;19143:14;;;;;;;;;;;;;;;;;;;;;;;;;19083:74;:107;;;;;19179:11;;;;;;;;;;;19083:107;:169;;;;;19235:17;;19212:20;:40;19083:169;:221;;;;;19286:18;;19274:9;;:30;19083:221;19061:1264;;;19432:13;;19417:12;:28;19413:90;;;19482:1;19470:9;:13;;;;19413:90;19541:6;;19529:9;;:18;19521:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;19628:71;19645:53;19650:6;19658:39;19663:20;19685:11;;19658:4;:39::i;:::-;19645:4;:53::i;:::-;19628:16;:71::i;:::-;19789:23;:21;:23::i;:::-;19833:9;;:11;;;;;;;;;:::i;:::-;;;;;;19879:12;19863:13;:28;;;;19061:1264;;;19950:6;;;;;;;;;;;19949:7;:43;;;;;19978:10;:14;19989:2;19978:14;;;;;;;;;;;;;;;;;;;;;;;;;19949:43;:76;;;;;20014:11;;;;;;;;;;;19949:76;:138;;;;;20070:17;;20047:20;:40;19949:138;:190;;;;;20121:18;;20109:9;;:30;19949:190;19927:398;;;20196:71;20213:53;20218:6;20226:39;20231:20;20253:11;;20226:4;:39::i;:::-;20213:4;:53::i;:::-;20196:16;:71::i;:::-;20286:23;:21;:23::i;:::-;19927:398;19061:1264;17566:2770;17528:2808;20384:1;20372:9;:13;20369:170;;;20428:39;20457:9;20428;:24;20446:4;20428:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;20401:9;:24;20419:4;20401:24;;;;;;;;;;;;;;;:66;;;;20510:4;20487:40;;20496:4;20487:40;;;20517:9;20487:40;;;;;;:::i;:::-;;;;;;;;20369:170;20604:27;20624:6;20604:9;:15;20614:4;20604:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;20586:9;:15;20596:4;20586:15;;;;;;;;;;;;;;;:45;;;;20660:40;20678:21;20689:9;20678:6;:10;;:21;;;;:::i;:::-;20660:9;:13;20670:2;20660:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;20642:9;:13;20652:2;20642:13;;;;;;;;;;;;;;;:58;;;;20731:2;20716:41;;20725:4;20716:41;;;20735:21;20746:9;20735:6;:10;;:21;;;;:::i;:::-;20716:41;;;;;;:::i;:::-;;;;;;;;17248:3517;17179:3586;;;:::o;9404:190::-;9490:7;9523:1;9518;:6;;9526:12;9510:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;9550:9;9566:1;9562;:5;;;;:::i;:::-;9550:17;;9585:1;9578:8;;;9404:190;;;;;:::o;9600:224::-;9658:7;9687:1;9682;:6;9678:25;;9699:1;9692:8;;;;9678:25;9713:9;9729:1;9725;:5;;;;:::i;:::-;9713:17;;9758:1;9753;9749;:5;;;;:::i;:::-;:10;9741:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;9815:1;9808:8;;;9600:224;;;;;:::o;9830:132::-;9888:7;9915:39;9919:1;9922;9915:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;9908:46;;9830:132;;;;:::o;20853:106::-;20911:7;20941:1;20937;:5;20936:15;;20950:1;20936:15;;;20946:1;20936:15;20929:22;;20853:106;;;;:::o;21050:777::-;14658:4;14649:6;;:13;;;;;;;;;;;;;;;;;;21150:1:::1;21136:11;:15;21128:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;21193:21;21231:1;21217:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21193:40;;21262:4;21244;21249:1;21244:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;21309:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21299:4;21304:1;21299:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;12414:42;21367:4;21372:1;21367:7;;;;;;;;:::i;:::-;;;;;;;:19;;;;;;;;;::::0;::::1;21424:62;21441:4;21456:15;;;;;;;;;;;21474:11;21424:8;:62::i;:::-;21590:15;;;;;;;;;;;:69;;;21674:11;21700:1;21716:4;21743;21793:15;21590:229;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21117:710;14694:5:::0;14685:6;;:14;;;;;;;;;;;;;;;;;;21050:777;:::o;21920:369::-;21972:18;12414:42;21993:27;;;22029:4;21993:42;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21972:63;;22062:1;22049:10;:14;22046:236;;;12414:42;22139:26;;;22184:42;22245:10;22139:131;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22046:236;21961:328;21920:369::o;9077:179::-;9135:7;9155:9;9171:1;9167;:5;;;;:::i;:::-;9155:17;;9196:1;9191;:6;;9183:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;9247:1;9240:8;;;9077:179;;;;:::o;9262:136::-;9320:7;9347:43;9351:1;9354;9347:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;9340:50;;9262:136;;;;:::o;9968:189::-;10054:7;10086:1;10082;:5;10089:12;10074:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;10113:9;10129:1;10125;:5;;;;:::i;:::-;10113:17;;10148:1;10141:8;;;9968:189;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1323:117::-;1432:1;1429;1422:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:118::-;3426:24;3444:5;3426:24;:::i;:::-;3421:3;3414:37;3339:118;;:::o;3463:222::-;3556:4;3594:2;3583:9;3579:18;3571:26;;3607:71;3675:1;3664:9;3660:17;3651:6;3607:71;:::i;:::-;3463:222;;;;:::o;3691:116::-;3761:21;3776:5;3761:21;:::i;:::-;3754:5;3751:32;3741:60;;3797:1;3794;3787:12;3741:60;3691:116;:::o;3813:133::-;3856:5;3894:6;3881:20;3872:29;;3910:30;3934:5;3910:30;:::i;:::-;3813:133;;;;:::o;3952:323::-;4008:6;4057:2;4045:9;4036:7;4032:23;4028:32;4025:119;;;4063:79;;:::i;:::-;4025:119;4183:1;4208:50;4250:7;4241:6;4230:9;4226:22;4208:50;:::i;:::-;4198:60;;4154:114;3952:323;;;;:::o;4281:619::-;4358:6;4366;4374;4423:2;4411:9;4402:7;4398:23;4394:32;4391:119;;;4429:79;;:::i;:::-;4391:119;4549:1;4574:53;4619:7;4610:6;4599:9;4595:22;4574:53;:::i;:::-;4564:63;;4520:117;4676:2;4702:53;4747:7;4738:6;4727:9;4723:22;4702:53;:::i;:::-;4692:63;;4647:118;4804:2;4830:53;4875:7;4866:6;4855:9;4851:22;4830:53;:::i;:::-;4820:63;;4775:118;4281:619;;;;;:::o;4906:86::-;4941:7;4981:4;4974:5;4970:16;4959:27;;4906:86;;;:::o;4998:112::-;5081:22;5097:5;5081:22;:::i;:::-;5076:3;5069:35;4998:112;;:::o;5116:214::-;5205:4;5243:2;5232:9;5228:18;5220:26;;5256:67;5320:1;5309:9;5305:17;5296:6;5256:67;:::i;:::-;5116:214;;;;:::o;5336:329::-;5395:6;5444:2;5432:9;5423:7;5419:23;5415:32;5412:119;;;5450:79;;:::i;:::-;5412:119;5570:1;5595:53;5640:7;5631:6;5620:9;5616:22;5595:53;:::i;:::-;5585:63;;5541:117;5336:329;;;;:::o;5671:118::-;5758:24;5776:5;5758:24;:::i;:::-;5753:3;5746:37;5671:118;;:::o;5795:222::-;5888:4;5926:2;5915:9;5911:18;5903:26;;5939:71;6007:1;5996:9;5992:17;5983:6;5939:71;:::i;:::-;5795:222;;;;:::o;6023:329::-;6082:6;6131:2;6119:9;6110:7;6106:23;6102:32;6099:119;;;6137:79;;:::i;:::-;6099:119;6257:1;6282:53;6327:7;6318:6;6307:9;6303:22;6282:53;:::i;:::-;6272:63;;6228:117;6023:329;;;;:::o;6358:474::-;6426:6;6434;6483:2;6471:9;6462:7;6458:23;6454:32;6451:119;;;6489:79;;:::i;:::-;6451:119;6609:1;6634:53;6679:7;6670:6;6659:9;6655:22;6634:53;:::i;:::-;6624:63;;6580:117;6736:2;6762:53;6807:7;6798:6;6787:9;6783:22;6762:53;:::i;:::-;6752:63;;6707:118;6358:474;;;;;:::o;6838:468::-;6903:6;6911;6960:2;6948:9;6939:7;6935:23;6931:32;6928:119;;;6966:79;;:::i;:::-;6928:119;7086:1;7111:50;7153:7;7144:6;7133:9;7129:22;7111:50;:::i;:::-;7101:60;;7057:114;7210:2;7236:53;7281:7;7272:6;7261:9;7257:22;7236:53;:::i;:::-;7226:63;;7181:118;6838:468;;;;;:::o;7312:182::-;7452:34;7448:1;7440:6;7436:14;7429:58;7312:182;:::o;7500:366::-;7642:3;7663:67;7727:2;7722:3;7663:67;:::i;:::-;7656:74;;7739:93;7828:3;7739:93;:::i;:::-;7857:2;7852:3;7848:12;7841:19;;7500:366;;;:::o;7872:419::-;8038:4;8076:2;8065:9;8061:18;8053:26;;8125:9;8119:4;8115:20;8111:1;8100:9;8096:17;8089:47;8153:131;8279:4;8153:131;:::i;:::-;8145:139;;7872:419;;;:::o;8297:180::-;8345:77;8342:1;8335:88;8442:4;8439:1;8432:15;8466:4;8463:1;8456:15;8483:102;8525:8;8572:5;8569:1;8565:13;8544:34;;8483:102;;;:::o;8591:848::-;8652:5;8659:4;8683:6;8674:15;;8707:5;8698:14;;8721:712;8742:1;8732:8;8729:15;8721:712;;;8837:4;8832:3;8828:14;8822:4;8819:24;8816:50;;;8846:18;;:::i;:::-;8816:50;8896:1;8886:8;8882:16;8879:451;;;9311:4;9304:5;9300:16;9291:25;;8879:451;9361:4;9355;9351:15;9343:23;;9391:32;9414:8;9391:32;:::i;:::-;9379:44;;8721:712;;;8591:848;;;;;;;:::o;9445:1073::-;9499:5;9690:8;9680:40;;9711:1;9702:10;;9713:5;;9680:40;9739:4;9729:36;;9756:1;9747:10;;9758:5;;9729:36;9825:4;9873:1;9868:27;;;;9909:1;9904:191;;;;9818:277;;9868:27;9886:1;9877:10;;9888:5;;;9904:191;9949:3;9939:8;9936:17;9933:43;;;9956:18;;:::i;:::-;9933:43;10005:8;10002:1;9998:16;9989:25;;10040:3;10033:5;10030:14;10027:40;;;10047:18;;:::i;:::-;10027:40;10080:5;;;9818:277;;10204:2;10194:8;10191:16;10185:3;10179:4;10176:13;10172:36;10154:2;10144:8;10141:16;10136:2;10130:4;10127:12;10123:35;10107:111;10104:246;;;10260:8;10254:4;10250:19;10241:28;;10295:3;10288:5;10285:14;10282:40;;;10302:18;;:::i;:::-;10282:40;10335:5;;10104:246;10375:42;10413:3;10403:8;10397:4;10394:1;10375:42;:::i;:::-;10360:57;;;;10449:4;10444:3;10440:14;10433:5;10430:25;10427:51;;;10458:18;;:::i;:::-;10427:51;10507:4;10500:5;10496:16;10487:25;;9445:1073;;;;;;:::o;10524:281::-;10582:5;10606:23;10624:4;10606:23;:::i;:::-;10598:31;;10650:25;10666:8;10650:25;:::i;:::-;10638:37;;10694:104;10731:66;10721:8;10715:4;10694:104;:::i;:::-;10685:113;;10524:281;;;;:::o;10811:410::-;10851:7;10874:20;10892:1;10874:20;:::i;:::-;10869:25;;10908:20;10926:1;10908:20;:::i;:::-;10903:25;;10963:1;10960;10956:9;10985:30;11003:11;10985:30;:::i;:::-;10974:41;;11164:1;11155:7;11151:15;11148:1;11145:22;11125:1;11118:9;11098:83;11075:139;;11194:18;;:::i;:::-;11075:139;10859:362;10811:410;;;;:::o;11227:170::-;11367:22;11363:1;11355:6;11351:14;11344:46;11227:170;:::o;11403:366::-;11545:3;11566:67;11630:2;11625:3;11566:67;:::i;:::-;11559:74;;11642:93;11731:3;11642:93;:::i;:::-;11760:2;11755:3;11751:12;11744:19;;11403:366;;;:::o;11775:419::-;11941:4;11979:2;11968:9;11964:18;11956:26;;12028:9;12022:4;12018:20;12014:1;12003:9;11999:17;11992:47;12056:131;12182:4;12056:131;:::i;:::-;12048:139;;11775:419;;;:::o;12200:143::-;12257:5;12288:6;12282:13;12273:22;;12304:33;12331:5;12304:33;:::i;:::-;12200:143;;;;:::o;12349:351::-;12419:6;12468:2;12456:9;12447:7;12443:23;12439:32;12436:119;;;12474:79;;:::i;:::-;12436:119;12594:1;12619:64;12675:7;12666:6;12655:9;12651:22;12619:64;:::i;:::-;12609:74;;12565:128;12349:351;;;;:::o;12706:332::-;12827:4;12865:2;12854:9;12850:18;12842:26;;12878:71;12946:1;12935:9;12931:17;12922:6;12878:71;:::i;:::-;12959:72;13027:2;13016:9;13012:18;13003:6;12959:72;:::i;:::-;12706:332;;;;;:::o;13044:85::-;13089:7;13118:5;13107:16;;13044:85;;;:::o;13135:60::-;13163:3;13184:5;13177:12;;13135:60;;;:::o;13201:158::-;13259:9;13292:61;13310:42;13319:32;13345:5;13319:32;:::i;:::-;13310:42;:::i;:::-;13292:61;:::i;:::-;13279:74;;13201:158;;;:::o;13365:147::-;13460:45;13499:5;13460:45;:::i;:::-;13455:3;13448:58;13365:147;;:::o;13518:807::-;13767:4;13805:3;13794:9;13790:19;13782:27;;13819:71;13887:1;13876:9;13872:17;13863:6;13819:71;:::i;:::-;13900:72;13968:2;13957:9;13953:18;13944:6;13900:72;:::i;:::-;13982:80;14058:2;14047:9;14043:18;14034:6;13982:80;:::i;:::-;14072;14148:2;14137:9;14133:18;14124:6;14072:80;:::i;:::-;14162:73;14230:3;14219:9;14215:19;14206:6;14162:73;:::i;:::-;14245;14313:3;14302:9;14298:19;14289:6;14245:73;:::i;:::-;13518:807;;;;;;;;;:::o;14331:143::-;14388:5;14419:6;14413:13;14404:22;;14435:33;14462:5;14435:33;:::i;:::-;14331:143;;;;:::o;14480:663::-;14568:6;14576;14584;14633:2;14621:9;14612:7;14608:23;14604:32;14601:119;;;14639:79;;:::i;:::-;14601:119;14759:1;14784:64;14840:7;14831:6;14820:9;14816:22;14784:64;:::i;:::-;14774:74;;14730:128;14897:2;14923:64;14979:7;14970:6;14959:9;14955:22;14923:64;:::i;:::-;14913:74;;14868:129;15036:2;15062:64;15118:7;15109:6;15098:9;15094:22;15062:64;:::i;:::-;15052:74;;15007:129;14480:663;;;;;:::o;15149:332::-;15270:4;15308:2;15297:9;15293:18;15285:26;;15321:71;15389:1;15378:9;15374:17;15365:6;15321:71;:::i;:::-;15402:72;15470:2;15459:9;15455:18;15446:6;15402:72;:::i;:::-;15149:332;;;;;:::o;15487:137::-;15541:5;15572:6;15566:13;15557:22;;15588:30;15612:5;15588:30;:::i;:::-;15487:137;;;;:::o;15630:345::-;15697:6;15746:2;15734:9;15725:7;15721:23;15717:32;15714:119;;;15752:79;;:::i;:::-;15714:119;15872:1;15897:61;15950:7;15941:6;15930:9;15926:22;15897:61;:::i;:::-;15887:71;;15843:125;15630:345;;;;:::o;15981:225::-;16121:34;16117:1;16109:6;16105:14;16098:58;16190:8;16185:2;16177:6;16173:15;16166:33;15981:225;:::o;16212:366::-;16354:3;16375:67;16439:2;16434:3;16375:67;:::i;:::-;16368:74;;16451:93;16540:3;16451:93;:::i;:::-;16569:2;16564:3;16560:12;16553:19;;16212:366;;;:::o;16584:419::-;16750:4;16788:2;16777:9;16773:18;16765:26;;16837:9;16831:4;16827:20;16823:1;16812:9;16808:17;16801:47;16865:131;16991:4;16865:131;:::i;:::-;16857:139;;16584:419;;;:::o;17009:142::-;17059:9;17092:53;17110:34;17119:24;17137:5;17119:24;:::i;:::-;17110:34;:::i;:::-;17092:53;:::i;:::-;17079:66;;17009:142;;;:::o;17157:126::-;17207:9;17240:37;17271:5;17240:37;:::i;:::-;17227:50;;17157:126;;;:::o;17289:134::-;17347:9;17380:37;17411:5;17380:37;:::i;:::-;17367:50;;17289:134;;;:::o;17429:147::-;17524:45;17563:5;17524:45;:::i;:::-;17519:3;17512:58;17429:147;;:::o;17582:348::-;17711:4;17749:2;17738:9;17734:18;17726:26;;17762:79;17838:1;17827:9;17823:17;17814:6;17762:79;:::i;:::-;17851:72;17919:2;17908:9;17904:18;17895:6;17851:72;:::i;:::-;17582:348;;;;;:::o;17936:174::-;18076:26;18072:1;18064:6;18060:14;18053:50;17936:174;:::o;18116:366::-;18258:3;18279:67;18343:2;18338:3;18279:67;:::i;:::-;18272:74;;18355:93;18444:3;18355:93;:::i;:::-;18473:2;18468:3;18464:12;18457:19;;18116:366;;;:::o;18488:419::-;18654:4;18692:2;18681:9;18677:18;18669:26;;18741:9;18735:4;18731:20;18727:1;18716:9;18712:17;18705:47;18769:131;18895:4;18769:131;:::i;:::-;18761:139;;18488:419;;;:::o;18913:172::-;19053:24;19049:1;19041:6;19037:14;19030:48;18913:172;:::o;19091:366::-;19233:3;19254:67;19318:2;19313:3;19254:67;:::i;:::-;19247:74;;19330:93;19419:3;19330:93;:::i;:::-;19448:2;19443:3;19439:12;19432:19;;19091:366;;;:::o;19463:419::-;19629:4;19667:2;19656:9;19652:18;19644:26;;19716:9;19710:4;19706:20;19702:1;19691:9;19687:17;19680:47;19744:131;19870:4;19744:131;:::i;:::-;19736:139;;19463:419;;;:::o;19888:174::-;20028:26;20024:1;20016:6;20012:14;20005:50;19888:174;:::o;20068:366::-;20210:3;20231:67;20295:2;20290:3;20231:67;:::i;:::-;20224:74;;20307:93;20396:3;20307:93;:::i;:::-;20425:2;20420:3;20416:12;20409:19;;20068:366;;;:::o;20440:419::-;20606:4;20644:2;20633:9;20629:18;20621:26;;20693:9;20687:4;20683:20;20679:1;20668:9;20664:17;20657:47;20721:131;20847:4;20721:131;:::i;:::-;20713:139;;20440:419;;;:::o;20865:172::-;21005:24;21001:1;20993:6;20989:14;20982:48;20865:172;:::o;21043:366::-;21185:3;21206:67;21270:2;21265:3;21206:67;:::i;:::-;21199:74;;21282:93;21371:3;21282:93;:::i;:::-;21400:2;21395:3;21391:12;21384:19;;21043:366;;;:::o;21415:419::-;21581:4;21619:2;21608:9;21604:18;21596:26;;21668:9;21662:4;21658:20;21654:1;21643:9;21639:17;21632:47;21696:131;21822:4;21696:131;:::i;:::-;21688:139;;21415:419;;;:::o;21840:170::-;21980:22;21976:1;21968:6;21964:14;21957:46;21840:170;:::o;22016:366::-;22158:3;22179:67;22243:2;22238:3;22179:67;:::i;:::-;22172:74;;22255:93;22344:3;22255:93;:::i;:::-;22373:2;22368:3;22364:12;22357:19;;22016:366;;;:::o;22388:419::-;22554:4;22592:2;22581:9;22577:18;22569:26;;22641:9;22635:4;22631:20;22627:1;22616:9;22612:17;22605:47;22669:131;22795:4;22669:131;:::i;:::-;22661:139;;22388:419;;;:::o;22813:182::-;22953:34;22949:1;22941:6;22937:14;22930:58;22813:182;:::o;23001:366::-;23143:3;23164:67;23228:2;23223:3;23164:67;:::i;:::-;23157:74;;23240:93;23329:3;23240:93;:::i;:::-;23358:2;23353:3;23349:12;23342:19;;23001:366;;;:::o;23373:419::-;23539:4;23577:2;23566:9;23562:18;23554:26;;23626:9;23620:4;23616:20;23612:1;23601:9;23597:17;23590:47;23654:131;23780:4;23654:131;:::i;:::-;23646:139;;23373:419;;;:::o;23798:233::-;23837:3;23860:24;23878:5;23860:24;:::i;:::-;23851:33;;23906:66;23899:5;23896:77;23893:103;;23976:18;;:::i;:::-;23893:103;24023:1;24016:5;24012:13;24005:20;;23798:233;;;:::o;24037:170::-;24177:22;24173:1;24165:6;24161:14;24154:46;24037:170;:::o;24213:366::-;24355:3;24376:67;24440:2;24435:3;24376:67;:::i;:::-;24369:74;;24452:93;24541:3;24452:93;:::i;:::-;24570:2;24565:3;24561:12;24554:19;;24213:366;;;:::o;24585:419::-;24751:4;24789:2;24778:9;24774:18;24766:26;;24838:9;24832:4;24828:20;24824:1;24813:9;24809:17;24802:47;24866:131;24992:4;24866:131;:::i;:::-;24858:139;;24585:419;;;:::o;25010:191::-;25050:3;25069:20;25087:1;25069:20;:::i;:::-;25064:25;;25103:20;25121:1;25103:20;:::i;:::-;25098:25;;25146:1;25143;25139:9;25132:16;;25167:3;25164:1;25161:10;25158:36;;;25174:18;;:::i;:::-;25158:36;25010:191;;;;:::o;25207:171::-;25347:23;25343:1;25335:6;25331:14;25324:47;25207:171;:::o;25384:366::-;25526:3;25547:67;25611:2;25606:3;25547:67;:::i;:::-;25540:74;;25623:93;25712:3;25623:93;:::i;:::-;25741:2;25736:3;25732:12;25725:19;;25384:366;;;:::o;25756:419::-;25922:4;25960:2;25949:9;25945:18;25937:26;;26009:9;26003:4;25999:20;25995:1;25984:9;25980:17;25973:47;26037:131;26163:4;26037:131;:::i;:::-;26029:139;;25756:419;;;:::o;26181:171::-;26321:23;26317:1;26309:6;26305:14;26298:47;26181:171;:::o;26358:366::-;26500:3;26521:67;26585:2;26580:3;26521:67;:::i;:::-;26514:74;;26597:93;26686:3;26597:93;:::i;:::-;26715:2;26710:3;26706:12;26699:19;;26358:366;;;:::o;26730:419::-;26896:4;26934:2;26923:9;26919:18;26911:26;;26983:9;26977:4;26973:20;26969:1;26958:9;26954:17;26947:47;27011:131;27137:4;27011:131;:::i;:::-;27003:139;;26730:419;;;:::o;27155:194::-;27195:4;27215:20;27233:1;27215:20;:::i;:::-;27210:25;;27249:20;27267:1;27249:20;:::i;:::-;27244:25;;27293:1;27290;27286:9;27278:17;;27317:1;27311:4;27308:11;27305:37;;;27322:18;;:::i;:::-;27305:37;27155:194;;;;:::o;27355:180::-;27403:77;27400:1;27393:88;27500:4;27497:1;27490:15;27524:4;27521:1;27514:15;27541:185;27581:1;27598:20;27616:1;27598:20;:::i;:::-;27593:25;;27632:20;27650:1;27632:20;:::i;:::-;27627:25;;27671:1;27661:35;;27676:18;;:::i;:::-;27661:35;27718:1;27715;27711:9;27706:14;;27541:185;;;;:::o;27732:220::-;27872:34;27868:1;27860:6;27856:14;27849:58;27941:3;27936:2;27928:6;27924:15;27917:28;27732:220;:::o;27958:366::-;28100:3;28121:67;28185:2;28180:3;28121:67;:::i;:::-;28114:74;;28197:93;28286:3;28197:93;:::i;:::-;28315:2;28310:3;28306:12;28299:19;;27958:366;;;:::o;28330:419::-;28496:4;28534:2;28523:9;28519:18;28511:26;;28583:9;28577:4;28573:20;28569:1;28558:9;28554:17;28547:47;28611:131;28737:4;28611:131;:::i;:::-;28603:139;;28330:419;;;:::o;28755:174::-;28895:26;28891:1;28883:6;28879:14;28872:50;28755:174;:::o;28935:366::-;29077:3;29098:67;29162:2;29157:3;29098:67;:::i;:::-;29091:74;;29174:93;29263:3;29174:93;:::i;:::-;29292:2;29287:3;29283:12;29276:19;;28935:366;;;:::o;29307:419::-;29473:4;29511:2;29500:9;29496:18;29488:26;;29560:9;29554:4;29550:20;29546:1;29535:9;29531:17;29524:47;29588:131;29714:4;29588:131;:::i;:::-;29580:139;;29307:419;;;:::o;29732:180::-;29780:77;29777:1;29770:88;29877:4;29874:1;29867:15;29901:4;29898:1;29891:15;29918:180;29966:77;29963:1;29956:88;30063:4;30060:1;30053:15;30087:4;30084:1;30077:15;30104:114;30171:6;30205:5;30199:12;30189:22;;30104:114;;;:::o;30224:184::-;30323:11;30357:6;30352:3;30345:19;30397:4;30392:3;30388:14;30373:29;;30224:184;;;;:::o;30414:132::-;30481:4;30504:3;30496:11;;30534:4;30529:3;30525:14;30517:22;;30414:132;;;:::o;30552:108::-;30629:24;30647:5;30629:24;:::i;:::-;30624:3;30617:37;30552:108;;:::o;30666:179::-;30735:10;30756:46;30798:3;30790:6;30756:46;:::i;:::-;30834:4;30829:3;30825:14;30811:28;;30666:179;;;;:::o;30851:113::-;30921:4;30953;30948:3;30944:14;30936:22;;30851:113;;;:::o;31000:732::-;31119:3;31148:54;31196:5;31148:54;:::i;:::-;31218:86;31297:6;31292:3;31218:86;:::i;:::-;31211:93;;31328:56;31378:5;31328:56;:::i;:::-;31407:7;31438:1;31423:284;31448:6;31445:1;31442:13;31423:284;;;31524:6;31518:13;31551:63;31610:3;31595:13;31551:63;:::i;:::-;31544:70;;31637:60;31690:6;31637:60;:::i;:::-;31627:70;;31483:224;31470:1;31467;31463:9;31458:14;;31423:284;;;31427:14;31723:3;31716:10;;31124:608;;;31000:732;;;;:::o;31738:831::-;32001:4;32039:3;32028:9;32024:19;32016:27;;32053:71;32121:1;32110:9;32106:17;32097:6;32053:71;:::i;:::-;32134:80;32210:2;32199:9;32195:18;32186:6;32134:80;:::i;:::-;32261:9;32255:4;32251:20;32246:2;32235:9;32231:18;32224:48;32289:108;32392:4;32383:6;32289:108;:::i;:::-;32281:116;;32407:72;32475:2;32464:9;32460:18;32451:6;32407:72;:::i;:::-;32489:73;32557:3;32546:9;32542:19;32533:6;32489:73;:::i;:::-;31738:831;;;;;;;;:::o;32575:351::-;32645:6;32694:2;32682:9;32673:7;32669:23;32665:32;32662:119;;;32700:79;;:::i;:::-;32662:119;32820:1;32845:64;32901:7;32892:6;32881:9;32877:22;32845:64;:::i;:::-;32835:74;;32791:128;32575:351;;;;:::o;32932:177::-;33072:29;33068:1;33060:6;33056:14;33049:53;32932:177;:::o;33115:366::-;33257:3;33278:67;33342:2;33337:3;33278:67;:::i;:::-;33271:74;;33354:93;33443:3;33354:93;:::i;:::-;33472:2;33467:3;33463:12;33456:19;;33115:366;;;:::o;33487:419::-;33653:4;33691:2;33680:9;33676:18;33668:26;;33740:9;33734:4;33730:20;33726:1;33715:9;33711:17;33704:47;33768:131;33894:4;33768:131;:::i;:::-;33760:139;;33487:419;;;:::o
Swarm Source
ipfs://1b4415df949fb1e6c4d790e3413dc853cbd9dd9bd238282b56302066ebacb4df
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.