ERC-20
Overview
Max Total Supply
10,000,000,000 MOTO
Holders
342
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
1,897,467.18150213812160518 MOTOValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
MIYAMOTO
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-05-23 */ /** @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@&#@@@@@@@@@@@@@@@5??5@@@@@@@@@@@@@@@#&@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@&JP&@@@@@@@@@@@@@G??P@@@@@@@@@@@@@&PJ&@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@B?JP&@@@@@@@@@@@@YY@@@@@@@@@@@@&GJ?B@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@G??Y#@@@@@@@&GPPJJPPG&@@@@@@@#Y?JB@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@BYJYG&##BBB5JJJJJJJJ5BBB##&GYJYB@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@#YYY5YYYYYYYYYYYYYYYYYYYY5YY5#@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@&PYYPB###&&&&&&&&&&&&&&###BPYYP&@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@BYY5&@@@@@@@@@@@@@@@@@@@@@@&5YYB@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@GYY5@@@@@@#&@@@@@@@@@@##@@@@5YYG@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@&P55YY5@@@&BGYYB@@@@@@&BB5YG@@@PYY55P&@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@BYYYYY5@@@&P55P#@@@@@@@G55P#@@@PYYYYYB@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@&P55YY5@@@@@@@@@&#####@@@@@@@@@5YY55P&@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@#5YYB@@@@@@@@#P555B@@@@@@@@BYY5#@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@#555G&@@@@@@@@@@@@@@@@@@&G555#@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@&G555PGBBBBBBBBBBBBBBGP555G&@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@##&&B55YYYYYYYYYYYYYYYY55B&&##@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@B55PP555G#&B555555G&#G555PP55B@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@&#BPYY5P&@@@&555555#@@@&P5YYPB#&@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@&BP5Y5BBGP5#@@@&555555#@@@#5PGBB5Y5PB&@@@@@@@@@@@@@@@@ @@@@@@@@@@@&BP5YY5PB&@@@&&@@@#555555B@@@&&@@@&BP5YY5PB&@@@@@@@@@@@@@ @@@@@@@@@@@GYY55G#@@@@@@&GPP5555555555PPB@@@@@@@#G55YYG@@@@@@@@@@@@@ @@@@@@@@@@@@#B#@@@@@@@@@GY55555555555555Y#@@@@@@@@@#B#@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@&GP5PP5P555555PPB@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ███ ███ ██ ██ ██ █████ ███ ███ ██████ ████████ ██████ ████ ████ ██ ██ ██ ██ ██ ████ ████ ██ ██ ██ ██ ██ ██ ████ ██ ██ ████ ███████ ██ ████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██████ ██ ██████ */ // SPDX-License-Identifier: Unlicensed pragma solidity 0.8.19; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { using SafeMath for uint256; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5,05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } /** * @dev Moves tokens `amount` from `sender` to `recipient`. * * This is internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be to transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } library SafeMathInt { int256 private constant MIN_INT256 = int256(1) << 255; int256 private constant MAX_INT256 = ~(int256(1) << 255); /** * @dev Multiplies two int256 variables and fails on overflow. */ function mul(int256 a, int256 b) internal pure returns (int256) { int256 c = a * b; // Detect overflow when multiplying MIN_INT256 with -1 require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256)); require((b == 0) || (c / b == a)); return c; } /** * @dev Division of two int256 variables and fails on overflow. */ function div(int256 a, int256 b) internal pure returns (int256) { // Prevent overflow when dividing MIN_INT256 by -1 require(b != -1 || a != MIN_INT256); // Solidity already throws when dividing by 0. return a / b; } /** * @dev Subtracts two int256 variables and fails on overflow. */ function sub(int256 a, int256 b) internal pure returns (int256) { int256 c = a - b; require((b >= 0 && c <= a) || (b < 0 && c > a)); return c; } /** * @dev Adds two int256 variables and fails on overflow. */ function add(int256 a, int256 b) internal pure returns (int256) { int256 c = a + b; require((b >= 0 && c >= a) || (b < 0 && c < a)); return c; } /** * @dev Converts to absolute value, and fails on overflow. */ function abs(int256 a) internal pure returns (int256) { require(a != MIN_INT256); return a < 0 ? -a : a; } function toUint256Safe(int256 a) internal pure returns (uint256) { require(a >= 0); return uint256(a); } } library SafeMathUint { function toInt256Safe(uint256 a) internal pure returns (int256) { int256 b = int256(a); require(b >= 0); return b; } } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract MIYAMOTO is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; bool private swapping; address public marketingWallet; uint256 public maxTransactionAmount; uint256 public swapTokensAtAmount; uint256 public maxWallet; bool public tradingActive = false; bool public swapEnabled = false; uint256 public buyTotalFees; uint256 public buyMarketingFee; uint256 public buyLiquidityFee; uint256 public buyBurnFee; uint256 public sellTotalFees; uint256 public sellMarketingFee; uint256 public sellLiquidityFee; uint256 public sellBurnFee; uint256 public tokensForMarketing; uint256 public tokensForLiquidity; // block number of opened trading uint256 launchedAt; /******************/ // exclude from fees and max transaction amount mapping (address => bool) private _isExcludedFromFees; mapping (address => bool) public _isExcludedMaxTransactionAmount; // store addresses that a automatic market maker pairs. Any transfer *to* these addresses // could be subject to a maximum transfer amount mapping (address => bool) public automatedMarketMakerPairs; event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event marketingWalletUpdated(address indexed newWallet, address indexed oldWallet); event burnWalletUpdated(address indexed newWallet, address indexed oldWallet); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); event TransferForeignToken(address token, uint256 amount); constructor() ERC20("MIYAMOTO", "MOTO") { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); excludeFromMaxTransaction(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); excludeFromMaxTransaction(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); uint256 _buyMarketingFee = 5; uint256 _buyLiquidityFee = 0; uint256 _buyBurnFee = 0; uint256 _sellMarketingFee = 5; uint256 _sellLiquidityFee = 0; uint256 _sellBurnFee = 0; uint256 totalSupply = 10000000000 * 1e18; maxTransactionAmount = totalSupply * 1000 / 1000; // 100% maxTransactionAmountTxn maxWallet = totalSupply * 1000 / 1000; // 100% maxWallet swapTokensAtAmount = totalSupply * 10 / 10000; // 0.1% swap wallet buyMarketingFee = _buyMarketingFee; buyLiquidityFee = _buyLiquidityFee; buyBurnFee = _buyBurnFee; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyBurnFee; sellMarketingFee = _sellMarketingFee; sellLiquidityFee = _sellLiquidityFee; sellBurnFee = _sellBurnFee; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellBurnFee; marketingWallet = address(0x7bCA62a260Dcb3CDDF1C753055Ea26D390743f03); // set as marketing wallet // exclude from paying fees or having max transaction amount excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); /* _mint is an internal function in ERC20.sol that is only called here, and CANNOT be called ever again */ _mint(msg.sender, totalSupply); } receive() external payable { } // once enabled, can never be turned off function enableTrading() external onlyOwner { tradingActive = true; swapEnabled = true; launchedAt = block.number; } // change the minimum amount of tokens to sell from fees function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool){ require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply."); require(newAmount <= totalSupply() * 5 / 1000, "Swap amount cannot be higher than 0.5% total supply."); swapTokensAtAmount = newAmount; return true; } function updateMaxTxnAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 5 / 1000)/1e18, "Cannot set maxTransactionAmount lower than 0.5%"); maxTransactionAmount = newNum * (10**18); } function updateMaxWalletAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 5 / 1000)/1e18, "Cannot set maxWallet lower than 0.5%"); maxWallet = newNum * (10**18); } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } // only use to disable contract sales if absolutely necessary (emergency use only) function updateSwapEnabled(bool enabled) external onlyOwner(){ swapEnabled = enabled; } function updateFees(uint256 _marketingFeeBuy, uint256 _liquidityFeeBuy, uint256 _burnFeeBuy, uint256 _marketingFeeSell, uint256 _liquidityFeeSell, uint256 _burnFeeSell) external onlyOwner { buyMarketingFee = _marketingFeeBuy; buyLiquidityFee = _liquidityFeeBuy; buyBurnFee = _burnFeeBuy; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyBurnFee; sellMarketingFee = _marketingFeeSell; sellLiquidityFee = _liquidityFeeSell; sellBurnFee = _burnFeeSell; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellBurnFee; require(buyTotalFees <= 25, "Must keep fees at 25% or less"); require(sellTotalFees <= 25, "Must keep fees at 25% or less"); } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs"); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function updateMarketingWallet(address newMarketingWallet) external onlyOwner { emit marketingWalletUpdated(newMarketingWallet, marketingWallet); marketingWallet = newMarketingWallet; } function transferForeignToken(address _token, address _to) external onlyOwner returns (bool _sent) { require(_token != address(this), "Can't withdraw native tokens"); uint256 _contractBalance = IERC20(_token).balanceOf(address(this)); _sent = IERC20(_token).transfer(_to, _contractBalance); emit TransferForeignToken(_token, _contractBalance); } function isExcludedFromFees(address account) public view returns(bool) { return _isExcludedFromFees[account]; } event BoughtEarly(address indexed sniper); function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); if(amount == 0) { super._transfer(from, to, 0); return; } if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping ){ if(!tradingActive){ require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active."); } //when buy if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) { require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount."); require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } //when sell else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) { require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount."); } else if(!_isExcludedMaxTransactionAmount[to]){ require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; uint256 tokensForBurn; if( canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { swapping = true; swapBack(); swapping = false; } bool takeFee = !swapping; // if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; // only take fees on buys/sells, do not take on wallet transfers if(takeFee){ // on sell if (automatedMarketMakerPairs[to] && sellTotalFees > 0){ fees = amount.mul(sellTotalFees).div(100); tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees; tokensForMarketing += fees * sellMarketingFee / sellTotalFees; tokensForBurn += fees * sellBurnFee / sellTotalFees; } // on buy else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount.mul(buyTotalFees).div(100); tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees; tokensForMarketing += fees * buyMarketingFee / buyTotalFees; tokensForBurn += fees * buyBurnFee / buyTotalFees; } if(fees > 0){ super._transfer(from, address(this), fees); } if(tokensForBurn > 0) { super._transfer(address(this), address(0xdead), tokensForBurn); } amount -= fees;} super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable address(0xdead), block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing; bool success; if(contractBalance == 0 || totalTokensToSwap == 0) {return;} if(contractBalance > swapTokensAtAmount * 20){ contractBalance = swapTokensAtAmount * 20; } // Halve the amount of liquidity tokens uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2; uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens); uint256 initialETHBalance = address(this).balance; swapTokensForEth(amountToSwapForETH); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(totalTokensToSwap); uint256 ethForLiquidity = ethBalance - ethForMarketing; tokensForLiquidity = 0; tokensForMarketing = 0; if(liquidityTokens > 0 && ethForLiquidity > 0){ addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity); } (success,) = address(marketingWallet).call{value: address(this).balance}(""); } }
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":true,"internalType":"address","name":"sniper","type":"address"}],"name":"BoughtEarly","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","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":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"burnWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferForeignToken","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFeeBuy","type":"uint256"},{"internalType":"uint256","name":"_liquidityFeeBuy","type":"uint256"},{"internalType":"uint256","name":"_burnFeeBuy","type":"uint256"},{"internalType":"uint256","name":"_marketingFeeSell","type":"uint256"},{"internalType":"uint256","name":"_liquidityFeeSell","type":"uint256"},{"internalType":"uint256","name":"_burnFeeSell","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040526000600a60006101000a81548160ff0219169083151502179055506000600a60016101000a81548160ff0219169083151502179055503480156200004757600080fd5b506040518060400160405280600881526020017f4d4959414d4f544f0000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4d4f544f000000000000000000000000000000000000000000000000000000008152508160039081620000c5919062000d5e565b508060049081620000d7919062000d5e565b5050506000620000ec620005bb60201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001b7816001620005c360201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000237573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025d919062000eaf565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002c5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002eb919062000eaf565b6040518363ffffffff1660e01b81526004016200030a92919062000ef2565b6020604051808303816000875af11580156200032a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000350919062000eaf565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200039860a0516001620005c360201b60201c565b620003ad60a0516001620006c060201b60201c565b60006005905060008060006005905060008060006b204fce5e3e2502611000000090506103e88082620003e1919062000f4e565b620003ed919062000fc8565b6007819055506103e8808262000404919062000f4e565b62000410919062000fc8565b600981905550612710600a8262000428919062000f4e565b62000434919062000fc8565b60088190555086600c8190555085600d8190555084600e81905550600e54600d54600c5462000464919062001000565b62000470919062001000565b600b81905550836010819055508260118190555081601281905550601254601154601054620004a0919062001000565b620004ac919062001000565b600f81905550737bca62a260dcb3cddf1c753055ea26d390743f03600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005296200051b6200076160201b60201c565b60016200078b60201b60201c565b6200053c3060016200078b60201b60201c565b6200055161dead60016200078b60201b60201c565b62000573620005656200076160201b60201c565b6001620005c360201b60201c565b62000586306001620005c360201b60201c565b6200059b61dead6001620005c360201b60201c565b620005ad3382620008d860201b60201c565b50505050505050506200120a565b600033905090565b620005d3620005bb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000665576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200065c906200109c565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200079b620005bb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200082d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000824906200109c565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620008cc9190620010db565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200094a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009419062001148565b60405180910390fd5b6200095e6000838362000a7c60201b60201c565b620009758160025462000a8160201b90919060201c565b600281905550620009ce816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000a8160201b90919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000a7091906200117b565b60405180910390a35050565b505050565b600080828462000a92919062001000565b90508381101562000ada576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ad190620011e8565b60405180910390fd5b8091505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000b6657607f821691505b60208210810362000b7c5762000b7b62000b1e565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000be67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000ba7565b62000bf2868362000ba7565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000c3f62000c3962000c338462000c0a565b62000c14565b62000c0a565b9050919050565b6000819050919050565b62000c5b8362000c1e565b62000c7362000c6a8262000c46565b84845462000bb4565b825550505050565b600090565b62000c8a62000c7b565b62000c9781848462000c50565b505050565b5b8181101562000cbf5762000cb360008262000c80565b60018101905062000c9d565b5050565b601f82111562000d0e5762000cd88162000b82565b62000ce38462000b97565b8101602085101562000cf3578190505b62000d0b62000d028562000b97565b83018262000c9c565b50505b505050565b600082821c905092915050565b600062000d336000198460080262000d13565b1980831691505092915050565b600062000d4e838362000d20565b9150826002028217905092915050565b62000d698262000ae4565b67ffffffffffffffff81111562000d855762000d8462000aef565b5b62000d91825462000b4d565b62000d9e82828562000cc3565b600060209050601f83116001811462000dd6576000841562000dc1578287015190505b62000dcd858262000d40565b86555062000e3d565b601f19841662000de68662000b82565b60005b8281101562000e105784890151825560018201915060208501945060208101905062000de9565b8683101562000e30578489015162000e2c601f89168262000d20565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000e778262000e4a565b9050919050565b62000e898162000e6a565b811462000e9557600080fd5b50565b60008151905062000ea98162000e7e565b92915050565b60006020828403121562000ec85762000ec762000e45565b5b600062000ed88482850162000e98565b91505092915050565b62000eec8162000e6a565b82525050565b600060408201905062000f09600083018562000ee1565b62000f18602083018462000ee1565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000f5b8262000c0a565b915062000f688362000c0a565b925082820262000f788162000c0a565b9150828204841483151762000f925762000f9162000f1f565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000fd58262000c0a565b915062000fe28362000c0a565b92508262000ff55762000ff462000f99565b5b828204905092915050565b60006200100d8262000c0a565b91506200101a8362000c0a565b925082820190508082111562001035576200103462000f1f565b5b92915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000620010846020836200103b565b915062001091826200104c565b602082019050919050565b60006020820190508181036000830152620010b78162001075565b9050919050565b60008115159050919050565b620010d581620010be565b82525050565b6000602082019050620010f26000830184620010ca565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001130601f836200103b565b91506200113d82620010f8565b602082019050919050565b60006020820190508181036000830152620011638162001121565b9050919050565b620011758162000c0a565b82525050565b60006020820190506200119260008301846200116a565b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000620011d0601b836200103b565b9150620011dd8262001198565b602082019050919050565b600060208201905081810360008301526200120381620011c1565b9050919050565b60805160a051614e286200125a60003960008181610eb001526118c4015260008181610bb70152818161366d0152818161374e015281816137750152818161381101526138380152614e286000f3fe6080604052600436106102815760003560e01c8063921369131161014f578063c0246668116100c1578063e2f456051161007a578063e2f45605146109e5578063e71dc3f514610a10578063f11a24d314610a3b578063f2fde38b14610a66578063f637434214610a8f578063f8b45b0514610aba57610288565b8063c0246668146108c3578063c18bc195146108ec578063c8c8ebe414610915578063d257b34f14610940578063d85ba0631461097d578063dd62ed3e146109a857610288565b8063a457c2d711610113578063a457c2d71461078d578063a9059cbb146107ca578063aacebbe314610807578063adb873bd14610830578063b62496f51461085b578063bbc0c7421461089857610288565b806392136913146106bc578063924de9b7146106e757806395d89b4114610710578063992c58e41461073b5780639a7a23d61461076457610288565b806349bd5a5e116101f35780637571336a116101ac5780637571336a146105be57806375f0a874146105e75780637bce5a04146106125780638366e79a1461063d5780638a8c523c1461067a5780638da5cb5b1461069157610288565b806349bd5a5e146104ac5780634fbee193146104d75780636a486a8e146105145780636ddd17131461053f57806370a082311461056a578063715018a6146105a757610288565b80631a8145bb116102455780631a8145bb146103885780631f3fed8f146103b3578063203e727e146103de57806323b872dd14610407578063313ce56714610444578063395093511461046f57610288565b806306fdde031461028d578063095ea7b3146102b857806310d5de53146102f55780631694505e1461033257806318160ddd1461035d57610288565b3661028857005b600080fd5b34801561029957600080fd5b506102a2610ae5565b6040516102af91906139da565b60405180910390f35b3480156102c457600080fd5b506102df60048036038101906102da9190613a95565b610b77565b6040516102ec9190613af0565b60405180910390f35b34801561030157600080fd5b5061031c60048036038101906103179190613b0b565b610b95565b6040516103299190613af0565b60405180910390f35b34801561033e57600080fd5b50610347610bb5565b6040516103549190613b97565b60405180910390f35b34801561036957600080fd5b50610372610bd9565b60405161037f9190613bc1565b60405180910390f35b34801561039457600080fd5b5061039d610be3565b6040516103aa9190613bc1565b60405180910390f35b3480156103bf57600080fd5b506103c8610be9565b6040516103d59190613bc1565b60405180910390f35b3480156103ea57600080fd5b5061040560048036038101906104009190613bdc565b610bef565b005b34801561041357600080fd5b5061042e60048036038101906104299190613c09565b610d19565b60405161043b9190613af0565b60405180910390f35b34801561045057600080fd5b50610459610df2565b6040516104669190613c78565b60405180910390f35b34801561047b57600080fd5b5061049660048036038101906104919190613a95565b610dfb565b6040516104a39190613af0565b60405180910390f35b3480156104b857600080fd5b506104c1610eae565b6040516104ce9190613ca2565b60405180910390f35b3480156104e357600080fd5b506104fe60048036038101906104f99190613b0b565b610ed2565b60405161050b9190613af0565b60405180910390f35b34801561052057600080fd5b50610529610f28565b6040516105369190613bc1565b60405180910390f35b34801561054b57600080fd5b50610554610f2e565b6040516105619190613af0565b60405180910390f35b34801561057657600080fd5b50610591600480360381019061058c9190613b0b565b610f41565b60405161059e9190613bc1565b60405180910390f35b3480156105b357600080fd5b506105bc610f89565b005b3480156105ca57600080fd5b506105e560048036038101906105e09190613ce9565b6110e1565b005b3480156105f357600080fd5b506105fc6111d3565b6040516106099190613ca2565b60405180910390f35b34801561061e57600080fd5b506106276111f9565b6040516106349190613bc1565b60405180910390f35b34801561064957600080fd5b50610664600480360381019061065f9190613d29565b6111ff565b6040516106719190613af0565b60405180910390f35b34801561068657600080fd5b5061068f611444565b005b34801561069d57600080fd5b506106a661151a565b6040516106b39190613ca2565b60405180910390f35b3480156106c857600080fd5b506106d1611544565b6040516106de9190613bc1565b60405180910390f35b3480156106f357600080fd5b5061070e60048036038101906107099190613d69565b61154a565b005b34801561071c57600080fd5b506107256115fe565b60405161073291906139da565b60405180910390f35b34801561074757600080fd5b50610762600480360381019061075d9190613d96565b611690565b005b34801561077057600080fd5b5061078b60048036038101906107869190613ce9565b61182b565b005b34801561079957600080fd5b506107b460048036038101906107af9190613a95565b61195e565b6040516107c19190613af0565b60405180910390f35b3480156107d657600080fd5b506107f160048036038101906107ec9190613a95565b611a2b565b6040516107fe9190613af0565b60405180910390f35b34801561081357600080fd5b5061082e60048036038101906108299190613b0b565b611a49565b005b34801561083c57600080fd5b50610845611ba0565b6040516108529190613bc1565b60405180910390f35b34801561086757600080fd5b50610882600480360381019061087d9190613b0b565b611ba6565b60405161088f9190613af0565b60405180910390f35b3480156108a457600080fd5b506108ad611bc6565b6040516108ba9190613af0565b60405180910390f35b3480156108cf57600080fd5b506108ea60048036038101906108e59190613ce9565b611bd9565b005b3480156108f857600080fd5b50610913600480360381019061090e9190613bdc565b611d19565b005b34801561092157600080fd5b5061092a611e43565b6040516109379190613bc1565b60405180910390f35b34801561094c57600080fd5b5061096760048036038101906109629190613bdc565b611e49565b6040516109749190613af0565b60405180910390f35b34801561098957600080fd5b50610992611fb9565b60405161099f9190613bc1565b60405180910390f35b3480156109b457600080fd5b506109cf60048036038101906109ca9190613d29565b611fbf565b6040516109dc9190613bc1565b60405180910390f35b3480156109f157600080fd5b506109fa612046565b604051610a079190613bc1565b60405180910390f35b348015610a1c57600080fd5b50610a2561204c565b604051610a329190613bc1565b60405180910390f35b348015610a4757600080fd5b50610a50612052565b604051610a5d9190613bc1565b60405180910390f35b348015610a7257600080fd5b50610a8d6004803603810190610a889190613b0b565b612058565b005b348015610a9b57600080fd5b50610aa461221e565b604051610ab19190613bc1565b60405180910390f35b348015610ac657600080fd5b50610acf612224565b604051610adc9190613bc1565b60405180910390f35b606060038054610af490613e52565b80601f0160208091040260200160405190810160405280929190818152602001828054610b2090613e52565b8015610b6d5780601f10610b4257610100808354040283529160200191610b6d565b820191906000526020600020905b815481529060010190602001808311610b5057829003601f168201915b5050505050905090565b6000610b8b610b8461222a565b8484612232565b6001905092915050565b60176020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b60145481565b60135481565b610bf761222a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7d90613ecf565b60405180910390fd5b670de0b6b3a76400006103e86005610c9c610bd9565b610ca69190613f1e565b610cb09190613f8f565b610cba9190613f8f565b811015610cfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf390614032565b60405180910390fd5b670de0b6b3a764000081610d109190613f1e565b60078190555050565b6000610d268484846123fb565b610de784610d3261222a565b610de285604051806060016040528060288152602001614da660289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d9861222a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612eb89092919063ffffffff16565b612232565b600190509392505050565b60006012905090565b6000610ea4610e0861222a565b84610e9f8560016000610e1961222a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f1c90919063ffffffff16565b612232565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600f5481565b600a60019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f9161222a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611020576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101790613ecf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6110e961222a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611178576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116f90613ecf565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c5481565b600061120961222a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611298576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128f90613ecf565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611306576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fd9061409e565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016113419190613ca2565b602060405180830381865afa15801561135e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138291906140d3565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b81526004016113bf929190614100565b6020604051808303816000875af11580156113de573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611402919061413e565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e4388482604051611435929190614100565b60405180910390a15092915050565b61144c61222a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d290613ecf565b60405180910390fd5b6001600a60006101000a81548160ff0219169083151502179055506001600a60016101000a81548160ff02191690831515021790555043601581905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60105481565b61155261222a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d890613ecf565b60405180910390fd5b80600a60016101000a81548160ff02191690831515021790555050565b60606004805461160d90613e52565b80601f016020809104026020016040519081016040528092919081815260200182805461163990613e52565b80156116865780601f1061165b57610100808354040283529160200191611686565b820191906000526020600020905b81548152906001019060200180831161166957829003601f168201915b5050505050905090565b61169861222a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611727576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171e90613ecf565b60405180910390fd5b85600c8190555084600d8190555083600e81905550600e54600d54600c5461174f919061416b565b611759919061416b565b600b81905550826010819055508160118190555080601281905550601254601154601054611787919061416b565b611791919061416b565b600f819055506019600b5411156117dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d4906141eb565b60405180910390fd5b6019600f541115611823576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181a906141eb565b60405180910390fd5b505050505050565b61183361222a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b990613ecf565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611950576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119479061427d565b60405180910390fd5b61195a8282612f7a565b5050565b6000611a2161196b61222a565b84611a1c85604051806060016040528060258152602001614dce602591396001600061199561222a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612eb89092919063ffffffff16565b612232565b6001905092915050565b6000611a3f611a3861222a565b84846123fb565b6001905092915050565b611a5161222a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ae0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad790613ecf565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60125481565b60186020528060005260406000206000915054906101000a900460ff1681565b600a60009054906101000a900460ff1681565b611be161222a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6790613ecf565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611d0d9190613af0565b60405180910390a25050565b611d2161222a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611db0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da790613ecf565b60405180910390fd5b670de0b6b3a76400006103e86005611dc6610bd9565b611dd09190613f1e565b611dda9190613f8f565b611de49190613f8f565b811015611e26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1d9061430f565b60405180910390fd5b670de0b6b3a764000081611e3a9190613f1e565b60098190555050565b60075481565b6000611e5361222a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ee2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed990613ecf565b60405180910390fd5b620186a06001611ef0610bd9565b611efa9190613f1e565b611f049190613f8f565b821015611f46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3d906143a1565b60405180910390fd5b6103e86005611f53610bd9565b611f5d9190613f1e565b611f679190613f8f565b821115611fa9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa090614433565b60405180910390fd5b8160088190555060019050919050565b600b5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60085481565b600e5481565b600d5481565b61206061222a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e690613ecf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361215e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612155906144c5565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60115481565b60095481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036122a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229890614557565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612310576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612307906145e9565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516123ee9190613bc1565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361246a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124619061467b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d09061470d565b60405180910390fd5b600081036124f2576124ed8383600061301b565b612eb3565b6124fa61151a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612568575061253861151a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125a15750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125db575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125f45750600560149054906101000a900460ff16155b156129d757600a60009054906101000a900460ff166126ee57601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806126ae5750601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6126ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126e490614779565b60405180910390fd5b5b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156127915750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612838576007548111156127db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d29061480b565b60405180910390fd5b6009546127e783610f41565b826127f2919061416b565b1115612833576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282a90614877565b60405180910390fd5b6129d6565b601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156128db5750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561292a57600754811115612925576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291c90614909565b60405180910390fd5b6129d5565b601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166129d45760095461298783610f41565b82612992919061416b565b11156129d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129ca90614877565b60405180910390fd5b5b5b5b5b60006129e230610f41565b9050600060085482101590506000818015612a095750600a60019054906101000a900460ff165b8015612a225750600560149054906101000a900460ff16155b8015612a785750601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612ace5750601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612b245750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b68576001600560146101000a81548160ff021916908315150217905550612b4c6132ae565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612c1e5750601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612c2857600090505b60008115612ea257601860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612c8b57506000600f54115b15612d4d57612cb86064612caa600f54896134bb90919063ffffffff16565b61353590919063ffffffff16565b9050600f5460115482612ccb9190613f1e565b612cd59190613f8f565b60146000828254612ce6919061416b565b92505081905550600f5460105482612cfe9190613f1e565b612d089190613f8f565b60136000828254612d19919061416b565b92505081905550600f5460125482612d319190613f1e565b612d3b9190613f8f565b83612d46919061416b565b9250612e67565b601860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612da857506000600b54115b15612e6657612dd56064612dc7600b54896134bb90919063ffffffff16565b61353590919063ffffffff16565b9050600b54600d5482612de89190613f1e565b612df29190613f8f565b60146000828254612e03919061416b565b92505081905550600b54600c5482612e1b9190613f1e565b612e259190613f8f565b60136000828254612e36919061416b565b92505081905550600b54600e5482612e4e9190613f1e565b612e589190613f8f565b83612e63919061416b565b92505b5b6000811115612e7c57612e7b88308361301b565b5b6000831115612e9357612e923061dead8561301b565b5b8086612e9f9190614929565b95505b612ead88888861301b565b50505050505b505050565b6000838311158290612f00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ef791906139da565b60405180910390fd5b5060008385612f0f9190614929565b9050809150509392505050565b6000808284612f2b919061416b565b905083811015612f70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f67906149a9565b60405180910390fd5b8091505092915050565b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361308a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130819061467b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036130f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130f09061470d565b60405180910390fd5b61310483838361357f565b61316f81604051806060016040528060268152602001614d80602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612eb89092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613202816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f1c90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516132a19190613bc1565b60405180910390a3505050565b60006132b930610f41565b905060006013546014546132cd919061416b565b90506000808314806132df5750600082145b156132ec575050506134b9565b60146008546132fb9190613f1e565b8311156133145760146008546133119190613f1e565b92505b6000600283601454866133279190613f1e565b6133319190613f8f565b61333b9190613f8f565b90506000613352828661358490919063ffffffff16565b90506000479050613362826135ce565b6000613377824761358490919063ffffffff16565b905060006133a287613394601354856134bb90919063ffffffff16565b61353590919063ffffffff16565b9050600081836133b29190614929565b9050600060148190555060006013819055506000861180156133d45750600081115b15613421576133e3868261380b565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618582601454604051613418939291906149c9565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161346790614a31565b60006040518083038185875af1925050503d80600081146134a4576040519150601f19603f3d011682016040523d82523d6000602084013e6134a9565b606091505b5050809750505050505050505050505b565b60008083036134cd576000905061352f565b600082846134db9190613f1e565b90508284826134ea9190613f8f565b1461352a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161352190614ab8565b60405180910390fd5b809150505b92915050565b600061357783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506138e7565b905092915050565b505050565b60006135c683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612eb8565b905092915050565b6000600267ffffffffffffffff8111156135eb576135ea614ad8565b5b6040519080825280602002602001820160405280156136195781602001602082028036833780820191505090505b509050308160008151811061363157613630614b07565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156136d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136fa9190614b4b565b8160018151811061370e5761370d614b07565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613773307f000000000000000000000000000000000000000000000000000000000000000084612232565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016137d5959493929190614c71565b600060405180830381600087803b1580156137ef57600080fd5b505af1158015613803573d6000803e3d6000fd5b505050505050565b613836307f000000000000000000000000000000000000000000000000000000000000000084612232565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b815260040161389d96959493929190614ccb565b60606040518083038185885af11580156138bb573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906138e09190614d2c565b5050505050565b6000808311829061392e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161392591906139da565b60405180910390fd5b506000838561393d9190613f8f565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613984578082015181840152602081019050613969565b60008484015250505050565b6000601f19601f8301169050919050565b60006139ac8261394a565b6139b68185613955565b93506139c6818560208601613966565b6139cf81613990565b840191505092915050565b600060208201905081810360008301526139f481846139a1565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613a2c82613a01565b9050919050565b613a3c81613a21565b8114613a4757600080fd5b50565b600081359050613a5981613a33565b92915050565b6000819050919050565b613a7281613a5f565b8114613a7d57600080fd5b50565b600081359050613a8f81613a69565b92915050565b60008060408385031215613aac57613aab6139fc565b5b6000613aba85828601613a4a565b9250506020613acb85828601613a80565b9150509250929050565b60008115159050919050565b613aea81613ad5565b82525050565b6000602082019050613b056000830184613ae1565b92915050565b600060208284031215613b2157613b206139fc565b5b6000613b2f84828501613a4a565b91505092915050565b6000819050919050565b6000613b5d613b58613b5384613a01565b613b38565b613a01565b9050919050565b6000613b6f82613b42565b9050919050565b6000613b8182613b64565b9050919050565b613b9181613b76565b82525050565b6000602082019050613bac6000830184613b88565b92915050565b613bbb81613a5f565b82525050565b6000602082019050613bd66000830184613bb2565b92915050565b600060208284031215613bf257613bf16139fc565b5b6000613c0084828501613a80565b91505092915050565b600080600060608486031215613c2257613c216139fc565b5b6000613c3086828701613a4a565b9350506020613c4186828701613a4a565b9250506040613c5286828701613a80565b9150509250925092565b600060ff82169050919050565b613c7281613c5c565b82525050565b6000602082019050613c8d6000830184613c69565b92915050565b613c9c81613a21565b82525050565b6000602082019050613cb76000830184613c93565b92915050565b613cc681613ad5565b8114613cd157600080fd5b50565b600081359050613ce381613cbd565b92915050565b60008060408385031215613d0057613cff6139fc565b5b6000613d0e85828601613a4a565b9250506020613d1f85828601613cd4565b9150509250929050565b60008060408385031215613d4057613d3f6139fc565b5b6000613d4e85828601613a4a565b9250506020613d5f85828601613a4a565b9150509250929050565b600060208284031215613d7f57613d7e6139fc565b5b6000613d8d84828501613cd4565b91505092915050565b60008060008060008060c08789031215613db357613db26139fc565b5b6000613dc189828a01613a80565b9650506020613dd289828a01613a80565b9550506040613de389828a01613a80565b9450506060613df489828a01613a80565b9350506080613e0589828a01613a80565b92505060a0613e1689828a01613a80565b9150509295509295509295565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613e6a57607f821691505b602082108103613e7d57613e7c613e23565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613eb9602083613955565b9150613ec482613e83565b602082019050919050565b60006020820190508181036000830152613ee881613eac565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613f2982613a5f565b9150613f3483613a5f565b9250828202613f4281613a5f565b91508282048414831517613f5957613f58613eef565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613f9a82613a5f565b9150613fa583613a5f565b925082613fb557613fb4613f60565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e35250000000000000000000000000000000000602082015250565b600061401c602f83613955565b915061402782613fc0565b604082019050919050565b6000602082019050818103600083015261404b8161400f565b9050919050565b7f43616e2774207769746864726177206e617469766520746f6b656e7300000000600082015250565b6000614088601c83613955565b915061409382614052565b602082019050919050565b600060208201905081810360008301526140b78161407b565b9050919050565b6000815190506140cd81613a69565b92915050565b6000602082840312156140e9576140e86139fc565b5b60006140f7848285016140be565b91505092915050565b60006040820190506141156000830185613c93565b6141226020830184613bb2565b9392505050565b60008151905061413881613cbd565b92915050565b600060208284031215614154576141536139fc565b5b600061416284828501614129565b91505092915050565b600061417682613a5f565b915061418183613a5f565b925082820190508082111561419957614198613eef565b5b92915050565b7f4d757374206b656570206665657320617420323525206f72206c657373000000600082015250565b60006141d5601d83613955565b91506141e08261419f565b602082019050919050565b60006020820190508181036000830152614204816141c8565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614267603983613955565b91506142728261420b565b604082019050919050565b600060208201905081810360008301526142968161425a565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b60006142f9602483613955565b91506143048261429d565b604082019050919050565b60006020820190508181036000830152614328816142ec565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b600061438b603583613955565b91506143968261432f565b604082019050919050565b600060208201905081810360008301526143ba8161437e565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b600061441d603483613955565b9150614428826143c1565b604082019050919050565b6000602082019050818103600083015261444c81614410565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006144af602683613955565b91506144ba82614453565b604082019050919050565b600060208201905081810360008301526144de816144a2565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614541602483613955565b915061454c826144e5565b604082019050919050565b6000602082019050818103600083015261457081614534565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006145d3602283613955565b91506145de82614577565b604082019050919050565b60006020820190508181036000830152614602816145c6565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614665602583613955565b915061467082614609565b604082019050919050565b6000602082019050818103600083015261469481614658565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006146f7602383613955565b91506147028261469b565b604082019050919050565b60006020820190508181036000830152614726816146ea565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614763601683613955565b915061476e8261472d565b602082019050919050565b6000602082019050818103600083015261479281614756565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006147f5603583613955565b915061480082614799565b604082019050919050565b60006020820190508181036000830152614824816147e8565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000614861601383613955565b915061486c8261482b565b602082019050919050565b6000602082019050818103600083015261489081614854565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b60006148f3603683613955565b91506148fe82614897565b604082019050919050565b60006020820190508181036000830152614922816148e6565b9050919050565b600061493482613a5f565b915061493f83613a5f565b925082820390508181111561495757614956613eef565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614993601b83613955565b915061499e8261495d565b602082019050919050565b600060208201905081810360008301526149c281614986565b9050919050565b60006060820190506149de6000830186613bb2565b6149eb6020830185613bb2565b6149f86040830184613bb2565b949350505050565b600081905092915050565b50565b6000614a1b600083614a00565b9150614a2682614a0b565b600082019050919050565b6000614a3c82614a0e565b9150819050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614aa2602183613955565b9150614aad82614a46565b604082019050919050565b60006020820190508181036000830152614ad181614a95565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050614b4581613a33565b92915050565b600060208284031215614b6157614b606139fc565b5b6000614b6f84828501614b36565b91505092915050565b6000819050919050565b6000614b9d614b98614b9384614b78565b613b38565b613a5f565b9050919050565b614bad81614b82565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614be881613a21565b82525050565b6000614bfa8383614bdf565b60208301905092915050565b6000602082019050919050565b6000614c1e82614bb3565b614c288185614bbe565b9350614c3383614bcf565b8060005b83811015614c64578151614c4b8882614bee565b9750614c5683614c06565b925050600181019050614c37565b5085935050505092915050565b600060a082019050614c866000830188613bb2565b614c936020830187614ba4565b8181036040830152614ca58186614c13565b9050614cb46060830185613c93565b614cc16080830184613bb2565b9695505050505050565b600060c082019050614ce06000830189613c93565b614ced6020830188613bb2565b614cfa6040830187614ba4565b614d076060830186614ba4565b614d146080830185613c93565b614d2160a0830184613bb2565b979650505050505050565b600080600060608486031215614d4557614d446139fc565b5b6000614d53868287016140be565b9350506020614d64868287016140be565b9250506040614d75868287016140be565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212206efe9222e95253ff88c10ac710e7455538680307b442b20f2602147a5d30f75964736f6c63430008130033
Deployed Bytecode
0x6080604052600436106102815760003560e01c8063921369131161014f578063c0246668116100c1578063e2f456051161007a578063e2f45605146109e5578063e71dc3f514610a10578063f11a24d314610a3b578063f2fde38b14610a66578063f637434214610a8f578063f8b45b0514610aba57610288565b8063c0246668146108c3578063c18bc195146108ec578063c8c8ebe414610915578063d257b34f14610940578063d85ba0631461097d578063dd62ed3e146109a857610288565b8063a457c2d711610113578063a457c2d71461078d578063a9059cbb146107ca578063aacebbe314610807578063adb873bd14610830578063b62496f51461085b578063bbc0c7421461089857610288565b806392136913146106bc578063924de9b7146106e757806395d89b4114610710578063992c58e41461073b5780639a7a23d61461076457610288565b806349bd5a5e116101f35780637571336a116101ac5780637571336a146105be57806375f0a874146105e75780637bce5a04146106125780638366e79a1461063d5780638a8c523c1461067a5780638da5cb5b1461069157610288565b806349bd5a5e146104ac5780634fbee193146104d75780636a486a8e146105145780636ddd17131461053f57806370a082311461056a578063715018a6146105a757610288565b80631a8145bb116102455780631a8145bb146103885780631f3fed8f146103b3578063203e727e146103de57806323b872dd14610407578063313ce56714610444578063395093511461046f57610288565b806306fdde031461028d578063095ea7b3146102b857806310d5de53146102f55780631694505e1461033257806318160ddd1461035d57610288565b3661028857005b600080fd5b34801561029957600080fd5b506102a2610ae5565b6040516102af91906139da565b60405180910390f35b3480156102c457600080fd5b506102df60048036038101906102da9190613a95565b610b77565b6040516102ec9190613af0565b60405180910390f35b34801561030157600080fd5b5061031c60048036038101906103179190613b0b565b610b95565b6040516103299190613af0565b60405180910390f35b34801561033e57600080fd5b50610347610bb5565b6040516103549190613b97565b60405180910390f35b34801561036957600080fd5b50610372610bd9565b60405161037f9190613bc1565b60405180910390f35b34801561039457600080fd5b5061039d610be3565b6040516103aa9190613bc1565b60405180910390f35b3480156103bf57600080fd5b506103c8610be9565b6040516103d59190613bc1565b60405180910390f35b3480156103ea57600080fd5b5061040560048036038101906104009190613bdc565b610bef565b005b34801561041357600080fd5b5061042e60048036038101906104299190613c09565b610d19565b60405161043b9190613af0565b60405180910390f35b34801561045057600080fd5b50610459610df2565b6040516104669190613c78565b60405180910390f35b34801561047b57600080fd5b5061049660048036038101906104919190613a95565b610dfb565b6040516104a39190613af0565b60405180910390f35b3480156104b857600080fd5b506104c1610eae565b6040516104ce9190613ca2565b60405180910390f35b3480156104e357600080fd5b506104fe60048036038101906104f99190613b0b565b610ed2565b60405161050b9190613af0565b60405180910390f35b34801561052057600080fd5b50610529610f28565b6040516105369190613bc1565b60405180910390f35b34801561054b57600080fd5b50610554610f2e565b6040516105619190613af0565b60405180910390f35b34801561057657600080fd5b50610591600480360381019061058c9190613b0b565b610f41565b60405161059e9190613bc1565b60405180910390f35b3480156105b357600080fd5b506105bc610f89565b005b3480156105ca57600080fd5b506105e560048036038101906105e09190613ce9565b6110e1565b005b3480156105f357600080fd5b506105fc6111d3565b6040516106099190613ca2565b60405180910390f35b34801561061e57600080fd5b506106276111f9565b6040516106349190613bc1565b60405180910390f35b34801561064957600080fd5b50610664600480360381019061065f9190613d29565b6111ff565b6040516106719190613af0565b60405180910390f35b34801561068657600080fd5b5061068f611444565b005b34801561069d57600080fd5b506106a661151a565b6040516106b39190613ca2565b60405180910390f35b3480156106c857600080fd5b506106d1611544565b6040516106de9190613bc1565b60405180910390f35b3480156106f357600080fd5b5061070e60048036038101906107099190613d69565b61154a565b005b34801561071c57600080fd5b506107256115fe565b60405161073291906139da565b60405180910390f35b34801561074757600080fd5b50610762600480360381019061075d9190613d96565b611690565b005b34801561077057600080fd5b5061078b60048036038101906107869190613ce9565b61182b565b005b34801561079957600080fd5b506107b460048036038101906107af9190613a95565b61195e565b6040516107c19190613af0565b60405180910390f35b3480156107d657600080fd5b506107f160048036038101906107ec9190613a95565b611a2b565b6040516107fe9190613af0565b60405180910390f35b34801561081357600080fd5b5061082e60048036038101906108299190613b0b565b611a49565b005b34801561083c57600080fd5b50610845611ba0565b6040516108529190613bc1565b60405180910390f35b34801561086757600080fd5b50610882600480360381019061087d9190613b0b565b611ba6565b60405161088f9190613af0565b60405180910390f35b3480156108a457600080fd5b506108ad611bc6565b6040516108ba9190613af0565b60405180910390f35b3480156108cf57600080fd5b506108ea60048036038101906108e59190613ce9565b611bd9565b005b3480156108f857600080fd5b50610913600480360381019061090e9190613bdc565b611d19565b005b34801561092157600080fd5b5061092a611e43565b6040516109379190613bc1565b60405180910390f35b34801561094c57600080fd5b5061096760048036038101906109629190613bdc565b611e49565b6040516109749190613af0565b60405180910390f35b34801561098957600080fd5b50610992611fb9565b60405161099f9190613bc1565b60405180910390f35b3480156109b457600080fd5b506109cf60048036038101906109ca9190613d29565b611fbf565b6040516109dc9190613bc1565b60405180910390f35b3480156109f157600080fd5b506109fa612046565b604051610a079190613bc1565b60405180910390f35b348015610a1c57600080fd5b50610a2561204c565b604051610a329190613bc1565b60405180910390f35b348015610a4757600080fd5b50610a50612052565b604051610a5d9190613bc1565b60405180910390f35b348015610a7257600080fd5b50610a8d6004803603810190610a889190613b0b565b612058565b005b348015610a9b57600080fd5b50610aa461221e565b604051610ab19190613bc1565b60405180910390f35b348015610ac657600080fd5b50610acf612224565b604051610adc9190613bc1565b60405180910390f35b606060038054610af490613e52565b80601f0160208091040260200160405190810160405280929190818152602001828054610b2090613e52565b8015610b6d5780601f10610b4257610100808354040283529160200191610b6d565b820191906000526020600020905b815481529060010190602001808311610b5057829003601f168201915b5050505050905090565b6000610b8b610b8461222a565b8484612232565b6001905092915050565b60176020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b60145481565b60135481565b610bf761222a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7d90613ecf565b60405180910390fd5b670de0b6b3a76400006103e86005610c9c610bd9565b610ca69190613f1e565b610cb09190613f8f565b610cba9190613f8f565b811015610cfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf390614032565b60405180910390fd5b670de0b6b3a764000081610d109190613f1e565b60078190555050565b6000610d268484846123fb565b610de784610d3261222a565b610de285604051806060016040528060288152602001614da660289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d9861222a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612eb89092919063ffffffff16565b612232565b600190509392505050565b60006012905090565b6000610ea4610e0861222a565b84610e9f8560016000610e1961222a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f1c90919063ffffffff16565b612232565b6001905092915050565b7f00000000000000000000000032d4ee0a5cb74a63cbb4caa27cef9453253199cd81565b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600f5481565b600a60019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f9161222a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611020576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101790613ecf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6110e961222a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611178576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116f90613ecf565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c5481565b600061120961222a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611298576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128f90613ecf565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611306576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fd9061409e565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016113419190613ca2565b602060405180830381865afa15801561135e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138291906140d3565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b81526004016113bf929190614100565b6020604051808303816000875af11580156113de573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611402919061413e565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e4388482604051611435929190614100565b60405180910390a15092915050565b61144c61222a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d290613ecf565b60405180910390fd5b6001600a60006101000a81548160ff0219169083151502179055506001600a60016101000a81548160ff02191690831515021790555043601581905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60105481565b61155261222a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d890613ecf565b60405180910390fd5b80600a60016101000a81548160ff02191690831515021790555050565b60606004805461160d90613e52565b80601f016020809104026020016040519081016040528092919081815260200182805461163990613e52565b80156116865780601f1061165b57610100808354040283529160200191611686565b820191906000526020600020905b81548152906001019060200180831161166957829003601f168201915b5050505050905090565b61169861222a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611727576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171e90613ecf565b60405180910390fd5b85600c8190555084600d8190555083600e81905550600e54600d54600c5461174f919061416b565b611759919061416b565b600b81905550826010819055508160118190555080601281905550601254601154601054611787919061416b565b611791919061416b565b600f819055506019600b5411156117dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d4906141eb565b60405180910390fd5b6019600f541115611823576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181a906141eb565b60405180910390fd5b505050505050565b61183361222a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b990613ecf565b60405180910390fd5b7f00000000000000000000000032d4ee0a5cb74a63cbb4caa27cef9453253199cd73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611950576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119479061427d565b60405180910390fd5b61195a8282612f7a565b5050565b6000611a2161196b61222a565b84611a1c85604051806060016040528060258152602001614dce602591396001600061199561222a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612eb89092919063ffffffff16565b612232565b6001905092915050565b6000611a3f611a3861222a565b84846123fb565b6001905092915050565b611a5161222a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ae0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad790613ecf565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60125481565b60186020528060005260406000206000915054906101000a900460ff1681565b600a60009054906101000a900460ff1681565b611be161222a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6790613ecf565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611d0d9190613af0565b60405180910390a25050565b611d2161222a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611db0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da790613ecf565b60405180910390fd5b670de0b6b3a76400006103e86005611dc6610bd9565b611dd09190613f1e565b611dda9190613f8f565b611de49190613f8f565b811015611e26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1d9061430f565b60405180910390fd5b670de0b6b3a764000081611e3a9190613f1e565b60098190555050565b60075481565b6000611e5361222a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ee2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed990613ecf565b60405180910390fd5b620186a06001611ef0610bd9565b611efa9190613f1e565b611f049190613f8f565b821015611f46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3d906143a1565b60405180910390fd5b6103e86005611f53610bd9565b611f5d9190613f1e565b611f679190613f8f565b821115611fa9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa090614433565b60405180910390fd5b8160088190555060019050919050565b600b5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60085481565b600e5481565b600d5481565b61206061222a565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e690613ecf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361215e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612155906144c5565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60115481565b60095481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036122a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229890614557565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612310576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612307906145e9565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516123ee9190613bc1565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361246a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124619061467b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d09061470d565b60405180910390fd5b600081036124f2576124ed8383600061301b565b612eb3565b6124fa61151a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612568575061253861151a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125a15750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125db575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156125f45750600560149054906101000a900460ff16155b156129d757600a60009054906101000a900460ff166126ee57601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806126ae5750601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6126ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126e490614779565b60405180910390fd5b5b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156127915750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612838576007548111156127db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d29061480b565b60405180910390fd5b6009546127e783610f41565b826127f2919061416b565b1115612833576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282a90614877565b60405180910390fd5b6129d6565b601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156128db5750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561292a57600754811115612925576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291c90614909565b60405180910390fd5b6129d5565b601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166129d45760095461298783610f41565b82612992919061416b565b11156129d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129ca90614877565b60405180910390fd5b5b5b5b5b60006129e230610f41565b9050600060085482101590506000818015612a095750600a60019054906101000a900460ff165b8015612a225750600560149054906101000a900460ff16155b8015612a785750601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612ace5750601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612b245750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b68576001600560146101000a81548160ff021916908315150217905550612b4c6132ae565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612c1e5750601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612c2857600090505b60008115612ea257601860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612c8b57506000600f54115b15612d4d57612cb86064612caa600f54896134bb90919063ffffffff16565b61353590919063ffffffff16565b9050600f5460115482612ccb9190613f1e565b612cd59190613f8f565b60146000828254612ce6919061416b565b92505081905550600f5460105482612cfe9190613f1e565b612d089190613f8f565b60136000828254612d19919061416b565b92505081905550600f5460125482612d319190613f1e565b612d3b9190613f8f565b83612d46919061416b565b9250612e67565b601860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612da857506000600b54115b15612e6657612dd56064612dc7600b54896134bb90919063ffffffff16565b61353590919063ffffffff16565b9050600b54600d5482612de89190613f1e565b612df29190613f8f565b60146000828254612e03919061416b565b92505081905550600b54600c5482612e1b9190613f1e565b612e259190613f8f565b60136000828254612e36919061416b565b92505081905550600b54600e5482612e4e9190613f1e565b612e589190613f8f565b83612e63919061416b565b92505b5b6000811115612e7c57612e7b88308361301b565b5b6000831115612e9357612e923061dead8561301b565b5b8086612e9f9190614929565b95505b612ead88888861301b565b50505050505b505050565b6000838311158290612f00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ef791906139da565b60405180910390fd5b5060008385612f0f9190614929565b9050809150509392505050565b6000808284612f2b919061416b565b905083811015612f70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f67906149a9565b60405180910390fd5b8091505092915050565b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361308a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130819061467b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036130f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130f09061470d565b60405180910390fd5b61310483838361357f565b61316f81604051806060016040528060268152602001614d80602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612eb89092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613202816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f1c90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516132a19190613bc1565b60405180910390a3505050565b60006132b930610f41565b905060006013546014546132cd919061416b565b90506000808314806132df5750600082145b156132ec575050506134b9565b60146008546132fb9190613f1e565b8311156133145760146008546133119190613f1e565b92505b6000600283601454866133279190613f1e565b6133319190613f8f565b61333b9190613f8f565b90506000613352828661358490919063ffffffff16565b90506000479050613362826135ce565b6000613377824761358490919063ffffffff16565b905060006133a287613394601354856134bb90919063ffffffff16565b61353590919063ffffffff16565b9050600081836133b29190614929565b9050600060148190555060006013819055506000861180156133d45750600081115b15613421576133e3868261380b565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618582601454604051613418939291906149c9565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161346790614a31565b60006040518083038185875af1925050503d80600081146134a4576040519150601f19603f3d011682016040523d82523d6000602084013e6134a9565b606091505b5050809750505050505050505050505b565b60008083036134cd576000905061352f565b600082846134db9190613f1e565b90508284826134ea9190613f8f565b1461352a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161352190614ab8565b60405180910390fd5b809150505b92915050565b600061357783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506138e7565b905092915050565b505050565b60006135c683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612eb8565b905092915050565b6000600267ffffffffffffffff8111156135eb576135ea614ad8565b5b6040519080825280602002602001820160405280156136195781602001602082028036833780820191505090505b509050308160008151811061363157613630614b07565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156136d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136fa9190614b4b565b8160018151811061370e5761370d614b07565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613773307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612232565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016137d5959493929190614c71565b600060405180830381600087803b1580156137ef57600080fd5b505af1158015613803573d6000803e3d6000fd5b505050505050565b613836307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612232565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b815260040161389d96959493929190614ccb565b60606040518083038185885af11580156138bb573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906138e09190614d2c565b5050505050565b6000808311829061392e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161392591906139da565b60405180910390fd5b506000838561393d9190613f8f565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613984578082015181840152602081019050613969565b60008484015250505050565b6000601f19601f8301169050919050565b60006139ac8261394a565b6139b68185613955565b93506139c6818560208601613966565b6139cf81613990565b840191505092915050565b600060208201905081810360008301526139f481846139a1565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613a2c82613a01565b9050919050565b613a3c81613a21565b8114613a4757600080fd5b50565b600081359050613a5981613a33565b92915050565b6000819050919050565b613a7281613a5f565b8114613a7d57600080fd5b50565b600081359050613a8f81613a69565b92915050565b60008060408385031215613aac57613aab6139fc565b5b6000613aba85828601613a4a565b9250506020613acb85828601613a80565b9150509250929050565b60008115159050919050565b613aea81613ad5565b82525050565b6000602082019050613b056000830184613ae1565b92915050565b600060208284031215613b2157613b206139fc565b5b6000613b2f84828501613a4a565b91505092915050565b6000819050919050565b6000613b5d613b58613b5384613a01565b613b38565b613a01565b9050919050565b6000613b6f82613b42565b9050919050565b6000613b8182613b64565b9050919050565b613b9181613b76565b82525050565b6000602082019050613bac6000830184613b88565b92915050565b613bbb81613a5f565b82525050565b6000602082019050613bd66000830184613bb2565b92915050565b600060208284031215613bf257613bf16139fc565b5b6000613c0084828501613a80565b91505092915050565b600080600060608486031215613c2257613c216139fc565b5b6000613c3086828701613a4a565b9350506020613c4186828701613a4a565b9250506040613c5286828701613a80565b9150509250925092565b600060ff82169050919050565b613c7281613c5c565b82525050565b6000602082019050613c8d6000830184613c69565b92915050565b613c9c81613a21565b82525050565b6000602082019050613cb76000830184613c93565b92915050565b613cc681613ad5565b8114613cd157600080fd5b50565b600081359050613ce381613cbd565b92915050565b60008060408385031215613d0057613cff6139fc565b5b6000613d0e85828601613a4a565b9250506020613d1f85828601613cd4565b9150509250929050565b60008060408385031215613d4057613d3f6139fc565b5b6000613d4e85828601613a4a565b9250506020613d5f85828601613a4a565b9150509250929050565b600060208284031215613d7f57613d7e6139fc565b5b6000613d8d84828501613cd4565b91505092915050565b60008060008060008060c08789031215613db357613db26139fc565b5b6000613dc189828a01613a80565b9650506020613dd289828a01613a80565b9550506040613de389828a01613a80565b9450506060613df489828a01613a80565b9350506080613e0589828a01613a80565b92505060a0613e1689828a01613a80565b9150509295509295509295565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613e6a57607f821691505b602082108103613e7d57613e7c613e23565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613eb9602083613955565b9150613ec482613e83565b602082019050919050565b60006020820190508181036000830152613ee881613eac565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613f2982613a5f565b9150613f3483613a5f565b9250828202613f4281613a5f565b91508282048414831517613f5957613f58613eef565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613f9a82613a5f565b9150613fa583613a5f565b925082613fb557613fb4613f60565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e35250000000000000000000000000000000000602082015250565b600061401c602f83613955565b915061402782613fc0565b604082019050919050565b6000602082019050818103600083015261404b8161400f565b9050919050565b7f43616e2774207769746864726177206e617469766520746f6b656e7300000000600082015250565b6000614088601c83613955565b915061409382614052565b602082019050919050565b600060208201905081810360008301526140b78161407b565b9050919050565b6000815190506140cd81613a69565b92915050565b6000602082840312156140e9576140e86139fc565b5b60006140f7848285016140be565b91505092915050565b60006040820190506141156000830185613c93565b6141226020830184613bb2565b9392505050565b60008151905061413881613cbd565b92915050565b600060208284031215614154576141536139fc565b5b600061416284828501614129565b91505092915050565b600061417682613a5f565b915061418183613a5f565b925082820190508082111561419957614198613eef565b5b92915050565b7f4d757374206b656570206665657320617420323525206f72206c657373000000600082015250565b60006141d5601d83613955565b91506141e08261419f565b602082019050919050565b60006020820190508181036000830152614204816141c8565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614267603983613955565b91506142728261420b565b604082019050919050565b600060208201905081810360008301526142968161425a565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b60006142f9602483613955565b91506143048261429d565b604082019050919050565b60006020820190508181036000830152614328816142ec565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b600061438b603583613955565b91506143968261432f565b604082019050919050565b600060208201905081810360008301526143ba8161437e565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b600061441d603483613955565b9150614428826143c1565b604082019050919050565b6000602082019050818103600083015261444c81614410565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006144af602683613955565b91506144ba82614453565b604082019050919050565b600060208201905081810360008301526144de816144a2565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614541602483613955565b915061454c826144e5565b604082019050919050565b6000602082019050818103600083015261457081614534565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006145d3602283613955565b91506145de82614577565b604082019050919050565b60006020820190508181036000830152614602816145c6565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614665602583613955565b915061467082614609565b604082019050919050565b6000602082019050818103600083015261469481614658565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006146f7602383613955565b91506147028261469b565b604082019050919050565b60006020820190508181036000830152614726816146ea565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614763601683613955565b915061476e8261472d565b602082019050919050565b6000602082019050818103600083015261479281614756565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006147f5603583613955565b915061480082614799565b604082019050919050565b60006020820190508181036000830152614824816147e8565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000614861601383613955565b915061486c8261482b565b602082019050919050565b6000602082019050818103600083015261489081614854565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b60006148f3603683613955565b91506148fe82614897565b604082019050919050565b60006020820190508181036000830152614922816148e6565b9050919050565b600061493482613a5f565b915061493f83613a5f565b925082820390508181111561495757614956613eef565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614993601b83613955565b915061499e8261495d565b602082019050919050565b600060208201905081810360008301526149c281614986565b9050919050565b60006060820190506149de6000830186613bb2565b6149eb6020830185613bb2565b6149f86040830184613bb2565b949350505050565b600081905092915050565b50565b6000614a1b600083614a00565b9150614a2682614a0b565b600082019050919050565b6000614a3c82614a0e565b9150819050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614aa2602183613955565b9150614aad82614a46565b604082019050919050565b60006020820190508181036000830152614ad181614a95565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050614b4581613a33565b92915050565b600060208284031215614b6157614b606139fc565b5b6000614b6f84828501614b36565b91505092915050565b6000819050919050565b6000614b9d614b98614b9384614b78565b613b38565b613a5f565b9050919050565b614bad81614b82565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614be881613a21565b82525050565b6000614bfa8383614bdf565b60208301905092915050565b6000602082019050919050565b6000614c1e82614bb3565b614c288185614bbe565b9350614c3383614bcf565b8060005b83811015614c64578151614c4b8882614bee565b9750614c5683614c06565b925050600181019050614c37565b5085935050505092915050565b600060a082019050614c866000830188613bb2565b614c936020830187614ba4565b8181036040830152614ca58186614c13565b9050614cb46060830185613c93565b614cc16080830184613bb2565b9695505050505050565b600060c082019050614ce06000830189613c93565b614ced6020830188613bb2565b614cfa6040830187614ba4565b614d076060830186614ba4565b614d146080830185613c93565b614d2160a0830184613bb2565b979650505050505050565b600080600060608486031215614d4557614d446139fc565b5b6000614d53868287016140be565b9350506020614d64868287016140be565b9250506040614d75868287016140be565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212206efe9222e95253ff88c10ac710e7455538680307b442b20f2602147a5d30f75964736f6c63430008130033
Deployed Bytecode Sourcemap
31786:14014:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9884:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12058:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32832:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31865:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11007:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32580:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32540;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36656:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12710:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10848:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13475:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31923:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39490:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32393:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32206:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11179:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24386:148;;;;;;;;;;;;;:::i;:::-;;37123:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32002:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32284;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39093:386;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36038:148;;;;;;;;;;;;;:::i;:::-;;23742:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32428:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37364:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10104:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37474:743;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;38425:245;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14197:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11520:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38877:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32504:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33055:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32166:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38231:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;36899:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32048:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36261:386;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32250:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11759:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32090:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32358:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32321:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24690:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32466:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32130:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9884:100;9938:13;9971:5;9964:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9884:100;:::o;12058:169::-;12141:4;12158:39;12167:12;:10;:12::i;:::-;12181:7;12190:6;12158:8;:39::i;:::-;12215:4;12208:11;;12058:169;;;;:::o;32832:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;31865:51::-;;;:::o;11007:108::-;11068:7;11095:12;;11088:19;;11007:108;:::o;32580:33::-;;;;:::o;32540:::-;;;;:::o;36656:234::-;23965:12;:10;:12::i;:::-;23955:22;;:6;;;;;;;;;;;:22;;;23947:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36775:4:::1;36769;36765:1;36749:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;36748:31;;;;:::i;:::-;36738:6;:41;;36730:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;36875:6;36865;:17;;;;:::i;:::-;36842:20;:40;;;;36656:234:::0;:::o;12710:355::-;12850:4;12867:36;12877:6;12885:9;12896:6;12867:9;:36::i;:::-;12914:121;12923:6;12931:12;:10;:12::i;:::-;12945:89;12983:6;12945:89;;;;;;;;;;;;;;;;;:11;:19;12957:6;12945:19;;;;;;;;;;;;;;;:33;12965:12;:10;:12::i;:::-;12945:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;12914:8;:121::i;:::-;13053:4;13046:11;;12710:355;;;;;:::o;10848:93::-;10906:5;10931:2;10924:9;;10848:93;:::o;13475:218::-;13563:4;13580:83;13589:12;:10;:12::i;:::-;13603:7;13612:50;13651:10;13612:11;:25;13624:12;:10;:12::i;:::-;13612:25;;;;;;;;;;;;;;;:34;13638:7;13612:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;13580:8;:83::i;:::-;13681:4;13674:11;;13475:218;;;;:::o;31923:38::-;;;:::o;39490:125::-;39555:4;39579:19;:28;39599:7;39579:28;;;;;;;;;;;;;;;;;;;;;;;;;39572:35;;39490:125;;;:::o;32393:28::-;;;;:::o;32206:31::-;;;;;;;;;;;;;:::o;11179:127::-;11253:7;11280:9;:18;11290:7;11280:18;;;;;;;;;;;;;;;;11273:25;;11179:127;;;:::o;24386:148::-;23965:12;:10;:12::i;:::-;23955:22;;:6;;;;;;;;;;;:22;;;23947:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24493:1:::1;24456:40;;24477:6;;;;;;;;;;;24456:40;;;;;;;;;;;;24524:1;24507:6;;:19;;;;;;;;;;;;;;;;;;24386:148::o:0;37123:144::-;23965:12;:10;:12::i;:::-;23955:22;;:6;;;;;;;;;;;:22;;;23947:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;37255:4:::1;37213:31;:39;37245:6;37213:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;37123:144:::0;;:::o;32002:30::-;;;;;;;;;;;;;:::o;32284:::-;;;;:::o;39093:386::-;39180:10;23965:12;:10;:12::i;:::-;23955:22;;:6;;;;;;;;;;;:22;;;23947:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;39229:4:::1;39211:23;;:6;:23;;::::0;39203:64:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;39278:24;39312:6;39305:24;;;39338:4;39305:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;39278:66;;39370:6;39363:23;;;39387:3;39392:16;39363:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;39355:54;;39425:46;39446:6;39454:16;39425:46;;;;;;;:::i;:::-;;;;;;;;39192:287;39093:386:::0;;;;:::o;36038:148::-;23965:12;:10;:12::i;:::-;23955:22;;:6;;;;;;;;;;;:22;;;23947:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36109:4:::1;36093:13;;:20;;;;;;;;;;;;;;;;;;36138:4;36124:11;;:18;;;;;;;;;;;;;;;;;;36166:12;36153:10;:25;;;;36038:148::o:0;23742:79::-;23780:7;23807:6;;;;;;;;;;;23800:13;;23742:79;:::o;32428:31::-;;;;:::o;37364:101::-;23965:12;:10;:12::i;:::-;23955:22;;:6;;;;;;;;;;;:22;;;23947:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;37450:7:::1;37436:11;;:21;;;;;;;;;;;;;;;;;;37364:101:::0;:::o;10104:104::-;10160:13;10193:7;10186:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10104:104;:::o;37474:743::-;23965:12;:10;:12::i;:::-;23955:22;;:6;;;;;;;;;;;:22;;;23947:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;37691:16:::1;37673:15;:34;;;;37736:16;37718:15;:34;;;;37776:11;37763:10;:24;;;;37849:10;;37831:15;;37813;;:33;;;;:::i;:::-;:46;;;;:::i;:::-;37798:12;:61;;;;37889:17;37870:16;:36;;;;37936:17;37917:16;:36;;;;37978:12;37964:11;:26;;;;38055:11;;38036:16;;38017;;:35;;;;:::i;:::-;:49;;;;:::i;:::-;38001:13;:65;;;;38101:2;38085:12;;:18;;38077:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;38173:2;38156:13;;:19;;38148:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;37474:743:::0;;;;;;:::o;38425:245::-;23965:12;:10;:12::i;:::-;23955:22;;:6;;;;;;;;;;;:22;;;23947:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;38532:13:::1;38524:21;;:4;:21;;::::0;38516:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;38621:41;38650:4;38656:5;38621:28;:41::i;:::-;38425:245:::0;;:::o;14197:269::-;14290:4;14307:129;14316:12;:10;:12::i;:::-;14330:7;14339:96;14378:15;14339:96;;;;;;;;;;;;;;;;;:11;:25;14351:12;:10;:12::i;:::-;14339:25;;;;;;;;;;;;;;;:34;14365:7;14339:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;14307:8;:129::i;:::-;14454:4;14447:11;;14197:269;;;;:::o;11520:175::-;11606:4;11623:42;11633:12;:10;:12::i;:::-;11647:9;11658:6;11623:9;:42::i;:::-;11683:4;11676:11;;11520:175;;;;:::o;38877:208::-;23965:12;:10;:12::i;:::-;23955:22;;:6;;;;;;;;;;;:22;;;23947:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;39014:15:::1;;;;;;;;;;;38971:59;;38994:18;38971:59;;;;;;;;;;;;39059:18;39041:15;;:36;;;;;;;;;;;;;;;;;;38877:208:::0;:::o;32504:26::-;;;;:::o;33055:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;32166:33::-;;;;;;;;;;;;;:::o;38231:182::-;23965:12;:10;:12::i;:::-;23955:22;;:6;;;;;;;;;;;:22;;;23947:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;38347:8:::1;38316:19;:28;38336:7;38316:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;38387:7;38371:34;;;38396:8;38371:34;;;;;;:::i;:::-;;;;;;;;38231:182:::0;;:::o;36899:215::-;23965:12;:10;:12::i;:::-;23955:22;;:6;;;;;;;;;;;:22;;;23947:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;37021:4:::1;37015;37011:1;36995:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;36994:31;;;;:::i;:::-;36984:6;:41;;36976:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;37099:6;37089;:17;;;;:::i;:::-;37077:9;:29;;;;36899:215:::0;:::o;32048:35::-;;;;:::o;36261:386::-;36342:4;23965:12;:10;:12::i;:::-;23955:22;;:6;;;;;;;;;;;:22;;;23947:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36399:6:::1;36395:1;36379:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;36366:9;:39;;36358:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;36515:4;36511:1;36495:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;36482:9;:37;;36474:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;36608:9;36587:18;:30;;;;36635:4;36628:11;;36261:386:::0;;;:::o;32250:27::-;;;;:::o;11759:151::-;11848:7;11875:11;:18;11887:5;11875:18;;;;;;;;;;;;;;;:27;11894:7;11875:27;;;;;;;;;;;;;;;;11868:34;;11759:151;;;;:::o;32090:33::-;;;;:::o;32358:25::-;;;;:::o;32321:30::-;;;;:::o;24690:244::-;23965:12;:10;:12::i;:::-;23955:22;;:6;;;;;;;;;;;:22;;;23947:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24799:1:::1;24779:22;;:8;:22;;::::0;24771:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;24889:8;24860:38;;24881:6;;;;;;;;;;;24860:38;;;;;;;;;;;;24918:8;24909:6;;:17;;;;;;;;;;;;;;;;;;24690:244:::0;:::o;32466:31::-;;;;:::o;32130:24::-;;;;:::o;2575:98::-;2628:7;2655:10;2648:17;;2575:98;:::o;17393:381::-;17546:1;17529:19;;:5;:19;;;17521:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17627:1;17608:21;;:7;:21;;;17600:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17712:6;17682:11;:18;17694:5;17682:18;;;;;;;;;;;;;;;:27;17701:7;17682:27;;;;;;;;;;;;;;;:36;;;;17750:7;17734:32;;17743:5;17734:32;;;17759:6;17734:32;;;;;;:::i;:::-;;;;;;;;17393:381;;;:::o;39675:3593::-;39823:1;39807:18;;:4;:18;;;39799:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;39900:1;39886:16;;:2;:16;;;39878:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;39967:1;39957:6;:11;39954:92;;39985:28;40001:4;40007:2;40011:1;39985:15;:28::i;:::-;40028:7;;39954:92;40093:7;:5;:7::i;:::-;40085:15;;:4;:15;;;;:49;;;;;40127:7;:5;:7::i;:::-;40121:13;;:2;:13;;;;40085:49;:86;;;;;40169:1;40155:16;;:2;:16;;;;40085:86;:128;;;;;40206:6;40192:21;;:2;:21;;;;40085:128;:158;;;;;40235:8;;;;;;;;;;;40234:9;40085:158;40063:1189;;;40281:13;;;;;;;;;;;40277:148;;40326:19;:25;40346:4;40326:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;40355:19;:23;40375:2;40355:23;;;;;;;;;;;;;;;;;;;;;;;;;40326:52;40318:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;40277:148;40478:25;:31;40504:4;40478:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;40514:31;:35;40546:2;40514:35;;;;;;;;;;;;;;;;;;;;;;;;;40513:36;40478:71;40474:763;;;40596:20;;40586:6;:30;;40578:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;40735:9;;40718:13;40728:2;40718:9;:13::i;:::-;40709:6;:22;;;;:::i;:::-;:35;;40701:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;40474:763;;;40847:25;:29;40873:2;40847:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;40881:31;:37;40913:4;40881:37;;;;;;;;;;;;;;;;;;;;;;;;;40880:38;40847:71;40843:394;;;40965:20;;40955:6;:30;;40947:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;40843:394;;;41091:31;:35;41123:2;41091:35;;;;;;;;;;;;;;;;;;;;;;;;;41087:150;;41184:9;;41167:13;41177:2;41167:9;:13::i;:::-;41158:6;:22;;;;:::i;:::-;:35;;41150:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;41087:150;40843:394;40474:763;40063:1189;41273:28;41304:24;41322:4;41304:9;:24::i;:::-;41273:55;;41339:12;41378:18;;41354:20;:42;;41339:57;;41407:21;41459:7;:35;;;;;41483:11;;;;;;;;;;;41459:35;:61;;;;;41512:8;;;;;;;;;;;41511:9;41459:61;:110;;;;;41538:25;:31;41564:4;41538:31;;;;;;;;;;;;;;;;;;;;;;;;;41537:32;41459:110;:153;;;;;41587:19;:25;41607:4;41587:25;;;;;;;;;;;;;;;;;;;;;;;;;41586:26;41459:153;:194;;;;;41630:19;:23;41650:2;41630:23;;;;;;;;;;;;;;;;;;;;;;;;;41629:24;41459:194;41441:328;;;41691:4;41680:8;;:15;;;;;;;;;;;;;;;;;;41713:10;:8;:10::i;:::-;41752:5;41741:8;;:16;;;;;;;;;;;;;;;;;;41441:328;41782:12;41798:8;;;;;;;;;;;41797:9;41782:24;;41908:19;:25;41928:4;41908:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;41937:19;:23;41957:2;41937:23;;;;;;;;;;;;;;;;;;;;;;;;;41908:52;41905:99;;;41987:5;41977:15;;41905:99;42017:12;42121:7;42118:1096;;;42172:25;:29;42198:2;42172:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;42221:1;42205:13;;:17;42172:50;42168:769;;;42249:34;42279:3;42249:25;42260:13;;42249:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;42242:41;;42350:13;;42331:16;;42324:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;42302:18;;:61;;;;;;;:::i;:::-;;;;;;;;42430:13;;42411:16;;42404:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;42382:18;;:61;;;;;;;:::i;:::-;;;;;;;;42500:13;;42486:11;;42479:4;:18;;;;:::i;:::-;:34;;;;:::i;:::-;42462:51;;;;;:::i;:::-;;;42168:769;;;42580:25;:31;42606:4;42580:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;42630:1;42615:12;;:16;42580:51;42577:360;;;42659:33;42688:3;42659:24;42670:12;;42659:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;42652:40;;42758:12;;42740:15;;42733:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;42711:18;;:59;;;;;;;:::i;:::-;;;;;;;;42836:12;;42818:15;;42811:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;42789:18;;:59;;;;;;;:::i;:::-;;;;;;;;42904:12;;42891:10;;42884:4;:17;;;;:::i;:::-;:32;;;;:::i;:::-;42867:49;;;;;:::i;:::-;;;42577:360;42168:769;42963:1;42956:4;:8;42953:93;;;42988:42;43004:4;43018;43025;42988:15;:42::i;:::-;42953:93;43081:1;43065:13;:17;43062:120;;;43104:62;43128:4;43143:6;43152:13;43104:15;:62::i;:::-;43062:120;43208:4;43198:14;;;;;:::i;:::-;;;42118:1096;43227:33;43243:4;43249:2;43253:6;43227:15;:33::i;:::-;39788:3480;;;;;39675:3593;;;;:::o;19680:193::-;19766:7;19799:1;19794;:6;;19802:12;19786:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;19826:9;19842:1;19838;:5;;;;:::i;:::-;19826:17;;19864:1;19857:8;;;19680:193;;;;;:::o;18774:182::-;18832:7;18852:9;18868:1;18864;:5;;;;:::i;:::-;18852:17;;18893:1;18888;:6;;18880:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;18947:1;18940:8;;;18774:182;;;;:::o;38679:189::-;38796:5;38762:25;:31;38788:4;38762:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;38854:5;38820:40;;38848:4;38820:40;;;;;;;;;;;;38679:189;;:::o;14957:575::-;15115:1;15097:20;;:6;:20;;;15089:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;15199:1;15178:23;;:9;:23;;;15170:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15255:47;15276:6;15284:9;15295:6;15255:20;:47::i;:::-;15336:71;15358:6;15336:71;;;;;;;;;;;;;;;;;:9;:17;15346:6;15336:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;15316:9;:17;15326:6;15316:17;;;;;;;;;;;;;;;:91;;;;15441:32;15466:6;15441:9;:20;15451:9;15441:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;15418:9;:20;15428:9;15418:20;;;;;;;;;;;;;;;:55;;;;15506:9;15489:35;;15498:6;15489:35;;;15517:6;15489:35;;;;;;:::i;:::-;;;;;;;;14957:575;;;:::o;44414:1381::-;44453:23;44479:24;44497:4;44479:9;:24::i;:::-;44453:50;;44514:25;44563:18;;44542;;:39;;;;:::i;:::-;44514:67;;44592:12;44640:1;44621:15;:20;:46;;;;44666:1;44645:17;:22;44621:46;44618:60;;;44670:7;;;;;44618:60;44733:2;44712:18;;:23;;;;:::i;:::-;44694:15;:41;44691:111;;;44788:2;44767:18;;:23;;;;:::i;:::-;44749:41;;44691:111;44864:23;44949:1;44929:17;44908:18;;44890:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;44864:86;;44961:26;44990:36;45010:15;44990;:19;;:36;;;;:::i;:::-;44961:65;;45040:25;45068:21;45040:49;;45103:36;45120:18;45103:16;:36::i;:::-;45154:18;45175:44;45201:17;45175:21;:25;;:44;;;;:::i;:::-;45154:65;;45243:23;45269:57;45308:17;45269:34;45284:18;;45269:10;:14;;:34;;;;:::i;:::-;:38;;:57;;;;:::i;:::-;45243:83;;45337:23;45376:15;45363:10;:28;;;;:::i;:::-;45337:54;;45433:1;45412:18;:22;;;;45466:1;45445:18;:22;;;;45509:1;45491:15;:19;:42;;;;;45532:1;45514:15;:19;45491:42;45488:210;;;45549:46;45562:15;45579;45549:12;:46::i;:::-;45615:71;45630:18;45650:15;45667:18;;45615:71;;;;;;;;:::i;:::-;;;;;;;;45488:210;45732:15;;;;;;;;;;;45724:29;;45761:21;45724:63;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45711:76;;;;;44442:1353;;;;;;;;;44414:1381;:::o;20133:473::-;20191:7;20441:1;20436;:6;20432:47;;20466:1;20459:8;;;;20432:47;20492:9;20508:1;20504;:5;;;;:::i;:::-;20492:17;;20537:1;20532;20528;:5;;;;:::i;:::-;:10;20520:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;20597:1;20590:8;;;20133:473;;;;;:::o;21083:132::-;21141:7;21168:39;21172:1;21175;21168:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;21161:46;;21083:132;;;;:::o;18378:125::-;;;;:::o;19240:136::-;19298:7;19325:43;19329:1;19332;19325:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;19318:50;;19240:136;;;;:::o;43277:597::-;43406:21;43444:1;43430:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43406:40;;43475:4;43457;43462:1;43457:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;43501:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;43491:4;43496:1;43491:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;43537:62;43554:4;43569:15;43587:11;43537:8;:62::i;:::-;43639:15;:66;;;43720:11;43746:1;43790:4;43817;43837:15;43639:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43332:542;43277:597;:::o;43883:522::-;44031:62;44048:4;44063:15;44081:11;44031:8;:62::i;:::-;44137:15;:31;;;44176:9;44209:4;44229:11;44255:1;44298;44349:6;44371:15;44137:260;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;43883:522;;:::o;21712:279::-;21798:7;21830:1;21826;:5;21833:12;21818:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;21857:9;21873:1;21869;:5;;;;:::i;:::-;21857:17;;21982:1;21975:8;;;21712:279;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:60::-;3809:3;3830:5;3823:12;;3781:60;;;:::o;3847:142::-;3897:9;3930:53;3948:34;3957:24;3975:5;3957:24;:::i;:::-;3948:34;:::i;:::-;3930:53;:::i;:::-;3917:66;;3847:142;;;:::o;3995:126::-;4045:9;4078:37;4109:5;4078:37;:::i;:::-;4065:50;;3995:126;;;:::o;4127:153::-;4204:9;4237:37;4268:5;4237:37;:::i;:::-;4224:50;;4127:153;;;:::o;4286:185::-;4400:64;4458:5;4400:64;:::i;:::-;4395:3;4388:77;4286:185;;:::o;4477:276::-;4597:4;4635:2;4624:9;4620:18;4612:26;;4648:98;4743:1;4732:9;4728:17;4719:6;4648:98;:::i;:::-;4477:276;;;;:::o;4759:118::-;4846:24;4864:5;4846:24;:::i;:::-;4841:3;4834:37;4759:118;;:::o;4883:222::-;4976:4;5014:2;5003:9;4999:18;4991:26;;5027:71;5095:1;5084:9;5080:17;5071:6;5027:71;:::i;:::-;4883:222;;;;:::o;5111:329::-;5170:6;5219:2;5207:9;5198:7;5194:23;5190:32;5187:119;;;5225:79;;:::i;:::-;5187:119;5345:1;5370:53;5415:7;5406:6;5395:9;5391:22;5370:53;:::i;:::-;5360:63;;5316:117;5111:329;;;;:::o;5446:619::-;5523:6;5531;5539;5588:2;5576:9;5567:7;5563:23;5559:32;5556:119;;;5594:79;;:::i;:::-;5556:119;5714:1;5739:53;5784:7;5775:6;5764:9;5760:22;5739:53;:::i;:::-;5729:63;;5685:117;5841:2;5867:53;5912:7;5903:6;5892:9;5888:22;5867:53;:::i;:::-;5857:63;;5812:118;5969:2;5995:53;6040:7;6031:6;6020:9;6016:22;5995:53;:::i;:::-;5985:63;;5940:118;5446:619;;;;;:::o;6071:86::-;6106:7;6146:4;6139:5;6135:16;6124:27;;6071:86;;;:::o;6163:112::-;6246:22;6262:5;6246:22;:::i;:::-;6241:3;6234:35;6163:112;;:::o;6281:214::-;6370:4;6408:2;6397:9;6393:18;6385:26;;6421:67;6485:1;6474:9;6470:17;6461:6;6421:67;:::i;:::-;6281:214;;;;:::o;6501:118::-;6588:24;6606:5;6588:24;:::i;:::-;6583:3;6576:37;6501:118;;:::o;6625:222::-;6718:4;6756:2;6745:9;6741:18;6733:26;;6769:71;6837:1;6826:9;6822:17;6813:6;6769:71;:::i;:::-;6625:222;;;;:::o;6853:116::-;6923:21;6938:5;6923:21;:::i;:::-;6916:5;6913:32;6903:60;;6959:1;6956;6949:12;6903:60;6853:116;:::o;6975:133::-;7018:5;7056:6;7043:20;7034:29;;7072:30;7096:5;7072:30;:::i;:::-;6975:133;;;;:::o;7114:468::-;7179:6;7187;7236:2;7224:9;7215:7;7211:23;7207:32;7204:119;;;7242:79;;:::i;:::-;7204:119;7362:1;7387:53;7432:7;7423:6;7412:9;7408:22;7387:53;:::i;:::-;7377:63;;7333:117;7489:2;7515:50;7557:7;7548:6;7537:9;7533:22;7515:50;:::i;:::-;7505:60;;7460:115;7114:468;;;;;:::o;7588:474::-;7656:6;7664;7713:2;7701:9;7692:7;7688:23;7684:32;7681:119;;;7719:79;;:::i;:::-;7681:119;7839:1;7864:53;7909:7;7900:6;7889:9;7885:22;7864:53;:::i;:::-;7854:63;;7810:117;7966:2;7992:53;8037:7;8028:6;8017:9;8013:22;7992:53;:::i;:::-;7982:63;;7937:118;7588:474;;;;;:::o;8068:323::-;8124:6;8173:2;8161:9;8152:7;8148:23;8144:32;8141:119;;;8179:79;;:::i;:::-;8141:119;8299:1;8324:50;8366:7;8357:6;8346:9;8342:22;8324:50;:::i;:::-;8314:60;;8270:114;8068:323;;;;:::o;8397:1057::-;8501:6;8509;8517;8525;8533;8541;8590:3;8578:9;8569:7;8565:23;8561:33;8558:120;;;8597:79;;:::i;:::-;8558:120;8717:1;8742:53;8787:7;8778:6;8767:9;8763:22;8742:53;:::i;:::-;8732:63;;8688:117;8844:2;8870:53;8915:7;8906:6;8895:9;8891:22;8870:53;:::i;:::-;8860:63;;8815:118;8972:2;8998:53;9043:7;9034:6;9023:9;9019:22;8998:53;:::i;:::-;8988:63;;8943:118;9100:2;9126:53;9171:7;9162:6;9151:9;9147:22;9126:53;:::i;:::-;9116:63;;9071:118;9228:3;9255:53;9300:7;9291:6;9280:9;9276:22;9255:53;:::i;:::-;9245:63;;9199:119;9357:3;9384:53;9429:7;9420:6;9409:9;9405:22;9384:53;:::i;:::-;9374:63;;9328:119;8397:1057;;;;;;;;:::o;9460:180::-;9508:77;9505:1;9498:88;9605:4;9602:1;9595:15;9629:4;9626:1;9619:15;9646:320;9690:6;9727:1;9721:4;9717:12;9707:22;;9774:1;9768:4;9764:12;9795:18;9785:81;;9851:4;9843:6;9839:17;9829:27;;9785:81;9913:2;9905:6;9902:14;9882:18;9879:38;9876:84;;9932:18;;:::i;:::-;9876:84;9697:269;9646:320;;;:::o;9972:182::-;10112:34;10108:1;10100:6;10096:14;10089:58;9972:182;:::o;10160:366::-;10302:3;10323:67;10387:2;10382:3;10323:67;:::i;:::-;10316:74;;10399:93;10488:3;10399:93;:::i;:::-;10517:2;10512:3;10508:12;10501:19;;10160:366;;;:::o;10532:419::-;10698:4;10736:2;10725:9;10721:18;10713:26;;10785:9;10779:4;10775:20;10771:1;10760:9;10756:17;10749:47;10813:131;10939:4;10813:131;:::i;:::-;10805:139;;10532:419;;;:::o;10957:180::-;11005:77;11002:1;10995:88;11102:4;11099:1;11092:15;11126:4;11123:1;11116:15;11143:410;11183:7;11206:20;11224:1;11206:20;:::i;:::-;11201:25;;11240:20;11258:1;11240:20;:::i;:::-;11235:25;;11295:1;11292;11288:9;11317:30;11335:11;11317:30;:::i;:::-;11306:41;;11496:1;11487:7;11483:15;11480:1;11477:22;11457:1;11450:9;11430:83;11407:139;;11526:18;;:::i;:::-;11407:139;11191:362;11143:410;;;;:::o;11559:180::-;11607:77;11604:1;11597:88;11704:4;11701:1;11694:15;11728:4;11725:1;11718:15;11745:185;11785:1;11802:20;11820:1;11802:20;:::i;:::-;11797:25;;11836:20;11854:1;11836:20;:::i;:::-;11831:25;;11875:1;11865:35;;11880:18;;:::i;:::-;11865:35;11922:1;11919;11915:9;11910:14;;11745:185;;;;:::o;11936:234::-;12076:34;12072:1;12064:6;12060:14;12053:58;12145:17;12140:2;12132:6;12128:15;12121:42;11936:234;:::o;12176:366::-;12318:3;12339:67;12403:2;12398:3;12339:67;:::i;:::-;12332:74;;12415:93;12504:3;12415:93;:::i;:::-;12533:2;12528:3;12524:12;12517:19;;12176:366;;;:::o;12548:419::-;12714:4;12752:2;12741:9;12737:18;12729:26;;12801:9;12795:4;12791:20;12787:1;12776:9;12772:17;12765:47;12829:131;12955:4;12829:131;:::i;:::-;12821:139;;12548:419;;;:::o;12973:178::-;13113:30;13109:1;13101:6;13097:14;13090:54;12973:178;:::o;13157:366::-;13299:3;13320:67;13384:2;13379:3;13320:67;:::i;:::-;13313:74;;13396:93;13485:3;13396:93;:::i;:::-;13514:2;13509:3;13505:12;13498:19;;13157:366;;;:::o;13529:419::-;13695:4;13733:2;13722:9;13718:18;13710:26;;13782:9;13776:4;13772:20;13768:1;13757:9;13753:17;13746:47;13810:131;13936:4;13810:131;:::i;:::-;13802:139;;13529:419;;;:::o;13954:143::-;14011:5;14042:6;14036:13;14027:22;;14058:33;14085:5;14058:33;:::i;:::-;13954:143;;;;:::o;14103:351::-;14173:6;14222:2;14210:9;14201:7;14197:23;14193:32;14190:119;;;14228:79;;:::i;:::-;14190:119;14348:1;14373:64;14429:7;14420:6;14409:9;14405:22;14373:64;:::i;:::-;14363:74;;14319:128;14103:351;;;;:::o;14460:332::-;14581:4;14619:2;14608:9;14604:18;14596:26;;14632:71;14700:1;14689:9;14685:17;14676:6;14632:71;:::i;:::-;14713:72;14781:2;14770:9;14766:18;14757:6;14713:72;:::i;:::-;14460:332;;;;;:::o;14798:137::-;14852:5;14883:6;14877:13;14868:22;;14899:30;14923:5;14899:30;:::i;:::-;14798:137;;;;:::o;14941:345::-;15008:6;15057:2;15045:9;15036:7;15032:23;15028:32;15025:119;;;15063:79;;:::i;:::-;15025:119;15183:1;15208:61;15261:7;15252:6;15241:9;15237:22;15208:61;:::i;:::-;15198:71;;15154:125;14941:345;;;;:::o;15292:191::-;15332:3;15351:20;15369:1;15351:20;:::i;:::-;15346:25;;15385:20;15403:1;15385:20;:::i;:::-;15380:25;;15428:1;15425;15421:9;15414:16;;15449:3;15446:1;15443:10;15440:36;;;15456:18;;:::i;:::-;15440:36;15292:191;;;;:::o;15489:179::-;15629:31;15625:1;15617:6;15613:14;15606:55;15489:179;:::o;15674:366::-;15816:3;15837:67;15901:2;15896:3;15837:67;:::i;:::-;15830:74;;15913:93;16002:3;15913:93;:::i;:::-;16031:2;16026:3;16022:12;16015:19;;15674:366;;;:::o;16046:419::-;16212:4;16250:2;16239:9;16235:18;16227:26;;16299:9;16293:4;16289:20;16285:1;16274:9;16270:17;16263:47;16327:131;16453:4;16327:131;:::i;:::-;16319:139;;16046:419;;;:::o;16471:244::-;16611:34;16607:1;16599:6;16595:14;16588:58;16680:27;16675:2;16667:6;16663:15;16656:52;16471:244;:::o;16721:366::-;16863:3;16884:67;16948:2;16943:3;16884:67;:::i;:::-;16877:74;;16960:93;17049:3;16960:93;:::i;:::-;17078:2;17073:3;17069:12;17062:19;;16721:366;;;:::o;17093:419::-;17259:4;17297:2;17286:9;17282:18;17274:26;;17346:9;17340:4;17336:20;17332:1;17321:9;17317:17;17310:47;17374:131;17500:4;17374:131;:::i;:::-;17366:139;;17093:419;;;:::o;17518:223::-;17658:34;17654:1;17646:6;17642:14;17635:58;17727:6;17722:2;17714:6;17710:15;17703:31;17518:223;:::o;17747:366::-;17889:3;17910:67;17974:2;17969:3;17910:67;:::i;:::-;17903:74;;17986:93;18075:3;17986:93;:::i;:::-;18104:2;18099:3;18095:12;18088:19;;17747:366;;;:::o;18119:419::-;18285:4;18323:2;18312:9;18308:18;18300:26;;18372:9;18366:4;18362:20;18358:1;18347:9;18343:17;18336:47;18400:131;18526:4;18400:131;:::i;:::-;18392:139;;18119:419;;;:::o;18544:240::-;18684:34;18680:1;18672:6;18668:14;18661:58;18753:23;18748:2;18740:6;18736:15;18729:48;18544:240;:::o;18790:366::-;18932:3;18953:67;19017:2;19012:3;18953:67;:::i;:::-;18946:74;;19029:93;19118:3;19029:93;:::i;:::-;19147:2;19142:3;19138:12;19131:19;;18790:366;;;:::o;19162:419::-;19328:4;19366:2;19355:9;19351:18;19343:26;;19415:9;19409:4;19405:20;19401:1;19390:9;19386:17;19379:47;19443:131;19569:4;19443:131;:::i;:::-;19435:139;;19162:419;;;:::o;19587:239::-;19727:34;19723:1;19715:6;19711:14;19704:58;19796:22;19791:2;19783:6;19779:15;19772:47;19587:239;:::o;19832:366::-;19974:3;19995:67;20059:2;20054:3;19995:67;:::i;:::-;19988:74;;20071:93;20160:3;20071:93;:::i;:::-;20189:2;20184:3;20180:12;20173:19;;19832:366;;;:::o;20204:419::-;20370:4;20408:2;20397:9;20393:18;20385:26;;20457:9;20451:4;20447:20;20443:1;20432:9;20428:17;20421:47;20485:131;20611:4;20485:131;:::i;:::-;20477:139;;20204:419;;;:::o;20629:225::-;20769:34;20765:1;20757:6;20753:14;20746:58;20838:8;20833:2;20825:6;20821:15;20814:33;20629:225;:::o;20860:366::-;21002:3;21023:67;21087:2;21082:3;21023:67;:::i;:::-;21016:74;;21099:93;21188:3;21099:93;:::i;:::-;21217:2;21212:3;21208:12;21201:19;;20860:366;;;:::o;21232:419::-;21398:4;21436:2;21425:9;21421:18;21413:26;;21485:9;21479:4;21475:20;21471:1;21460:9;21456:17;21449:47;21513:131;21639:4;21513:131;:::i;:::-;21505:139;;21232:419;;;:::o;21657:223::-;21797:34;21793:1;21785:6;21781:14;21774:58;21866:6;21861:2;21853:6;21849:15;21842:31;21657:223;:::o;21886:366::-;22028:3;22049:67;22113:2;22108:3;22049:67;:::i;:::-;22042:74;;22125:93;22214:3;22125:93;:::i;:::-;22243:2;22238:3;22234:12;22227:19;;21886:366;;;:::o;22258:419::-;22424:4;22462:2;22451:9;22447:18;22439:26;;22511:9;22505:4;22501:20;22497:1;22486:9;22482:17;22475:47;22539:131;22665:4;22539:131;:::i;:::-;22531:139;;22258:419;;;:::o;22683:221::-;22823:34;22819:1;22811:6;22807:14;22800:58;22892:4;22887:2;22879:6;22875:15;22868:29;22683:221;:::o;22910:366::-;23052:3;23073:67;23137:2;23132:3;23073:67;:::i;:::-;23066:74;;23149:93;23238:3;23149:93;:::i;:::-;23267:2;23262:3;23258:12;23251:19;;22910:366;;;:::o;23282:419::-;23448:4;23486:2;23475:9;23471:18;23463:26;;23535:9;23529:4;23525:20;23521:1;23510:9;23506:17;23499:47;23563:131;23689:4;23563:131;:::i;:::-;23555:139;;23282:419;;;:::o;23707:224::-;23847:34;23843:1;23835:6;23831:14;23824:58;23916:7;23911:2;23903:6;23899:15;23892:32;23707:224;:::o;23937:366::-;24079:3;24100:67;24164:2;24159:3;24100:67;:::i;:::-;24093:74;;24176:93;24265:3;24176:93;:::i;:::-;24294:2;24289:3;24285:12;24278:19;;23937:366;;;:::o;24309:419::-;24475:4;24513:2;24502:9;24498:18;24490:26;;24562:9;24556:4;24552:20;24548:1;24537:9;24533:17;24526:47;24590:131;24716:4;24590:131;:::i;:::-;24582:139;;24309:419;;;:::o;24734:222::-;24874:34;24870:1;24862:6;24858:14;24851:58;24943:5;24938:2;24930:6;24926:15;24919:30;24734:222;:::o;24962:366::-;25104:3;25125:67;25189:2;25184:3;25125:67;:::i;:::-;25118:74;;25201:93;25290:3;25201:93;:::i;:::-;25319:2;25314:3;25310:12;25303:19;;24962:366;;;:::o;25334:419::-;25500:4;25538:2;25527:9;25523:18;25515:26;;25587:9;25581:4;25577:20;25573:1;25562:9;25558:17;25551:47;25615:131;25741:4;25615:131;:::i;:::-;25607:139;;25334:419;;;:::o;25759:172::-;25899:24;25895:1;25887:6;25883:14;25876:48;25759:172;:::o;25937:366::-;26079:3;26100:67;26164:2;26159:3;26100:67;:::i;:::-;26093:74;;26176:93;26265:3;26176:93;:::i;:::-;26294:2;26289:3;26285:12;26278:19;;25937:366;;;:::o;26309:419::-;26475:4;26513:2;26502:9;26498:18;26490:26;;26562:9;26556:4;26552:20;26548:1;26537:9;26533:17;26526:47;26590:131;26716:4;26590:131;:::i;:::-;26582:139;;26309:419;;;:::o;26734:240::-;26874:34;26870:1;26862:6;26858:14;26851:58;26943:23;26938:2;26930:6;26926:15;26919:48;26734:240;:::o;26980:366::-;27122:3;27143:67;27207:2;27202:3;27143:67;:::i;:::-;27136:74;;27219:93;27308:3;27219:93;:::i;:::-;27337:2;27332:3;27328:12;27321:19;;26980:366;;;:::o;27352:419::-;27518:4;27556:2;27545:9;27541:18;27533:26;;27605:9;27599:4;27595:20;27591:1;27580:9;27576:17;27569:47;27633:131;27759:4;27633:131;:::i;:::-;27625:139;;27352:419;;;:::o;27777:169::-;27917:21;27913:1;27905:6;27901:14;27894:45;27777:169;:::o;27952:366::-;28094:3;28115:67;28179:2;28174:3;28115:67;:::i;:::-;28108:74;;28191:93;28280:3;28191:93;:::i;:::-;28309:2;28304:3;28300:12;28293:19;;27952:366;;;:::o;28324:419::-;28490:4;28528:2;28517:9;28513:18;28505:26;;28577:9;28571:4;28567:20;28563:1;28552:9;28548:17;28541:47;28605:131;28731:4;28605:131;:::i;:::-;28597:139;;28324:419;;;:::o;28749:241::-;28889:34;28885:1;28877:6;28873:14;28866:58;28958:24;28953:2;28945:6;28941:15;28934:49;28749:241;:::o;28996:366::-;29138:3;29159:67;29223:2;29218:3;29159:67;:::i;:::-;29152:74;;29235:93;29324:3;29235:93;:::i;:::-;29353:2;29348:3;29344:12;29337:19;;28996:366;;;:::o;29368:419::-;29534:4;29572:2;29561:9;29557:18;29549:26;;29621:9;29615:4;29611:20;29607:1;29596:9;29592:17;29585:47;29649:131;29775:4;29649:131;:::i;:::-;29641:139;;29368:419;;;:::o;29793:194::-;29833:4;29853:20;29871:1;29853:20;:::i;:::-;29848:25;;29887:20;29905:1;29887:20;:::i;:::-;29882:25;;29931:1;29928;29924:9;29916:17;;29955:1;29949:4;29946:11;29943:37;;;29960:18;;:::i;:::-;29943:37;29793:194;;;;:::o;29993:177::-;30133:29;30129:1;30121:6;30117:14;30110:53;29993:177;:::o;30176:366::-;30318:3;30339:67;30403:2;30398:3;30339:67;:::i;:::-;30332:74;;30415:93;30504:3;30415:93;:::i;:::-;30533:2;30528:3;30524:12;30517:19;;30176:366;;;:::o;30548:419::-;30714:4;30752:2;30741:9;30737:18;30729:26;;30801:9;30795:4;30791:20;30787:1;30776:9;30772:17;30765:47;30829:131;30955:4;30829:131;:::i;:::-;30821:139;;30548:419;;;:::o;30973:442::-;31122:4;31160:2;31149:9;31145:18;31137:26;;31173:71;31241:1;31230:9;31226:17;31217:6;31173:71;:::i;:::-;31254:72;31322:2;31311:9;31307:18;31298:6;31254:72;:::i;:::-;31336;31404:2;31393:9;31389:18;31380:6;31336:72;:::i;:::-;30973:442;;;;;;:::o;31421:147::-;31522:11;31559:3;31544:18;;31421:147;;;;:::o;31574:114::-;;:::o;31694:398::-;31853:3;31874:83;31955:1;31950:3;31874:83;:::i;:::-;31867:90;;31966:93;32055:3;31966:93;:::i;:::-;32084:1;32079:3;32075:11;32068:18;;31694:398;;;:::o;32098:379::-;32282:3;32304:147;32447:3;32304:147;:::i;:::-;32297:154;;32468:3;32461:10;;32098:379;;;:::o;32483:220::-;32623:34;32619:1;32611:6;32607:14;32600:58;32692:3;32687:2;32679:6;32675:15;32668:28;32483:220;:::o;32709:366::-;32851:3;32872:67;32936:2;32931:3;32872:67;:::i;:::-;32865:74;;32948:93;33037:3;32948:93;:::i;:::-;33066:2;33061:3;33057:12;33050:19;;32709:366;;;:::o;33081:419::-;33247:4;33285:2;33274:9;33270:18;33262:26;;33334:9;33328:4;33324:20;33320:1;33309:9;33305:17;33298:47;33362:131;33488:4;33362:131;:::i;:::-;33354:139;;33081:419;;;:::o;33506:180::-;33554:77;33551:1;33544:88;33651:4;33648:1;33641:15;33675:4;33672:1;33665:15;33692:180;33740:77;33737:1;33730:88;33837:4;33834:1;33827:15;33861:4;33858:1;33851:15;33878:143;33935:5;33966:6;33960:13;33951:22;;33982:33;34009:5;33982:33;:::i;:::-;33878:143;;;;:::o;34027:351::-;34097:6;34146:2;34134:9;34125:7;34121:23;34117:32;34114:119;;;34152:79;;:::i;:::-;34114:119;34272:1;34297:64;34353:7;34344:6;34333:9;34329:22;34297:64;:::i;:::-;34287:74;;34243:128;34027:351;;;;:::o;34384:85::-;34429:7;34458:5;34447:16;;34384:85;;;:::o;34475:158::-;34533:9;34566:61;34584:42;34593:32;34619:5;34593:32;:::i;:::-;34584:42;:::i;:::-;34566:61;:::i;:::-;34553:74;;34475:158;;;:::o;34639:147::-;34734:45;34773:5;34734:45;:::i;:::-;34729:3;34722:58;34639:147;;:::o;34792:114::-;34859:6;34893:5;34887:12;34877:22;;34792:114;;;:::o;34912:184::-;35011:11;35045:6;35040:3;35033:19;35085:4;35080:3;35076:14;35061:29;;34912:184;;;;:::o;35102:132::-;35169:4;35192:3;35184:11;;35222:4;35217:3;35213:14;35205:22;;35102:132;;;:::o;35240:108::-;35317:24;35335:5;35317:24;:::i;:::-;35312:3;35305:37;35240:108;;:::o;35354:179::-;35423:10;35444:46;35486:3;35478:6;35444:46;:::i;:::-;35522:4;35517:3;35513:14;35499:28;;35354:179;;;;:::o;35539:113::-;35609:4;35641;35636:3;35632:14;35624:22;;35539:113;;;:::o;35688:732::-;35807:3;35836:54;35884:5;35836:54;:::i;:::-;35906:86;35985:6;35980:3;35906:86;:::i;:::-;35899:93;;36016:56;36066:5;36016:56;:::i;:::-;36095:7;36126:1;36111:284;36136:6;36133:1;36130:13;36111:284;;;36212:6;36206:13;36239:63;36298:3;36283:13;36239:63;:::i;:::-;36232:70;;36325:60;36378:6;36325:60;:::i;:::-;36315:70;;36171:224;36158:1;36155;36151:9;36146:14;;36111:284;;;36115:14;36411:3;36404:10;;35812:608;;;35688:732;;;;:::o;36426:831::-;36689:4;36727:3;36716:9;36712:19;36704:27;;36741:71;36809:1;36798:9;36794:17;36785:6;36741:71;:::i;:::-;36822:80;36898:2;36887:9;36883:18;36874:6;36822:80;:::i;:::-;36949:9;36943:4;36939:20;36934:2;36923:9;36919:18;36912:48;36977:108;37080:4;37071:6;36977:108;:::i;:::-;36969:116;;37095:72;37163:2;37152:9;37148:18;37139:6;37095:72;:::i;:::-;37177:73;37245:3;37234:9;37230:19;37221:6;37177:73;:::i;:::-;36426:831;;;;;;;;:::o;37263:807::-;37512:4;37550:3;37539:9;37535:19;37527:27;;37564:71;37632:1;37621:9;37617:17;37608:6;37564:71;:::i;:::-;37645:72;37713:2;37702:9;37698:18;37689:6;37645:72;:::i;:::-;37727:80;37803:2;37792:9;37788:18;37779:6;37727:80;:::i;:::-;37817;37893:2;37882:9;37878:18;37869:6;37817:80;:::i;:::-;37907:73;37975:3;37964:9;37960:19;37951:6;37907:73;:::i;:::-;37990;38058:3;38047:9;38043:19;38034:6;37990:73;:::i;:::-;37263:807;;;;;;;;;:::o;38076:663::-;38164:6;38172;38180;38229:2;38217:9;38208:7;38204:23;38200:32;38197:119;;;38235:79;;:::i;:::-;38197:119;38355:1;38380:64;38436:7;38427:6;38416:9;38412:22;38380:64;:::i;:::-;38370:74;;38326:128;38493:2;38519:64;38575:7;38566:6;38555:9;38551:22;38519:64;:::i;:::-;38509:74;;38464:129;38632:2;38658:64;38714:7;38705:6;38694:9;38690:22;38658:64;:::i;:::-;38648:74;;38603:129;38076:663;;;;;:::o
Swarm Source
ipfs://6efe9222e95253ff88c10ac710e7455538680307b442b20f2602147a5d30f759
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.