ERC-20
Overview
Max Total Supply
100,000,000,000 TWINK
Holders
442
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
1,212,658.238366040970266165 TWINKValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
TWINK
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-10-01 */ // SPDX-License-Identifier: MIT /* TWINK Hey, darlings! I’m Twink from Matt Furie, the most glam and daring girl on #ETH. I’m here to shake up with $TWINK, a meme as spicy as me. Ready to shine! Website: https://twinkspicy.fun/ Twitter / X: https://x.com/TwinkSpicyEth Telegram: https://t.me/TwinkSpicyETH */ pragma solidity 0.8.17; pragma experimental ABIEncoderV2; // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) // pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) // pragma solidity ^0.8.0; // import "../utils/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * onlyOwner, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * onlyOwner functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (newOwner). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (newOwner). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol) // pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when value tokens are moved from one account (from) to * another (to). * * Note that value may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a spender for an owner is set by * a call to {approve}. value is the new allowance. */ event Approval( address indexed owner, address indexed spender, uint256 value ); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by account. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves amount tokens from the caller's account to to. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that spender will be * allowed to spend on behalf of owner through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets amount as the allowance of spender over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves amount tokens from from to to using the * allowance mechanism. amount is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 amount ) external returns (bool); } // OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol) // pragma solidity ^0.8.0; // import "../IERC20.sol"; /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } // OpenZeppelin Contracts (last updated v4.8.0) (token/ERC20/ERC20.sol) // pragma solidity ^0.8.0; // import "./IERC20.sol"; // import "./extensions/IERC20Metadata.sol"; // import "../../utils/Context.sol"; /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * For a generic mechanism see {ERC20PresetMinterPauser}. * * TIP: For a detailed writeup see our guide * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * The default value of {decimals} is 18. To change this, you should override * this function so it returns a different value. * * We have followed general OpenZeppelin Contracts guidelines: functions revert * instead returning false on failure. This behavior is nonetheless * conventional and does not conflict with the expectations of ERC20 * applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if decimals equals 2, a balance of 505 tokens should * be displayed to a user as 5.05 (505 / 10 ** 2). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the default value returned by this function, unless * it's overridden. * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - to cannot be the zero address. * - the caller must have a balance of at least amount. */ function transfer(address to, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * NOTE: If amount is the maximum uint256, the allowance is not updated on * transferFrom. This is semantically equivalent to an infinite approval. * * Requirements: * * - spender cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _approve(owner, spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * NOTE: Does not update the allowance if the current allowance * is the maximum uint256. * * Requirements: * * - from and to cannot be the zero address. * - from must have a balance of at least amount. * - the caller must have allowance for `from's tokens of at least * amount. */ function transferFrom( address from, address to, uint256 amount ) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true; } /** * @dev Atomically increases the allowance granted to spender by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - spender cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, allowance(owner, spender) + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to spender by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - spender cannot be the zero address. * - spender must have allowance for the caller of at least * subtractedValue. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { address owner = _msgSender(); uint256 currentAllowance = allowance(owner, spender); require( currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero" ); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves amount of tokens from from to to. * * This internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - from cannot be the zero address. * - to cannot be the zero address. * - from must have a balance of at least amount. */ function _transfer( address from, address to, uint256 amount ) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(from, to, amount); uint256 fromBalance = _balances[from]; require( fromBalance >= amount, "ERC20: transfer amount exceeds balance" ); unchecked { _balances[from] = fromBalance - amount; // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by // decrementing then incrementing. _balances[to] += amount; } emit Transfer(from, to, amount); _afterTokenTransfer(from, to, amount); } /** @dev Creates amount tokens and assigns them to account, increasing * the total supply. * * Emits a {Transfer} event with from set to the zero address. * * Requirements: * * - account cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; unchecked { // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above. _balances[account] += amount; } emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } /** * @dev Destroys amount tokens from account, reducing the * total supply. * * Emits a {Transfer} event with to set to the zero address. * * Requirements: * * - account cannot be the zero address. * - account must have at least amount tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; // Overflow not possible: amount <= accountBalance <= totalSupply. _totalSupply -= amount; } emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } /** * @dev Sets amount as the allowance of spender over the owner s tokens. * * This internal function is equivalent to approve, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - owner cannot be the zero address. * - spender cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Updates owner s allowance for spender based on spent amount. * * Does not update the allowance amount in case of infinite allowance. * Revert if not enough allowance is available. * * Might emit an {Approval} event. */ function _spendAllowance( address owner, address spender, uint256 amount ) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require( currentAllowance >= amount, "ERC20: insufficient allowance" ); unchecked { _approve(owner, spender, currentAllowance - amount); } } } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when from and to are both non-zero, amount of `from's tokens * will be transferred to to. * - when from is zero, amount tokens will be minted for to. * - when to is zero, amount of `from's tokens will be burned. * - from and to are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when from and to are both non-zero, amount of `from's tokens * has been transferred to to. * - when from is zero, amount tokens have been minted for to. * - when to is zero, amount of `from's tokens have been burned. * - from and to are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } // OpenZeppelin Contracts (last updated v4.6.0) (utils/math/SafeMath.sol) // pragma solidity ^0.8.0; // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: SafeMath is generally not needed starting with Solidity 0.8, since the compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the subtraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // 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 (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's + operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @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 a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's * operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's / operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's % operator. This function uses a revert * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's - operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * 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) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's % operator. This function uses a revert * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } // pragma solidity >=0.5.0; interface IUniswapV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); 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(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } // pragma solidity >=0.6.2; interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function removeLiquidity( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETH( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountToken, uint256 amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETHWithPermit( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountToken, uint256 amountETH); function swapExactTokensForTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapTokensForExactTokens( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactETHForTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function swapTokensForExactETH( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactTokensForETH( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapETHForExactTokens( uint256 amountOut, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function quote( uint256 amountA, uint256 reserveA, uint256 reserveB ) external pure returns (uint256 amountB); function getAmountOut( uint256 amountIn, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountOut); function getAmountIn( uint256 amountOut, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountIn); function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts); function getAmountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts); } // pragma solidity >=0.6.2; // import './IUniswapV2Router01.sol'; interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } contract TWINK is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public uniswapV2Pair; address public marketingWallet; address public developmentWallet; address public liquidityWallet; address public constant deadAddress = address(0xdead); bool public tradingActive; bool public swapEnabled; bool private _swapping; uint256 public maxTransaction; uint256 public maxWallet; uint256 public swapTokensAtAmount; uint256 public buyTotalFees; uint256 private _buyMarketingFee; uint256 private _buyDevelopmentFee; uint256 private _buyLiquidityFee; uint256 public sellTotalFees; uint256 private _sellMarketingFee; uint256 private _sellDevelopmentFee; uint256 private _sellLiquidityFee; uint256 private _tokensForMarketing; uint256 private _tokensForDevelopment; uint256 private _tokensForLiquidity; uint256 private _previousFee; mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) private _isExcludedFromMaxTransaction; mapping(address => bool) private _automatedMarketMakerPairs; event ExcludeFromLimits(address indexed account, bool isExcluded); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event marketingWalletUpdated( address indexed newWallet, address indexed oldWallet ); event developmentWalletUpdated( address indexed newWallet, address indexed oldWallet ); event liquidityWalletUpdated( address indexed newWallet, address indexed oldWallet ); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); constructor() ERC20("Twink", "TWINK") { uint256 totalSupply = 100_000_000_000 ether; address TwinkWallet = 0x44d4D9a21A0B548596f0D91261F44Dd024bbD106; uniswapV2Router = IUniswapV2Router02( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); _approve(address(this), address(uniswapV2Router), type(uint256).max); maxTransaction = totalSupply; maxWallet = totalSupply; swapTokensAtAmount = (totalSupply * 1) / 1000; _buyMarketingFee = 0; _buyDevelopmentFee = 0; _buyLiquidityFee = 0; buyTotalFees = _buyMarketingFee + _buyDevelopmentFee + _buyLiquidityFee; _sellMarketingFee = 0; _sellDevelopmentFee = 0; _sellLiquidityFee = 0; sellTotalFees = _sellMarketingFee + _sellDevelopmentFee + _sellLiquidityFee; _previousFee = sellTotalFees; marketingWallet = TwinkWallet; developmentWallet = TwinkWallet; liquidityWallet = TwinkWallet; excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(deadAddress, true); excludeFromFees(TwinkWallet, true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(deadAddress, true); excludeFromMaxTransaction(address(uniswapV2Router), true); excludeFromMaxTransaction(TwinkWallet, true); _mint(owner(), totalSupply); } receive() external payable {} function burn(uint256 amount) public { _burn(msg.sender, amount); } function aStarIsBorn() public onlyOwner { require(!tradingActive, "Trading already active."); uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair( address(this), uniswapV2Router.WETH() ); _approve(address(this), address(uniswapV2Pair), type(uint256).max); IERC20(uniswapV2Pair).approve( address(uniswapV2Router), type(uint256).max ); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); excludeFromMaxTransaction(address(uniswapV2Pair), true); uniswapV2Router.addLiquidityETH{value: address(this).balance}( address(this), balanceOf(address(this)), 0, 0, owner(), block.timestamp ); } function dance() public onlyOwner { require(!tradingActive, "Trading already active."); tradingActive = true; swapEnabled = true; } function setSwapEnabled(bool value) public onlyOwner { swapEnabled = value; } function setSwapTokensAtAmount(uint256 amount) public onlyOwner { require( amount >= (totalSupply() * 1) / 100000, "ERC20: Swap amount cannot be lower than 0.001% total supply." ); require( amount <= (totalSupply() * 5) / 1000, "ERC20: Swap amount cannot be higher than 0.5% total supply." ); swapTokensAtAmount = amount; } function setMaxWalletAndMaxTransaction( uint256 _maxTransaction, uint256 _maxWallet ) public onlyOwner { require( _maxTransaction >= ((totalSupply() * 5) / 1000), "ERC20: Cannot set maxTxn lower than 0.5%" ); require( _maxWallet >= ((totalSupply() * 5) / 1000), "ERC20: Cannot set maxWallet lower than 0.5%" ); maxTransaction = _maxTransaction; maxWallet = _maxWallet; } function setBuyFees( uint256 _marketingFee, uint256 _developmentFee, uint256 _liquidityFee ) public onlyOwner { require( _marketingFee + _developmentFee + _liquidityFee <= 300, "ERC20: Must keep fees at 3% or less" ); _buyMarketingFee = _marketingFee; _buyDevelopmentFee = _developmentFee; _buyLiquidityFee = _liquidityFee; buyTotalFees = _buyMarketingFee + _buyDevelopmentFee + _buyLiquidityFee; } function setSellFees( uint256 _marketingFee, uint256 _developmentFee, uint256 _liquidityFee ) public onlyOwner { require( _marketingFee + _developmentFee + _liquidityFee <= 300, "ERC20: Must keep fees at 3% or less" ); _sellMarketingFee = _marketingFee; _sellDevelopmentFee = _developmentFee; _sellLiquidityFee = _liquidityFee; sellTotalFees = _sellMarketingFee + _sellDevelopmentFee + _sellLiquidityFee; _previousFee = sellTotalFees; } function setMarketingWallet(address _marketingWallet) public onlyOwner { require(_marketingWallet != address(0), "ERC20: Address 0"); address oldWallet = marketingWallet; marketingWallet = _marketingWallet; emit marketingWalletUpdated(marketingWallet, oldWallet); } function setDevelopmentWallet(address _developmentWallet) public onlyOwner { require(_developmentWallet != address(0), "ERC20: Address 0"); address oldWallet = developmentWallet; developmentWallet = _developmentWallet; emit developmentWalletUpdated(developmentWallet, oldWallet); } function setLiquidityWallet(address _liquidityWallet) public onlyOwner { require(_liquidityWallet != address(0), "ERC20: Address 0"); address oldWallet = liquidityWallet; liquidityWallet = _liquidityWallet; emit liquidityWalletUpdated(liquidityWallet, oldWallet); } function excludeFromMaxTransaction(address account, bool value) public onlyOwner { _isExcludedFromMaxTransaction[account] = value; emit ExcludeFromLimits(account, value); } function bulkExcludeFromMaxTransaction( address[] calldata accounts, bool value ) public onlyOwner { for (uint256 i = 0; i < accounts.length; i++) { _isExcludedFromMaxTransaction[accounts[i]] = value; emit ExcludeFromLimits(accounts[i], value); } } function excludeFromFees(address account, bool value) public onlyOwner { _isExcludedFromFees[account] = value; emit ExcludeFromFees(account, value); } function bulkExcludeFromFees(address[] calldata accounts, bool value) public onlyOwner { for (uint256 i = 0; i < accounts.length; i++) { _isExcludedFromFees[accounts[i]] = value; emit ExcludeFromFees(accounts[i], value); } } function withdrawStuckTokens(address tkn) public onlyOwner { bool success; if (tkn == address(0)) (success, ) = address(msg.sender).call{ value: address(this).balance }(""); else { require(IERC20(tkn).balanceOf(address(this)) > 0, "No tokens"); uint256 amount = IERC20(tkn).balanceOf(address(this)); IERC20(tkn).transfer(msg.sender, amount); } } function isExcludedFromMaxTransaction(address account) public view returns (bool) { return _isExcludedFromMaxTransaction[account]; } function isExcludedFromFees(address account) public view returns (bool) { return _isExcludedFromFees[account]; } function _setAutomatedMarketMakerPair(address pair, bool value) internal { _automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } 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 != deadAddress && !_swapping ) { if (!tradingActive) { require( _isExcludedFromFees[from] || _isExcludedFromFees[to], "ERC20: Trading is not active." ); } //when buy if ( _automatedMarketMakerPairs[from] && !_isExcludedFromMaxTransaction[to] ) { require( amount <= maxTransaction, "ERC20: Buy transfer amount exceeds the maxTransaction." ); require( amount + balanceOf(to) <= maxWallet, "ERC20: Max wallet exceeded" ); } //when sell else if ( _automatedMarketMakerPairs[to] && !_isExcludedFromMaxTransaction[from] ) { require( amount <= maxTransaction, "ERC20: Sell transfer amount exceeds the maxTransaction." ); } else if (!_isExcludedFromMaxTransaction[to]) { require( amount + balanceOf(to) <= maxWallet, "ERC20: Max wallet exceeded" ); } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if ( canSwap && swapEnabled && !_swapping && !_automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { _swapping = true; _swapBack(); _swapping = false; } bool takeFee = !_swapping; if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; if (takeFee) { // on sell if (_automatedMarketMakerPairs[to] && sellTotalFees > 0) { fees = amount.mul(sellTotalFees).div(10000); _tokensForLiquidity += (fees * _sellLiquidityFee) / sellTotalFees; _tokensForMarketing += (fees * _sellMarketingFee) / sellTotalFees; _tokensForDevelopment += (fees * _sellDevelopmentFee) / sellTotalFees; } // on buy else if (_automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount.mul(buyTotalFees).div(10000); _tokensForLiquidity += (fees * _buyLiquidityFee) / buyTotalFees; _tokensForMarketing += (fees * _buyMarketingFee) / buyTotalFees; _tokensForDevelopment += (fees * _buyDevelopmentFee) / buyTotalFees; } if (fees > 0) { super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); sellTotalFees = _previousFee; } function _swapTokensForETH(uint256 tokenAmount) internal { 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, path, address(this), block.timestamp ); } function _addLiquidity(uint256 tokenAmount, uint256 ethAmount) internal { _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, 0, liquidityWallet, block.timestamp ); } function _swapBack() internal { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = _tokensForLiquidity + _tokensForMarketing + _tokensForDevelopment; bool success; if (contractBalance == 0 || totalTokensToSwap == 0) { return; } if (contractBalance > swapTokensAtAmount * 10) { contractBalance = swapTokensAtAmount * 10; } 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 ethForDevelopment = ethBalance.mul(_tokensForDevelopment).div( totalTokensToSwap ); uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDevelopment; _tokensForLiquidity = 0; _tokensForMarketing = 0; _tokensForDevelopment = 0; if (liquidityTokens > 0 && ethForLiquidity > 0) { _addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify( amountToSwapForETH, ethForLiquidity, _tokensForLiquidity ); } (success, ) = address(developmentWallet).call{value: ethForDevelopment}( "" ); (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":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromLimits","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":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"developmentWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"liquidityWalletUpdated","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":[],"name":"aStarIsBorn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"value","type":"bool"}],"name":"bulkExcludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"value","type":"bool"}],"name":"bulkExcludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"developmentWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","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":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromMaxTransaction","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransaction","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":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_developmentFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"setBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_developmentWallet","type":"address"}],"name":"setDevelopmentWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_liquidityWallet","type":"address"}],"name":"setLiquidityWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTransaction","type":"uint256"},{"internalType":"uint256","name":"_maxWallet","type":"uint256"}],"name":"setMaxWalletAndMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_developmentFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"setSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setSwapTokensAtAmount","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":"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":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"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":"address","name":"tkn","type":"address"}],"name":"withdrawStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a06040523480156200001157600080fd5b506040518060400160405280600581526020017f5477696e6b0000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f5457494e4b00000000000000000000000000000000000000000000000000000081525081600390816200008f919062000ca1565b508060049081620000a1919062000ca1565b505050620000c4620000b8620003e060201b60201c565b620003e860201b60201c565b60006c01431e0fae6d7217caa0000000905060007344d4d9a21a0b548596f0d91261f44dd024bbd1069050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250506200016c306080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff620004ae60201b60201c565b81600a8190555081600b819055506103e86001836200018c919062000db7565b62000198919062000e31565b600c819055506000600e819055506000600f819055506000601081905550601054600f54600e54620001cb919062000e69565b620001d7919062000e69565b600d819055506000601281905550600060138190555060006014819055506014546013546012546200020a919062000e69565b62000216919062000e69565b60118190555060115460188190555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200030a620002fc6200067f60201b60201c565b6001620006a960201b60201c565b6200031d306001620006a960201b60201c565b6200033261dead6001620006a960201b60201c565b62000345816001620006a960201b60201c565b62000367620003596200067f60201b60201c565b60016200076460201b60201c565b6200037a3060016200076460201b60201c565b6200038f61dead60016200076460201b60201c565b620003a460805160016200076460201b60201c565b620003b78160016200076460201b60201c565b620003d8620003cb6200067f60201b60201c565b836200081f60201b60201c565b505062001131565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000520576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005179062000f2b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000592576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005899062000fc3565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000672919062000ff6565b60405180910390a3505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620006b96200098c60201b60201c565b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000758919062001030565b60405180910390a25050565b620007746200098c60201b60201c565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f4b89c347592b1d537e066cb4ed98d87696ae35164745d7e370e4add16941dc928260405162000813919062001030565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000891576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000888906200109d565b60405180910390fd5b620008a56000838362000a1d60201b60201c565b8060026000828254620008b9919062000e69565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200096c919062000ff6565b60405180910390a3620009886000838362000a2260201b60201c565b5050565b6200099c620003e060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620009c26200067f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000a1b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a12906200110f565b60405180910390fd5b565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000aa957607f821691505b60208210810362000abf5762000abe62000a61565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000b297fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000aea565b62000b35868362000aea565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000b8262000b7c62000b768462000b4d565b62000b57565b62000b4d565b9050919050565b6000819050919050565b62000b9e8362000b61565b62000bb662000bad8262000b89565b84845462000af7565b825550505050565b600090565b62000bcd62000bbe565b62000bda81848462000b93565b505050565b5b8181101562000c025762000bf660008262000bc3565b60018101905062000be0565b5050565b601f82111562000c515762000c1b8162000ac5565b62000c268462000ada565b8101602085101562000c36578190505b62000c4e62000c458562000ada565b83018262000bdf565b50505b505050565b600082821c905092915050565b600062000c766000198460080262000c56565b1980831691505092915050565b600062000c91838362000c63565b9150826002028217905092915050565b62000cac8262000a27565b67ffffffffffffffff81111562000cc85762000cc762000a32565b5b62000cd4825462000a90565b62000ce182828562000c06565b600060209050601f83116001811462000d19576000841562000d04578287015190505b62000d10858262000c83565b86555062000d80565b601f19841662000d298662000ac5565b60005b8281101562000d535784890151825560018201915060208501945060208101905062000d2c565b8683101562000d73578489015162000d6f601f89168262000c63565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000dc48262000b4d565b915062000dd18362000b4d565b925082820262000de18162000b4d565b9150828204841483151762000dfb5762000dfa62000d88565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000e3e8262000b4d565b915062000e4b8362000b4d565b92508262000e5e5762000e5d62000e02565b5b828204905092915050565b600062000e768262000b4d565b915062000e838362000b4d565b925082820190508082111562000e9e5762000e9d62000d88565b5b92915050565b600082825260208201905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600062000f1360248362000ea4565b915062000f208262000eb5565b604082019050919050565b6000602082019050818103600083015262000f468162000f04565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600062000fab60228362000ea4565b915062000fb88262000f4d565b604082019050919050565b6000602082019050818103600083015262000fde8162000f9c565b9050919050565b62000ff08162000b4d565b82525050565b60006020820190506200100d600083018462000fe5565b92915050565b60008115159050919050565b6200102a8162001013565b82525050565b60006020820190506200104760008301846200101f565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001085601f8362000ea4565b915062001092826200104d565b602082019050919050565b60006020820190508181036000830152620010b88162001076565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000620010f760208362000ea4565b91506200110482620010bf565b602082019050919050565b600060208201905081810360008301526200112a81620010e8565b9050919050565b6080516153e26200118c60003960008181610cb101528181610d5c01528181610f1601528181611013015281816111f10152818161397a01528181613a5b01528181613a8201528181613b1e0152613b4501526153e26000f3fe6080604052600436106102765760003560e01c8063715018a61161014f578063c04a5414116100c1578063d85ba0631161007a578063d85ba06314610949578063dd62ed3e14610974578063e01af92c146109b1578063e2f45605146109da578063f2fde38b14610a05578063f8b45b0514610a2e5761027d565b8063c04a54141461084d578063c24a7a8c14610878578063c3f70b52146108a1578063cb963728146108cc578063d4698016146108f5578063d7d1d10e146109205761027d565b806395d89b411161011357806395d89b411461072b578063a457c2d714610756578063a9059cbb14610793578063afa4f3b2146107d0578063bbc0c742146107f9578063c0246668146108245761027d565b8063715018a61461066c57806372ac2486146106835780637571336a146106ac57806375f0a874146106d55780638da5cb5b146107005761027d565b8063296f0a0c116101e857806349bd5a5e116101ac57806349bd5a5e146105485780634fbee193146105735780635d098b38146105b05780636a486a8e146105d95780636ddd17131461060457806370a082311461062f5761027d565b8063296f0a0c14610477578063313ce567146104a057806339509351146104cb57806342966c68146105085780634892e848146105315761027d565b8063155ca7c11161023a578063155ca7c1146103535780631694505e1461037c57806318160ddd146103a757806318d9ceae146103d257806323b872dd1461040f57806327c8f8351461044c5761027d565b806306fdde0314610282578063095ea7b3146102ad5780630d075d9c146102ea5780630f683e901461031357806312594d881461033c5761027d565b3661027d57005b600080fd5b34801561028e57600080fd5b50610297610a59565b6040516102a49190613ca4565b60405180910390f35b3480156102b957600080fd5b506102d460048036038101906102cf9190613d64565b610aeb565b6040516102e19190613dbf565b60405180910390f35b3480156102f657600080fd5b50610311600480360381019061030c9190613dda565b610b0e565b005b34801561031f57600080fd5b5061033a60048036038101906103359190613dda565b610bae565b005b34801561034857600080fd5b50610351610c57565b005b34801561035f57600080fd5b5061037a60048036038101906103759190613ebe565b6110cd565b005b34801561038857600080fd5b506103916111ef565b60405161039e9190613f7d565b60405180910390f35b3480156103b357600080fd5b506103bc611213565b6040516103c99190613fa7565b60405180910390f35b3480156103de57600080fd5b506103f960048036038101906103f49190613fc2565b61121d565b6040516104069190613dbf565b60405180910390f35b34801561041b57600080fd5b5061043660048036038101906104319190613fef565b611273565b6040516104439190613dbf565b60405180910390f35b34801561045857600080fd5b506104616112a2565b60405161046e9190614051565b60405180910390f35b34801561048357600080fd5b5061049e60048036038101906104999190613fc2565b6112a8565b005b3480156104ac57600080fd5b506104b5611407565b6040516104c29190614088565b60405180910390f35b3480156104d757600080fd5b506104f260048036038101906104ed9190613d64565b611410565b6040516104ff9190613dbf565b60405180910390f35b34801561051457600080fd5b5061052f600480360381019061052a91906140a3565b611447565b005b34801561053d57600080fd5b50610546611454565b005b34801561055457600080fd5b5061055d6114e4565b60405161056a9190614051565b60405180910390f35b34801561057f57600080fd5b5061059a60048036038101906105959190613fc2565b61150a565b6040516105a79190613dbf565b60405180910390f35b3480156105bc57600080fd5b506105d760048036038101906105d29190613fc2565b611560565b005b3480156105e557600080fd5b506105ee6116bf565b6040516105fb9190613fa7565b60405180910390f35b34801561061057600080fd5b506106196116c5565b6040516106269190613dbf565b60405180910390f35b34801561063b57600080fd5b5061065660048036038101906106519190613fc2565b6116d8565b6040516106639190613fa7565b60405180910390f35b34801561067857600080fd5b50610681611720565b005b34801561068f57600080fd5b506106aa60048036038101906106a59190613fc2565b611734565b005b3480156106b857600080fd5b506106d360048036038101906106ce91906140d0565b611893565b005b3480156106e157600080fd5b506106ea611944565b6040516106f79190614051565b60405180910390f35b34801561070c57600080fd5b5061071561196a565b6040516107229190614051565b60405180910390f35b34801561073757600080fd5b50610740611994565b60405161074d9190613ca4565b60405180910390f35b34801561076257600080fd5b5061077d60048036038101906107789190613d64565b611a26565b60405161078a9190613dbf565b60405180910390f35b34801561079f57600080fd5b506107ba60048036038101906107b59190613d64565b611a9d565b6040516107c79190613dbf565b60405180910390f35b3480156107dc57600080fd5b506107f760048036038101906107f291906140a3565b611ac0565b005b34801561080557600080fd5b5061080e611b99565b60405161081b9190613dbf565b60405180910390f35b34801561083057600080fd5b5061084b600480360381019061084691906140d0565b611bac565b005b34801561085957600080fd5b50610862611c5d565b60405161086f9190614051565b60405180910390f35b34801561088457600080fd5b5061089f600480360381019061089a9190614110565b611c83565b005b3480156108ad57600080fd5b506108b6611d63565b6040516108c39190613fa7565b60405180910390f35b3480156108d857600080fd5b506108f360048036038101906108ee9190613fc2565b611d69565b005b34801561090157600080fd5b5061090a611fd6565b6040516109179190614051565b60405180910390f35b34801561092c57600080fd5b5061094760048036038101906109429190613ebe565b611ffc565b005b34801561095557600080fd5b5061095e61211e565b60405161096b9190613fa7565b60405180910390f35b34801561098057600080fd5b5061099b60048036038101906109969190614150565b612124565b6040516109a89190613fa7565b60405180910390f35b3480156109bd57600080fd5b506109d860048036038101906109d39190614190565b6121ab565b005b3480156109e657600080fd5b506109ef6121d0565b6040516109fc9190613fa7565b60405180910390f35b348015610a1157600080fd5b50610a2c6004803603810190610a279190613fc2565b6121d6565b005b348015610a3a57600080fd5b50610a43612259565b604051610a509190613fa7565b60405180910390f35b606060038054610a68906141ec565b80601f0160208091040260200160405190810160405280929190818152602001828054610a94906141ec565b8015610ae15780601f10610ab657610100808354040283529160200191610ae1565b820191906000526020600020905b815481529060010190602001808311610ac457829003601f168201915b5050505050905090565b600080610af661225f565b9050610b03818585612267565b600191505092915050565b610b16612430565b61012c818385610b26919061424c565b610b30919061424c565b1115610b71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b68906142f2565b60405180910390fd5b82600e8190555081600f8190555080601081905550601054600f54600e54610b99919061424c565b610ba3919061424c565b600d81905550505050565b610bb6612430565b61012c818385610bc6919061424c565b610bd0919061424c565b1115610c11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c08906142f2565b60405180910390fd5b826012819055508160138190555080601481905550601454601354601254610c39919061424c565b610c43919061424c565b601181905550601154601881905550505050565b610c5f612430565b600960149054906101000a900460ff1615610caf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca69061435e565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3e9190614393565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396307f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de99190614393565b6040518363ffffffff1660e01b8152600401610e069291906143c0565b6020604051808303816000875af1158015610e25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e499190614393565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610ed630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612267565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610f739291906143e9565b6020604051808303816000875af1158015610f92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb69190614427565b50610fe4600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016124ae565b611011600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611893565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7194730611058306116d8565b60008061106361196a565b426040518863ffffffff1660e01b81526004016110859695949392919061448f565b60606040518083038185885af11580156110a3573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906110c89190614505565b505050565b6110d5612430565b60005b838390508110156111e95781601960008686858181106110fb576110fa614558565b5b90506020020160208101906111109190613fc2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555083838281811061117457611173614558565b5b90506020020160208101906111899190613fc2565b73ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7836040516111ce9190613dbf565b60405180910390a280806111e190614587565b9150506110d8565b50505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b6000601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008061127e61225f565b905061128b85828561254f565b6112968585856125db565b60019150509392505050565b61dead81565b6112b0612430565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361131f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113169061461b565b60405180910390fd5b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f3e0ea4f8339b6050ff814971a9814aa39176c149fcf185975c219f33db2342db60405160405180910390a35050565b60006012905090565b60008061141b61225f565b905061143c81858561142d8589612124565b611437919061424c565b612267565b600191505092915050565b611451338261309f565b50565b61145c612430565b600960149054906101000a900460ff16156114ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a39061435e565b60405180910390fd5b6001600960146101000a81548160ff0219169083151502179055506001600960156101000a81548160ff021916908315150217905550565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611568612430565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036115d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ce9061461b565b60405180910390fd5b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a35050565b60115481565b600960159054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611728612430565b611732600061326c565b565b61173c612430565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036117ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a29061461b565b60405180910390fd5b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ffaf1b77ed79f6e898c44dd8ab36b330c7b2fd39bcaab05ed6362480df870396560405160405180910390a35050565b61189b612430565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f4b89c347592b1d537e066cb4ed98d87696ae35164745d7e370e4add16941dc92826040516119389190613dbf565b60405180910390a25050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546119a3906141ec565b80601f01602080910402602001604051908101604052809291908181526020018280546119cf906141ec565b8015611a1c5780601f106119f157610100808354040283529160200191611a1c565b820191906000526020600020905b8154815290600101906020018083116119ff57829003601f168201915b5050505050905090565b600080611a3161225f565b90506000611a3f8286612124565b905083811015611a84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7b906146ad565b60405180910390fd5b611a918286868403612267565b60019250505092915050565b600080611aa861225f565b9050611ab58185856125db565b600191505092915050565b611ac8612430565b620186a06001611ad6611213565b611ae091906146cd565b611aea919061473e565b811015611b2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b23906147e1565b60405180910390fd5b6103e86005611b39611213565b611b4391906146cd565b611b4d919061473e565b811115611b8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8690614873565b60405180910390fd5b80600c8190555050565b600960149054906101000a900460ff1681565b611bb4612430565b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611c519190613dbf565b60405180910390a25050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611c8b612430565b6103e86005611c98611213565b611ca291906146cd565b611cac919061473e565b821015611cee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce590614905565b60405180910390fd5b6103e86005611cfb611213565b611d0591906146cd565b611d0f919061473e565b811015611d51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4890614997565b60405180910390fd5b81600a8190555080600b819055505050565b600a5481565b611d71612430565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e17573373ffffffffffffffffffffffffffffffffffffffff1647604051611dca906149e8565b60006040518083038185875af1925050503d8060008114611e07576040519150601f19603f3d011682016040523d82523d6000602084013e611e0c565b606091505b505080915050611fd2565b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611e529190614051565b602060405180830381865afa158015611e6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e9391906149fd565b11611ed3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eca90614a76565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611f0e9190614051565b602060405180830381865afa158015611f2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f4f91906149fd565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611f8c9291906143e9565b6020604051808303816000875af1158015611fab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fcf9190614427565b50505b5050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612004612430565b60005b838390508110156121185781601a600086868581811061202a57612029614558565b5b905060200201602081019061203f9190613fc2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508383828181106120a3576120a2614558565b5b90506020020160208101906120b89190613fc2565b73ffffffffffffffffffffffffffffffffffffffff167f4b89c347592b1d537e066cb4ed98d87696ae35164745d7e370e4add16941dc92836040516120fd9190613dbf565b60405180910390a2808061211090614587565b915050612007565b50505050565b600d5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6121b3612430565b80600960156101000a81548160ff02191690831515021790555050565b600c5481565b6121de612430565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361224d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224490614b08565b60405180910390fd5b6122568161326c565b50565b600b5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036122d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cd90614b9a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612345576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233c90614c2c565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516124239190613fa7565b60405180910390a3505050565b61243861225f565b73ffffffffffffffffffffffffffffffffffffffff1661245661196a565b73ffffffffffffffffffffffffffffffffffffffff16146124ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a390614c98565b60405180910390fd5b565b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600061255b8484612124565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146125d557818110156125c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125be90614d04565b60405180910390fd5b6125d48484848403612267565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361264a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264190614d96565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036126b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b090614e28565b60405180910390fd5b600081036126d2576126cd83836000613332565b61309a565b6126da61196a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612748575061271861196a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156127815750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156127bb575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156127d45750600960169054906101000a900460ff16155b15612bb757600960149054906101000a900460ff166128ce57601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061288e5750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6128cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128c490614e94565b60405180910390fd5b5b601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156129715750601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612a1857600a548111156129bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129b290614f26565b60405180910390fd5b600b546129c7836116d8565b826129d2919061424c565b1115612a13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a0a90614f92565b60405180910390fd5b612bb6565b601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612abb5750601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b0a57600a54811115612b05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612afc90615024565b60405180910390fd5b612bb5565b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612bb457600b54612b67836116d8565b82612b72919061424c565b1115612bb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612baa90614f92565b60405180910390fd5b5b5b5b5b6000612bc2306116d8565b90506000600c548210159050808015612be75750600960159054906101000a900460ff165b8015612c005750600960169054906101000a900460ff16155b8015612c565750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612cac5750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612d025750601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612d46576001600960166101000a81548160ff021916908315150217905550612d2a6135a8565b6000600960166101000a81548160ff0219169083151502179055505b6000600960169054906101000a900460ff16159050601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612dfc5750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612e0657600090505b6000811561308157601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612e6957506000601154115b15612f3757612e97612710612e896011548861388f90919063ffffffff16565b6138a590919063ffffffff16565b905060115460145482612eaa91906146cd565b612eb4919061473e565b60176000828254612ec5919061424c565b9250508190555060115460125482612edd91906146cd565b612ee7919061473e565b60156000828254612ef8919061424c565b9250508190555060115460135482612f1091906146cd565b612f1a919061473e565b60166000828254612f2b919061424c565b9250508190555061305d565b601b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612f9257506000600d54115b1561305c57612fc0612710612fb2600d548861388f90919063ffffffff16565b6138a590919063ffffffff16565b9050600d5460105482612fd391906146cd565b612fdd919061473e565b60176000828254612fee919061424c565b92505081905550600d54600e548261300691906146cd565b613010919061473e565b60156000828254613021919061424c565b92505081905550600d54600f548261303991906146cd565b613043919061473e565b60166000828254613054919061424c565b925050819055505b5b600081111561307257613071873083613332565b5b808561307e9190615044565b94505b61308c878787613332565b601854601181905550505050505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361310e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613105906150ea565b60405180910390fd5b61311a826000836138bb565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156131a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131979061517c565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516132539190613fa7565b60405180910390a3613267836000846138c0565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036133a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161339890614d96565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613410576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161340790614e28565b60405180910390fd5b61341b8383836138bb565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156134a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134989061520e565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161358f9190613fa7565b60405180910390a36135a28484846138c0565b50505050565b60006135b3306116d8565b905060006016546015546017546135ca919061424c565b6135d4919061424c565b90506000808314806135e65750600082145b156135f35750505061388d565b600a600c5461360291906146cd565b83111561361b57600a600c5461361891906146cd565b92505b60006002836017548661362e91906146cd565b613638919061473e565b613642919061473e565b9050600061365982866138c590919063ffffffff16565b90506000479050613669826138db565b600061367e82476138c590919063ffffffff16565b905060006136a98761369b6015548561388f90919063ffffffff16565b6138a590919063ffffffff16565b905060006136d4886136c66016548661388f90919063ffffffff16565b6138a590919063ffffffff16565b905060008183856136e59190615044565b6136ef9190615044565b90506000601781905550600060158190555060006016819055506000871180156137195750600081115b15613766576137288782613b18565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561868260175460405161375d9392919061522e565b60405180910390a15b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516137ac906149e8565b60006040518083038185875af1925050503d80600081146137e9576040519150601f19603f3d011682016040523d82523d6000602084013e6137ee565b606091505b505080985050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161383a906149e8565b60006040518083038185875af1925050503d8060008114613877576040519150601f19603f3d011682016040523d82523d6000602084013e61387c565b606091505b505080985050505050505050505050505b565b6000818361389d91906146cd565b905092915050565b600081836138b3919061473e565b905092915050565b505050565b505050565b600081836138d39190615044565b905092915050565b6000600267ffffffffffffffff8111156138f8576138f7615265565b5b6040519080825280602002602001820160405280156139265781602001602082028036833780820191505090505b509050308160008151811061393e5761393d614558565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156139e3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a079190614393565b81600181518110613a1b57613a1a614558565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613a80307f000000000000000000000000000000000000000000000000000000000000000084612267565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613ae2959493929190615352565b600060405180830381600087803b158015613afc57600080fd5b505af1158015613b10573d6000803e3d6000fd5b505050505050565b613b43307f000000000000000000000000000000000000000000000000000000000000000084612267565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401613bca9695949392919061448f565b60606040518083038185885af1158015613be8573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613c0d9190614505565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613c4e578082015181840152602081019050613c33565b60008484015250505050565b6000601f19601f8301169050919050565b6000613c7682613c14565b613c808185613c1f565b9350613c90818560208601613c30565b613c9981613c5a565b840191505092915050565b60006020820190508181036000830152613cbe8184613c6b565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613cfb82613cd0565b9050919050565b613d0b81613cf0565b8114613d1657600080fd5b50565b600081359050613d2881613d02565b92915050565b6000819050919050565b613d4181613d2e565b8114613d4c57600080fd5b50565b600081359050613d5e81613d38565b92915050565b60008060408385031215613d7b57613d7a613cc6565b5b6000613d8985828601613d19565b9250506020613d9a85828601613d4f565b9150509250929050565b60008115159050919050565b613db981613da4565b82525050565b6000602082019050613dd46000830184613db0565b92915050565b600080600060608486031215613df357613df2613cc6565b5b6000613e0186828701613d4f565b9350506020613e1286828701613d4f565b9250506040613e2386828701613d4f565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f840112613e5257613e51613e2d565b5b8235905067ffffffffffffffff811115613e6f57613e6e613e32565b5b602083019150836020820283011115613e8b57613e8a613e37565b5b9250929050565b613e9b81613da4565b8114613ea657600080fd5b50565b600081359050613eb881613e92565b92915050565b600080600060408486031215613ed757613ed6613cc6565b5b600084013567ffffffffffffffff811115613ef557613ef4613ccb565b5b613f0186828701613e3c565b93509350506020613f1486828701613ea9565b9150509250925092565b6000819050919050565b6000613f43613f3e613f3984613cd0565b613f1e565b613cd0565b9050919050565b6000613f5582613f28565b9050919050565b6000613f6782613f4a565b9050919050565b613f7781613f5c565b82525050565b6000602082019050613f926000830184613f6e565b92915050565b613fa181613d2e565b82525050565b6000602082019050613fbc6000830184613f98565b92915050565b600060208284031215613fd857613fd7613cc6565b5b6000613fe684828501613d19565b91505092915050565b60008060006060848603121561400857614007613cc6565b5b600061401686828701613d19565b935050602061402786828701613d19565b925050604061403886828701613d4f565b9150509250925092565b61404b81613cf0565b82525050565b60006020820190506140666000830184614042565b92915050565b600060ff82169050919050565b6140828161406c565b82525050565b600060208201905061409d6000830184614079565b92915050565b6000602082840312156140b9576140b8613cc6565b5b60006140c784828501613d4f565b91505092915050565b600080604083850312156140e7576140e6613cc6565b5b60006140f585828601613d19565b925050602061410685828601613ea9565b9150509250929050565b6000806040838503121561412757614126613cc6565b5b600061413585828601613d4f565b925050602061414685828601613d4f565b9150509250929050565b6000806040838503121561416757614166613cc6565b5b600061417585828601613d19565b925050602061418685828601613d19565b9150509250929050565b6000602082840312156141a6576141a5613cc6565b5b60006141b484828501613ea9565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061420457607f821691505b602082108103614217576142166141bd565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061425782613d2e565b915061426283613d2e565b925082820190508082111561427a5761427961421d565b5b92915050565b7f45524332303a204d757374206b6565702066656573206174203325206f72206c60008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006142dc602383613c1f565b91506142e782614280565b604082019050919050565b6000602082019050818103600083015261430b816142cf565b9050919050565b7f54726164696e6720616c7265616479206163746976652e000000000000000000600082015250565b6000614348601783613c1f565b915061435382614312565b602082019050919050565b600060208201905081810360008301526143778161433b565b9050919050565b60008151905061438d81613d02565b92915050565b6000602082840312156143a9576143a8613cc6565b5b60006143b78482850161437e565b91505092915050565b60006040820190506143d56000830185614042565b6143e26020830184614042565b9392505050565b60006040820190506143fe6000830185614042565b61440b6020830184613f98565b9392505050565b60008151905061442181613e92565b92915050565b60006020828403121561443d5761443c613cc6565b5b600061444b84828501614412565b91505092915050565b6000819050919050565b600061447961447461446f84614454565b613f1e565b613d2e565b9050919050565b6144898161445e565b82525050565b600060c0820190506144a46000830189614042565b6144b16020830188613f98565b6144be6040830187614480565b6144cb6060830186614480565b6144d86080830185614042565b6144e560a0830184613f98565b979650505050505050565b6000815190506144ff81613d38565b92915050565b60008060006060848603121561451e5761451d613cc6565b5b600061452c868287016144f0565b935050602061453d868287016144f0565b925050604061454e868287016144f0565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061459282613d2e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036145c4576145c361421d565b5b600182019050919050565b7f45524332303a2041646472657373203000000000000000000000000000000000600082015250565b6000614605601083613c1f565b9150614610826145cf565b602082019050919050565b60006020820190508181036000830152614634816145f8565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614697602583613c1f565b91506146a28261463b565b604082019050919050565b600060208201905081810360008301526146c68161468a565b9050919050565b60006146d882613d2e565b91506146e383613d2e565b92508282026146f181613d2e565b915082820484148315176147085761470761421d565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061474982613d2e565b915061475483613d2e565b9250826147645761476361470f565b5b828204905092915050565b7f45524332303a205377617020616d6f756e742063616e6e6f74206265206c6f7760008201527f6572207468616e20302e3030312520746f74616c20737570706c792e00000000602082015250565b60006147cb603c83613c1f565b91506147d68261476f565b604082019050919050565b600060208201905081810360008301526147fa816147be565b9050919050565b7f45524332303a205377617020616d6f756e742063616e6e6f742062652068696760008201527f686572207468616e20302e352520746f74616c20737570706c792e0000000000602082015250565b600061485d603b83613c1f565b915061486882614801565b604082019050919050565b6000602082019050818103600083015261488c81614850565b9050919050565b7f45524332303a2043616e6e6f7420736574206d617854786e206c6f776572207460008201527f68616e20302e3525000000000000000000000000000000000000000000000000602082015250565b60006148ef602883613c1f565b91506148fa82614893565b604082019050919050565b6000602082019050818103600083015261491e816148e2565b9050919050565b7f45524332303a2043616e6e6f7420736574206d617857616c6c6574206c6f776560008201527f72207468616e20302e3525000000000000000000000000000000000000000000602082015250565b6000614981602b83613c1f565b915061498c82614925565b604082019050919050565b600060208201905081810360008301526149b081614974565b9050919050565b600081905092915050565b50565b60006149d26000836149b7565b91506149dd826149c2565b600082019050919050565b60006149f3826149c5565b9150819050919050565b600060208284031215614a1357614a12613cc6565b5b6000614a21848285016144f0565b91505092915050565b7f4e6f20746f6b656e730000000000000000000000000000000000000000000000600082015250565b6000614a60600983613c1f565b9150614a6b82614a2a565b602082019050919050565b60006020820190508181036000830152614a8f81614a53565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614af2602683613c1f565b9150614afd82614a96565b604082019050919050565b60006020820190508181036000830152614b2181614ae5565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614b84602483613c1f565b9150614b8f82614b28565b604082019050919050565b60006020820190508181036000830152614bb381614b77565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614c16602283613c1f565b9150614c2182614bba565b604082019050919050565b60006020820190508181036000830152614c4581614c09565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614c82602083613c1f565b9150614c8d82614c4c565b602082019050919050565b60006020820190508181036000830152614cb181614c75565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000614cee601d83613c1f565b9150614cf982614cb8565b602082019050919050565b60006020820190508181036000830152614d1d81614ce1565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614d80602583613c1f565b9150614d8b82614d24565b604082019050919050565b60006020820190508181036000830152614daf81614d73565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614e12602383613c1f565b9150614e1d82614db6565b604082019050919050565b60006020820190508181036000830152614e4181614e05565b9050919050565b7f45524332303a2054726164696e67206973206e6f74206163746976652e000000600082015250565b6000614e7e601d83613c1f565b9150614e8982614e48565b602082019050919050565b60006020820190508181036000830152614ead81614e71565b9050919050565b7f45524332303a20427579207472616e7366657220616d6f756e7420657863656560008201527f647320746865206d61785472616e73616374696f6e2e00000000000000000000602082015250565b6000614f10603683613c1f565b9150614f1b82614eb4565b604082019050919050565b60006020820190508181036000830152614f3f81614f03565b9050919050565b7f45524332303a204d61782077616c6c6574206578636565646564000000000000600082015250565b6000614f7c601a83613c1f565b9150614f8782614f46565b602082019050919050565b60006020820190508181036000830152614fab81614f6f565b9050919050565b7f45524332303a2053656c6c207472616e7366657220616d6f756e74206578636560008201527f65647320746865206d61785472616e73616374696f6e2e000000000000000000602082015250565b600061500e603783613c1f565b915061501982614fb2565b604082019050919050565b6000602082019050818103600083015261503d81615001565b9050919050565b600061504f82613d2e565b915061505a83613d2e565b92508282039050818111156150725761507161421d565b5b92915050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006150d4602183613c1f565b91506150df82615078565b604082019050919050565b60006020820190508181036000830152615103816150c7565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000615166602283613c1f565b91506151718261510a565b604082019050919050565b6000602082019050818103600083015261519581615159565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006151f8602683613c1f565b91506152038261519c565b604082019050919050565b60006020820190508181036000830152615227816151eb565b9050919050565b60006060820190506152436000830186613f98565b6152506020830185613f98565b61525d6040830184613f98565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6152c981613cf0565b82525050565b60006152db83836152c0565b60208301905092915050565b6000602082019050919050565b60006152ff82615294565b615309818561529f565b9350615314836152b0565b8060005b8381101561534557815161532c88826152cf565b9750615337836152e7565b925050600181019050615318565b5085935050505092915050565b600060a0820190506153676000830188613f98565b6153746020830187614480565b818103604083015261538681866152f4565b90506153956060830185614042565b6153a26080830184613f98565b969550505050505056fea264697066735822122069ddb459e000a6ab62b41e76374efab3d45f5be0e826cfa57179346fec234a3b64736f6c63430008110033
Deployed Bytecode
0x6080604052600436106102765760003560e01c8063715018a61161014f578063c04a5414116100c1578063d85ba0631161007a578063d85ba06314610949578063dd62ed3e14610974578063e01af92c146109b1578063e2f45605146109da578063f2fde38b14610a05578063f8b45b0514610a2e5761027d565b8063c04a54141461084d578063c24a7a8c14610878578063c3f70b52146108a1578063cb963728146108cc578063d4698016146108f5578063d7d1d10e146109205761027d565b806395d89b411161011357806395d89b411461072b578063a457c2d714610756578063a9059cbb14610793578063afa4f3b2146107d0578063bbc0c742146107f9578063c0246668146108245761027d565b8063715018a61461066c57806372ac2486146106835780637571336a146106ac57806375f0a874146106d55780638da5cb5b146107005761027d565b8063296f0a0c116101e857806349bd5a5e116101ac57806349bd5a5e146105485780634fbee193146105735780635d098b38146105b05780636a486a8e146105d95780636ddd17131461060457806370a082311461062f5761027d565b8063296f0a0c14610477578063313ce567146104a057806339509351146104cb57806342966c68146105085780634892e848146105315761027d565b8063155ca7c11161023a578063155ca7c1146103535780631694505e1461037c57806318160ddd146103a757806318d9ceae146103d257806323b872dd1461040f57806327c8f8351461044c5761027d565b806306fdde0314610282578063095ea7b3146102ad5780630d075d9c146102ea5780630f683e901461031357806312594d881461033c5761027d565b3661027d57005b600080fd5b34801561028e57600080fd5b50610297610a59565b6040516102a49190613ca4565b60405180910390f35b3480156102b957600080fd5b506102d460048036038101906102cf9190613d64565b610aeb565b6040516102e19190613dbf565b60405180910390f35b3480156102f657600080fd5b50610311600480360381019061030c9190613dda565b610b0e565b005b34801561031f57600080fd5b5061033a60048036038101906103359190613dda565b610bae565b005b34801561034857600080fd5b50610351610c57565b005b34801561035f57600080fd5b5061037a60048036038101906103759190613ebe565b6110cd565b005b34801561038857600080fd5b506103916111ef565b60405161039e9190613f7d565b60405180910390f35b3480156103b357600080fd5b506103bc611213565b6040516103c99190613fa7565b60405180910390f35b3480156103de57600080fd5b506103f960048036038101906103f49190613fc2565b61121d565b6040516104069190613dbf565b60405180910390f35b34801561041b57600080fd5b5061043660048036038101906104319190613fef565b611273565b6040516104439190613dbf565b60405180910390f35b34801561045857600080fd5b506104616112a2565b60405161046e9190614051565b60405180910390f35b34801561048357600080fd5b5061049e60048036038101906104999190613fc2565b6112a8565b005b3480156104ac57600080fd5b506104b5611407565b6040516104c29190614088565b60405180910390f35b3480156104d757600080fd5b506104f260048036038101906104ed9190613d64565b611410565b6040516104ff9190613dbf565b60405180910390f35b34801561051457600080fd5b5061052f600480360381019061052a91906140a3565b611447565b005b34801561053d57600080fd5b50610546611454565b005b34801561055457600080fd5b5061055d6114e4565b60405161056a9190614051565b60405180910390f35b34801561057f57600080fd5b5061059a60048036038101906105959190613fc2565b61150a565b6040516105a79190613dbf565b60405180910390f35b3480156105bc57600080fd5b506105d760048036038101906105d29190613fc2565b611560565b005b3480156105e557600080fd5b506105ee6116bf565b6040516105fb9190613fa7565b60405180910390f35b34801561061057600080fd5b506106196116c5565b6040516106269190613dbf565b60405180910390f35b34801561063b57600080fd5b5061065660048036038101906106519190613fc2565b6116d8565b6040516106639190613fa7565b60405180910390f35b34801561067857600080fd5b50610681611720565b005b34801561068f57600080fd5b506106aa60048036038101906106a59190613fc2565b611734565b005b3480156106b857600080fd5b506106d360048036038101906106ce91906140d0565b611893565b005b3480156106e157600080fd5b506106ea611944565b6040516106f79190614051565b60405180910390f35b34801561070c57600080fd5b5061071561196a565b6040516107229190614051565b60405180910390f35b34801561073757600080fd5b50610740611994565b60405161074d9190613ca4565b60405180910390f35b34801561076257600080fd5b5061077d60048036038101906107789190613d64565b611a26565b60405161078a9190613dbf565b60405180910390f35b34801561079f57600080fd5b506107ba60048036038101906107b59190613d64565b611a9d565b6040516107c79190613dbf565b60405180910390f35b3480156107dc57600080fd5b506107f760048036038101906107f291906140a3565b611ac0565b005b34801561080557600080fd5b5061080e611b99565b60405161081b9190613dbf565b60405180910390f35b34801561083057600080fd5b5061084b600480360381019061084691906140d0565b611bac565b005b34801561085957600080fd5b50610862611c5d565b60405161086f9190614051565b60405180910390f35b34801561088457600080fd5b5061089f600480360381019061089a9190614110565b611c83565b005b3480156108ad57600080fd5b506108b6611d63565b6040516108c39190613fa7565b60405180910390f35b3480156108d857600080fd5b506108f360048036038101906108ee9190613fc2565b611d69565b005b34801561090157600080fd5b5061090a611fd6565b6040516109179190614051565b60405180910390f35b34801561092c57600080fd5b5061094760048036038101906109429190613ebe565b611ffc565b005b34801561095557600080fd5b5061095e61211e565b60405161096b9190613fa7565b60405180910390f35b34801561098057600080fd5b5061099b60048036038101906109969190614150565b612124565b6040516109a89190613fa7565b60405180910390f35b3480156109bd57600080fd5b506109d860048036038101906109d39190614190565b6121ab565b005b3480156109e657600080fd5b506109ef6121d0565b6040516109fc9190613fa7565b60405180910390f35b348015610a1157600080fd5b50610a2c6004803603810190610a279190613fc2565b6121d6565b005b348015610a3a57600080fd5b50610a43612259565b604051610a509190613fa7565b60405180910390f35b606060038054610a68906141ec565b80601f0160208091040260200160405190810160405280929190818152602001828054610a94906141ec565b8015610ae15780601f10610ab657610100808354040283529160200191610ae1565b820191906000526020600020905b815481529060010190602001808311610ac457829003601f168201915b5050505050905090565b600080610af661225f565b9050610b03818585612267565b600191505092915050565b610b16612430565b61012c818385610b26919061424c565b610b30919061424c565b1115610b71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b68906142f2565b60405180910390fd5b82600e8190555081600f8190555080601081905550601054600f54600e54610b99919061424c565b610ba3919061424c565b600d81905550505050565b610bb6612430565b61012c818385610bc6919061424c565b610bd0919061424c565b1115610c11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c08906142f2565b60405180910390fd5b826012819055508160138190555080601481905550601454601354601254610c39919061424c565b610c43919061424c565b601181905550601154601881905550505050565b610c5f612430565b600960149054906101000a900460ff1615610caf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca69061435e565b60405180910390fd5b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3e9190614393565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de99190614393565b6040518363ffffffff1660e01b8152600401610e069291906143c0565b6020604051808303816000875af1158015610e25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e499190614393565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610ed630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612267565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610f739291906143e9565b6020604051808303816000875af1158015610f92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb69190614427565b50610fe4600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016124ae565b611011600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611893565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7194730611058306116d8565b60008061106361196a565b426040518863ffffffff1660e01b81526004016110859695949392919061448f565b60606040518083038185885af11580156110a3573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906110c89190614505565b505050565b6110d5612430565b60005b838390508110156111e95781601960008686858181106110fb576110fa614558565b5b90506020020160208101906111109190613fc2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555083838281811061117457611173614558565b5b90506020020160208101906111899190613fc2565b73ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7836040516111ce9190613dbf565b60405180910390a280806111e190614587565b9150506110d8565b50505050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b6000601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008061127e61225f565b905061128b85828561254f565b6112968585856125db565b60019150509392505050565b61dead81565b6112b0612430565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361131f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113169061461b565b60405180910390fd5b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f3e0ea4f8339b6050ff814971a9814aa39176c149fcf185975c219f33db2342db60405160405180910390a35050565b60006012905090565b60008061141b61225f565b905061143c81858561142d8589612124565b611437919061424c565b612267565b600191505092915050565b611451338261309f565b50565b61145c612430565b600960149054906101000a900460ff16156114ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a39061435e565b60405180910390fd5b6001600960146101000a81548160ff0219169083151502179055506001600960156101000a81548160ff021916908315150217905550565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611568612430565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036115d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ce9061461b565b60405180910390fd5b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a35050565b60115481565b600960159054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611728612430565b611732600061326c565b565b61173c612430565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036117ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a29061461b565b60405180910390fd5b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ffaf1b77ed79f6e898c44dd8ab36b330c7b2fd39bcaab05ed6362480df870396560405160405180910390a35050565b61189b612430565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f4b89c347592b1d537e066cb4ed98d87696ae35164745d7e370e4add16941dc92826040516119389190613dbf565b60405180910390a25050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546119a3906141ec565b80601f01602080910402602001604051908101604052809291908181526020018280546119cf906141ec565b8015611a1c5780601f106119f157610100808354040283529160200191611a1c565b820191906000526020600020905b8154815290600101906020018083116119ff57829003601f168201915b5050505050905090565b600080611a3161225f565b90506000611a3f8286612124565b905083811015611a84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7b906146ad565b60405180910390fd5b611a918286868403612267565b60019250505092915050565b600080611aa861225f565b9050611ab58185856125db565b600191505092915050565b611ac8612430565b620186a06001611ad6611213565b611ae091906146cd565b611aea919061473e565b811015611b2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b23906147e1565b60405180910390fd5b6103e86005611b39611213565b611b4391906146cd565b611b4d919061473e565b811115611b8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8690614873565b60405180910390fd5b80600c8190555050565b600960149054906101000a900460ff1681565b611bb4612430565b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611c519190613dbf565b60405180910390a25050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611c8b612430565b6103e86005611c98611213565b611ca291906146cd565b611cac919061473e565b821015611cee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce590614905565b60405180910390fd5b6103e86005611cfb611213565b611d0591906146cd565b611d0f919061473e565b811015611d51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4890614997565b60405180910390fd5b81600a8190555080600b819055505050565b600a5481565b611d71612430565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e17573373ffffffffffffffffffffffffffffffffffffffff1647604051611dca906149e8565b60006040518083038185875af1925050503d8060008114611e07576040519150601f19603f3d011682016040523d82523d6000602084013e611e0c565b606091505b505080915050611fd2565b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611e529190614051565b602060405180830381865afa158015611e6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e9391906149fd565b11611ed3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eca90614a76565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611f0e9190614051565b602060405180830381865afa158015611f2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f4f91906149fd565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611f8c9291906143e9565b6020604051808303816000875af1158015611fab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fcf9190614427565b50505b5050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612004612430565b60005b838390508110156121185781601a600086868581811061202a57612029614558565b5b905060200201602081019061203f9190613fc2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508383828181106120a3576120a2614558565b5b90506020020160208101906120b89190613fc2565b73ffffffffffffffffffffffffffffffffffffffff167f4b89c347592b1d537e066cb4ed98d87696ae35164745d7e370e4add16941dc92836040516120fd9190613dbf565b60405180910390a2808061211090614587565b915050612007565b50505050565b600d5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6121b3612430565b80600960156101000a81548160ff02191690831515021790555050565b600c5481565b6121de612430565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361224d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224490614b08565b60405180910390fd5b6122568161326c565b50565b600b5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036122d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cd90614b9a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612345576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233c90614c2c565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516124239190613fa7565b60405180910390a3505050565b61243861225f565b73ffffffffffffffffffffffffffffffffffffffff1661245661196a565b73ffffffffffffffffffffffffffffffffffffffff16146124ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a390614c98565b60405180910390fd5b565b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600061255b8484612124565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146125d557818110156125c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125be90614d04565b60405180910390fd5b6125d48484848403612267565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361264a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264190614d96565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036126b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b090614e28565b60405180910390fd5b600081036126d2576126cd83836000613332565b61309a565b6126da61196a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612748575061271861196a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156127815750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156127bb575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156127d45750600960169054906101000a900460ff16155b15612bb757600960149054906101000a900460ff166128ce57601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061288e5750601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6128cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128c490614e94565b60405180910390fd5b5b601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156129715750601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612a1857600a548111156129bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129b290614f26565b60405180910390fd5b600b546129c7836116d8565b826129d2919061424c565b1115612a13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a0a90614f92565b60405180910390fd5b612bb6565b601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612abb5750601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b0a57600a54811115612b05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612afc90615024565b60405180910390fd5b612bb5565b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612bb457600b54612b67836116d8565b82612b72919061424c565b1115612bb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612baa90614f92565b60405180910390fd5b5b5b5b5b6000612bc2306116d8565b90506000600c548210159050808015612be75750600960159054906101000a900460ff165b8015612c005750600960169054906101000a900460ff16155b8015612c565750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612cac5750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612d025750601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612d46576001600960166101000a81548160ff021916908315150217905550612d2a6135a8565b6000600960166101000a81548160ff0219169083151502179055505b6000600960169054906101000a900460ff16159050601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612dfc5750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612e0657600090505b6000811561308157601b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612e6957506000601154115b15612f3757612e97612710612e896011548861388f90919063ffffffff16565b6138a590919063ffffffff16565b905060115460145482612eaa91906146cd565b612eb4919061473e565b60176000828254612ec5919061424c565b9250508190555060115460125482612edd91906146cd565b612ee7919061473e565b60156000828254612ef8919061424c565b9250508190555060115460135482612f1091906146cd565b612f1a919061473e565b60166000828254612f2b919061424c565b9250508190555061305d565b601b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612f9257506000600d54115b1561305c57612fc0612710612fb2600d548861388f90919063ffffffff16565b6138a590919063ffffffff16565b9050600d5460105482612fd391906146cd565b612fdd919061473e565b60176000828254612fee919061424c565b92505081905550600d54600e548261300691906146cd565b613010919061473e565b60156000828254613021919061424c565b92505081905550600d54600f548261303991906146cd565b613043919061473e565b60166000828254613054919061424c565b925050819055505b5b600081111561307257613071873083613332565b5b808561307e9190615044565b94505b61308c878787613332565b601854601181905550505050505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361310e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613105906150ea565b60405180910390fd5b61311a826000836138bb565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156131a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131979061517c565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516132539190613fa7565b60405180910390a3613267836000846138c0565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036133a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161339890614d96565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613410576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161340790614e28565b60405180910390fd5b61341b8383836138bb565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156134a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134989061520e565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161358f9190613fa7565b60405180910390a36135a28484846138c0565b50505050565b60006135b3306116d8565b905060006016546015546017546135ca919061424c565b6135d4919061424c565b90506000808314806135e65750600082145b156135f35750505061388d565b600a600c5461360291906146cd565b83111561361b57600a600c5461361891906146cd565b92505b60006002836017548661362e91906146cd565b613638919061473e565b613642919061473e565b9050600061365982866138c590919063ffffffff16565b90506000479050613669826138db565b600061367e82476138c590919063ffffffff16565b905060006136a98761369b6015548561388f90919063ffffffff16565b6138a590919063ffffffff16565b905060006136d4886136c66016548661388f90919063ffffffff16565b6138a590919063ffffffff16565b905060008183856136e59190615044565b6136ef9190615044565b90506000601781905550600060158190555060006016819055506000871180156137195750600081115b15613766576137288782613b18565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561868260175460405161375d9392919061522e565b60405180910390a15b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516137ac906149e8565b60006040518083038185875af1925050503d80600081146137e9576040519150601f19603f3d011682016040523d82523d6000602084013e6137ee565b606091505b505080985050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161383a906149e8565b60006040518083038185875af1925050503d8060008114613877576040519150601f19603f3d011682016040523d82523d6000602084013e61387c565b606091505b505080985050505050505050505050505b565b6000818361389d91906146cd565b905092915050565b600081836138b3919061473e565b905092915050565b505050565b505050565b600081836138d39190615044565b905092915050565b6000600267ffffffffffffffff8111156138f8576138f7615265565b5b6040519080825280602002602001820160405280156139265781602001602082028036833780820191505090505b509050308160008151811061393e5761393d614558565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156139e3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a079190614393565b81600181518110613a1b57613a1a614558565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613a80307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612267565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613ae2959493929190615352565b600060405180830381600087803b158015613afc57600080fd5b505af1158015613b10573d6000803e3d6000fd5b505050505050565b613b43307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612267565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401613bca9695949392919061448f565b60606040518083038185885af1158015613be8573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613c0d9190614505565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613c4e578082015181840152602081019050613c33565b60008484015250505050565b6000601f19601f8301169050919050565b6000613c7682613c14565b613c808185613c1f565b9350613c90818560208601613c30565b613c9981613c5a565b840191505092915050565b60006020820190508181036000830152613cbe8184613c6b565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613cfb82613cd0565b9050919050565b613d0b81613cf0565b8114613d1657600080fd5b50565b600081359050613d2881613d02565b92915050565b6000819050919050565b613d4181613d2e565b8114613d4c57600080fd5b50565b600081359050613d5e81613d38565b92915050565b60008060408385031215613d7b57613d7a613cc6565b5b6000613d8985828601613d19565b9250506020613d9a85828601613d4f565b9150509250929050565b60008115159050919050565b613db981613da4565b82525050565b6000602082019050613dd46000830184613db0565b92915050565b600080600060608486031215613df357613df2613cc6565b5b6000613e0186828701613d4f565b9350506020613e1286828701613d4f565b9250506040613e2386828701613d4f565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f840112613e5257613e51613e2d565b5b8235905067ffffffffffffffff811115613e6f57613e6e613e32565b5b602083019150836020820283011115613e8b57613e8a613e37565b5b9250929050565b613e9b81613da4565b8114613ea657600080fd5b50565b600081359050613eb881613e92565b92915050565b600080600060408486031215613ed757613ed6613cc6565b5b600084013567ffffffffffffffff811115613ef557613ef4613ccb565b5b613f0186828701613e3c565b93509350506020613f1486828701613ea9565b9150509250925092565b6000819050919050565b6000613f43613f3e613f3984613cd0565b613f1e565b613cd0565b9050919050565b6000613f5582613f28565b9050919050565b6000613f6782613f4a565b9050919050565b613f7781613f5c565b82525050565b6000602082019050613f926000830184613f6e565b92915050565b613fa181613d2e565b82525050565b6000602082019050613fbc6000830184613f98565b92915050565b600060208284031215613fd857613fd7613cc6565b5b6000613fe684828501613d19565b91505092915050565b60008060006060848603121561400857614007613cc6565b5b600061401686828701613d19565b935050602061402786828701613d19565b925050604061403886828701613d4f565b9150509250925092565b61404b81613cf0565b82525050565b60006020820190506140666000830184614042565b92915050565b600060ff82169050919050565b6140828161406c565b82525050565b600060208201905061409d6000830184614079565b92915050565b6000602082840312156140b9576140b8613cc6565b5b60006140c784828501613d4f565b91505092915050565b600080604083850312156140e7576140e6613cc6565b5b60006140f585828601613d19565b925050602061410685828601613ea9565b9150509250929050565b6000806040838503121561412757614126613cc6565b5b600061413585828601613d4f565b925050602061414685828601613d4f565b9150509250929050565b6000806040838503121561416757614166613cc6565b5b600061417585828601613d19565b925050602061418685828601613d19565b9150509250929050565b6000602082840312156141a6576141a5613cc6565b5b60006141b484828501613ea9565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061420457607f821691505b602082108103614217576142166141bd565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061425782613d2e565b915061426283613d2e565b925082820190508082111561427a5761427961421d565b5b92915050565b7f45524332303a204d757374206b6565702066656573206174203325206f72206c60008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006142dc602383613c1f565b91506142e782614280565b604082019050919050565b6000602082019050818103600083015261430b816142cf565b9050919050565b7f54726164696e6720616c7265616479206163746976652e000000000000000000600082015250565b6000614348601783613c1f565b915061435382614312565b602082019050919050565b600060208201905081810360008301526143778161433b565b9050919050565b60008151905061438d81613d02565b92915050565b6000602082840312156143a9576143a8613cc6565b5b60006143b78482850161437e565b91505092915050565b60006040820190506143d56000830185614042565b6143e26020830184614042565b9392505050565b60006040820190506143fe6000830185614042565b61440b6020830184613f98565b9392505050565b60008151905061442181613e92565b92915050565b60006020828403121561443d5761443c613cc6565b5b600061444b84828501614412565b91505092915050565b6000819050919050565b600061447961447461446f84614454565b613f1e565b613d2e565b9050919050565b6144898161445e565b82525050565b600060c0820190506144a46000830189614042565b6144b16020830188613f98565b6144be6040830187614480565b6144cb6060830186614480565b6144d86080830185614042565b6144e560a0830184613f98565b979650505050505050565b6000815190506144ff81613d38565b92915050565b60008060006060848603121561451e5761451d613cc6565b5b600061452c868287016144f0565b935050602061453d868287016144f0565b925050604061454e868287016144f0565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061459282613d2e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036145c4576145c361421d565b5b600182019050919050565b7f45524332303a2041646472657373203000000000000000000000000000000000600082015250565b6000614605601083613c1f565b9150614610826145cf565b602082019050919050565b60006020820190508181036000830152614634816145f8565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614697602583613c1f565b91506146a28261463b565b604082019050919050565b600060208201905081810360008301526146c68161468a565b9050919050565b60006146d882613d2e565b91506146e383613d2e565b92508282026146f181613d2e565b915082820484148315176147085761470761421d565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061474982613d2e565b915061475483613d2e565b9250826147645761476361470f565b5b828204905092915050565b7f45524332303a205377617020616d6f756e742063616e6e6f74206265206c6f7760008201527f6572207468616e20302e3030312520746f74616c20737570706c792e00000000602082015250565b60006147cb603c83613c1f565b91506147d68261476f565b604082019050919050565b600060208201905081810360008301526147fa816147be565b9050919050565b7f45524332303a205377617020616d6f756e742063616e6e6f742062652068696760008201527f686572207468616e20302e352520746f74616c20737570706c792e0000000000602082015250565b600061485d603b83613c1f565b915061486882614801565b604082019050919050565b6000602082019050818103600083015261488c81614850565b9050919050565b7f45524332303a2043616e6e6f7420736574206d617854786e206c6f776572207460008201527f68616e20302e3525000000000000000000000000000000000000000000000000602082015250565b60006148ef602883613c1f565b91506148fa82614893565b604082019050919050565b6000602082019050818103600083015261491e816148e2565b9050919050565b7f45524332303a2043616e6e6f7420736574206d617857616c6c6574206c6f776560008201527f72207468616e20302e3525000000000000000000000000000000000000000000602082015250565b6000614981602b83613c1f565b915061498c82614925565b604082019050919050565b600060208201905081810360008301526149b081614974565b9050919050565b600081905092915050565b50565b60006149d26000836149b7565b91506149dd826149c2565b600082019050919050565b60006149f3826149c5565b9150819050919050565b600060208284031215614a1357614a12613cc6565b5b6000614a21848285016144f0565b91505092915050565b7f4e6f20746f6b656e730000000000000000000000000000000000000000000000600082015250565b6000614a60600983613c1f565b9150614a6b82614a2a565b602082019050919050565b60006020820190508181036000830152614a8f81614a53565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614af2602683613c1f565b9150614afd82614a96565b604082019050919050565b60006020820190508181036000830152614b2181614ae5565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614b84602483613c1f565b9150614b8f82614b28565b604082019050919050565b60006020820190508181036000830152614bb381614b77565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614c16602283613c1f565b9150614c2182614bba565b604082019050919050565b60006020820190508181036000830152614c4581614c09565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614c82602083613c1f565b9150614c8d82614c4c565b602082019050919050565b60006020820190508181036000830152614cb181614c75565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000614cee601d83613c1f565b9150614cf982614cb8565b602082019050919050565b60006020820190508181036000830152614d1d81614ce1565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614d80602583613c1f565b9150614d8b82614d24565b604082019050919050565b60006020820190508181036000830152614daf81614d73565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614e12602383613c1f565b9150614e1d82614db6565b604082019050919050565b60006020820190508181036000830152614e4181614e05565b9050919050565b7f45524332303a2054726164696e67206973206e6f74206163746976652e000000600082015250565b6000614e7e601d83613c1f565b9150614e8982614e48565b602082019050919050565b60006020820190508181036000830152614ead81614e71565b9050919050565b7f45524332303a20427579207472616e7366657220616d6f756e7420657863656560008201527f647320746865206d61785472616e73616374696f6e2e00000000000000000000602082015250565b6000614f10603683613c1f565b9150614f1b82614eb4565b604082019050919050565b60006020820190508181036000830152614f3f81614f03565b9050919050565b7f45524332303a204d61782077616c6c6574206578636565646564000000000000600082015250565b6000614f7c601a83613c1f565b9150614f8782614f46565b602082019050919050565b60006020820190508181036000830152614fab81614f6f565b9050919050565b7f45524332303a2053656c6c207472616e7366657220616d6f756e74206578636560008201527f65647320746865206d61785472616e73616374696f6e2e000000000000000000602082015250565b600061500e603783613c1f565b915061501982614fb2565b604082019050919050565b6000602082019050818103600083015261503d81615001565b9050919050565b600061504f82613d2e565b915061505a83613d2e565b92508282039050818111156150725761507161421d565b5b92915050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006150d4602183613c1f565b91506150df82615078565b604082019050919050565b60006020820190508181036000830152615103816150c7565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000615166602283613c1f565b91506151718261510a565b604082019050919050565b6000602082019050818103600083015261519581615159565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006151f8602683613c1f565b91506152038261519c565b604082019050919050565b60006020820190508181036000830152615227816151eb565b9050919050565b60006060820190506152436000830186613f98565b6152506020830185613f98565b61525d6040830184613f98565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6152c981613cf0565b82525050565b60006152db83836152c0565b60208301905092915050565b6000602082019050919050565b60006152ff82615294565b615309818561529f565b9350615314836152b0565b8060005b8381101561534557815161532c88826152cf565b9750615337836152e7565b925050600181019050615318565b5085935050505092915050565b600060a0820190506153676000830188613f98565b6153746020830187614480565b818103604083015261538681866152f4565b90506153956060830185614042565b6153a26080830184613f98565b969550505050505056fea264697066735822122069ddb459e000a6ab62b41e76374efab3d45f5be0e826cfa57179346fec234a3b64736f6c63430008110033
Deployed Bytecode Sourcemap
34775:16409:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9691:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12170:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40486:515;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;41009:601;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;38422:841;;;;;;;;;;;;;:::i;:::-;;43311:296;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34850:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10810:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44091:178;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12977:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35056:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42262:306;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10652:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13677:270;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38333:81;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;39271:163;;;;;;;;;;;;;:::i;:::-;;34908:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44277:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;41618:306;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35475:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35150:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10981:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3113:103;;;;;;;;;;;;;:::i;:::-;;41932:322;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;42576:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34943:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2474:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9910:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14442:505;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11360:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39541:425;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35118:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43130:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34980:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39974:504;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35211:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43615:468;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35019:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42802:320;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35320:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11657:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39442:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35278:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3369:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35247:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9691:100;9745:13;9778:5;9771:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9691:100;:::o;12170:242::-;12289:4;12311:13;12327:12;:10;:12::i;:::-;12311:28;;12350:32;12359:5;12366:7;12375:6;12350:8;:32::i;:::-;12400:4;12393:11;;;12170:242;;;;:::o;40486:515::-;2360:13;:11;:13::i;:::-;40712:3:::1;40695:13;40677:15;40661:13;:31;;;;:::i;:::-;:47;;;;:::i;:::-;:54;;40639:139;;;;;;;;;;;;:::i;:::-;;;;;;;;;40808:13;40789:16;:32;;;;40853:15;40832:18;:36;;;;40898:13;40879:16;:32;;;;40977:16;;40956:18;;40937:16;;:37;;;;:::i;:::-;:56;;;;:::i;:::-;40922:12;:71;;;;40486:515:::0;;;:::o;41009:601::-;2360:13;:11;:13::i;:::-;41236:3:::1;41219:13;41201:15;41185:13;:31;;;;:::i;:::-;:47;;;;:::i;:::-;:54;;41163:139;;;;;;;;;;;;:::i;:::-;;;;;;;;;41333:13;41313:17;:33;;;;41379:15;41357:19;:37;;;;41425:13;41405:17;:33;;;;41546:17;;41511:19;;41478:17;;:52;;;;:::i;:::-;:85;;;;:::i;:::-;41449:13;:114;;;;41589:13;;41574:12;:28;;;;41009:601:::0;;;:::o;38422:841::-;2360:13;:11;:13::i;:::-;38482::::1;;;;;;;;;;;38481:14;38473:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;38570:15;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38552:55;;;38630:4;38650:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38552:131;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38536:13;;:147;;;;;;;;;;;;;;;;;;38694:66;38711:4;38726:13;;;;;;;;;;;38742:17;38694:8;:66::i;:::-;38778:13;;;;;;;;;;;38771:29;;;38823:15;38854:17;38771:111;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;38895:58;38932:13;;;;;;;;;;;38948:4;38895:28;:58::i;:::-;38964:55;38998:13;;;;;;;;;;;39014:4;38964:25;:55::i;:::-;39032:15;:31;;;39071:21;39116:4;39136:24;39154:4;39136:9;:24::i;:::-;39175:1;39191::::0;39207:7:::1;:5;:7::i;:::-;39229:15;39032:223;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;38422:841::o:0;43311:296::-;2360:13;:11;:13::i;:::-;43437:9:::1;43432:168;43456:8;;:15;;43452:1;:19;43432:168;;;43528:5;43493:19;:32;43513:8;;43522:1;43513:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;43493:32;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;43569:8;;43578:1;43569:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;43553:35;;;43582:5;43553:35;;;;;;:::i;:::-;;;;;;;;43473:3;;;;;:::i;:::-;;;;43432:168;;;;43311:296:::0;;;:::o;34850:51::-;;;:::o;10810:108::-;10871:7;10898:12;;10891:19;;10810:108;:::o;44091:178::-;44194:4;44223:29;:38;44253:7;44223:38;;;;;;;;;;;;;;;;;;;;;;;;;44216:45;;44091:178;;;:::o;12977:295::-;13108:4;13125:15;13143:12;:10;:12::i;:::-;13125:30;;13166:38;13182:4;13188:7;13197:6;13166:15;:38::i;:::-;13215:27;13225:4;13231:2;13235:6;13215:9;:27::i;:::-;13260:4;13253:11;;;12977:295;;;;;:::o;35056:53::-;35102:6;35056:53;:::o;42262:306::-;2360:13;:11;:13::i;:::-;42380:1:::1;42352:30;;:16;:30;;::::0;42344:59:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;42414:17;42434:15;;;;;;;;;;;42414:35;;42478:16;42460:15;;:34;;;;;;;;;;;;;;;;;;42550:9;42510:50;;42533:15;;;;;;;;;;;42510:50;;;;;;;;;;;;42333:235;42262:306:::0;:::o;10652:93::-;10710:5;10735:2;10728:9;;10652:93;:::o;13677:270::-;13792:4;13814:13;13830:12;:10;:12::i;:::-;13814:28;;13853:64;13862:5;13869:7;13906:10;13878:25;13888:5;13895:7;13878:9;:25::i;:::-;:38;;;;:::i;:::-;13853:8;:64::i;:::-;13935:4;13928:11;;;13677:270;;;;:::o;38333:81::-;38381:25;38387:10;38399:6;38381:5;:25::i;:::-;38333:81;:::o;39271:163::-;2360:13;:11;:13::i;:::-;39325::::1;;;;;;;;;;;39324:14;39316:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;39393:4;39377:13;;:20;;;;;;;;;;;;;;;;;;39422:4;39408:11;;:18;;;;;;;;;;;;;;;;;;39271:163::o:0;34908:28::-;;;;;;;;;;;;;:::o;44277:126::-;44343:4;44367:19;:28;44387:7;44367:28;;;;;;;;;;;;;;;;;;;;;;;;;44360:35;;44277:126;;;:::o;41618:306::-;2360:13;:11;:13::i;:::-;41736:1:::1;41708:30;;:16;:30;;::::0;41700:59:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;41770:17;41790:15;;;;;;;;;;;41770:35;;41834:16;41816:15;;:34;;;;;;;;;;;;;;;;;;41906:9;41866:50;;41889:15;;;;;;;;;;;41866:50;;;;;;;;;;;;41689:235;41618:306:::0;:::o;35475:28::-;;;;:::o;35150:23::-;;;;;;;;;;;;;:::o;10981:177::-;11100:7;11132:9;:18;11142:7;11132:18;;;;;;;;;;;;;;;;11125:25;;10981:177;;;:::o;3113:103::-;2360:13;:11;:13::i;:::-;3178:30:::1;3205:1;3178:18;:30::i;:::-;3113:103::o:0;41932:322::-;2360:13;:11;:13::i;:::-;42056:1:::1;42026:32;;:18;:32;;::::0;42018:61:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;42090:17;42110;;;;;;;;;;;42090:37;;42158:18;42138:17;;:38;;;;;;;;;;;;;;;;;;42236:9;42192:54;;42217:17;;;;;;;;;;;42192:54;;;;;;;;;;;;42007:247;41932:322:::0;:::o;42576:218::-;2360:13;:11;:13::i;:::-;42732:5:::1;42691:29;:38;42721:7;42691:38;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;42771:7;42753:33;;;42780:5;42753:33;;;;;;:::i;:::-;;;;;;;;42576:218:::0;;:::o;34943:30::-;;;;;;;;;;;;;:::o;2474:87::-;2520:7;2547:6;;;;;;;;;;;2540:13;;2474:87;:::o;9910:104::-;9966:13;9999:7;9992:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9910:104;:::o;14442:505::-;14562:4;14584:13;14600:12;:10;:12::i;:::-;14584:28;;14623:24;14650:25;14660:5;14667:7;14650:9;:25::i;:::-;14623:52;;14728:15;14708:16;:35;;14686:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;14844:60;14853:5;14860:7;14888:15;14869:16;:34;14844:8;:60::i;:::-;14935:4;14928:11;;;;14442:505;;;;:::o;11360:234::-;11475:4;11497:13;11513:12;:10;:12::i;:::-;11497:28;;11536;11546:5;11553:2;11557:6;11536:9;:28::i;:::-;11582:4;11575:11;;;11360:234;;;;:::o;39541:425::-;2360:13;:11;:13::i;:::-;39670:6:::1;39665:1;39649:13;:11;:13::i;:::-;:17;;;;:::i;:::-;39648:28;;;;:::i;:::-;39638:6;:38;;39616:148;;;;;;;;;;;;:::i;:::-;;;;;;;;;39829:4;39824:1;39808:13;:11;:13::i;:::-;:17;;;;:::i;:::-;39807:26;;;;:::i;:::-;39797:6;:36;;39775:145;;;;;;;;;;;;:::i;:::-;;;;;;;;;39952:6;39931:18;:27;;;;39541:425:::0;:::o;35118:25::-;;;;;;;;;;;;;:::o;43130:173::-;2360:13;:11;:13::i;:::-;43243:5:::1;43212:19;:28;43232:7;43212:28;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;43280:7;43264:31;;;43289:5;43264:31;;;;;;:::i;:::-;;;;;;;;43130:173:::0;;:::o;34980:32::-;;;;;;;;;;;;;:::o;39974:504::-;2360:13;:11;:13::i;:::-;40175:4:::1;40170:1;40154:13;:11;:13::i;:::-;:17;;;;:::i;:::-;40153:26;;;;:::i;:::-;40133:15;:47;;40111:137;;;;;;;;;;;;:::i;:::-;;;;;;;;;40318:4;40313:1;40297:13;:11;:13::i;:::-;:17;;;;:::i;:::-;40296:26;;;;:::i;:::-;40281:10;:42;;40259:135;;;;;;;;;;;;:::i;:::-;;;;;;;;;40422:15;40405:14;:32;;;;40460:10;40448:9;:22;;;;39974:504:::0;;:::o;35211:29::-;;;;:::o;43615:468::-;2360:13;:11;:13::i;:::-;43685:12:::1;43727:1:::0;43712:17:::1;;:3;:17;;::::0;43708:368:::1;;43766:10;43758:24;;43808:21;43758:90;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43744:104;;;;;43708:368;;;43926:1;43894:3;43887:21;;;43917:4;43887:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:40;43879:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;43956:14;43980:3;43973:21;;;44003:4;43973:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;43956:53;;44031:3;44024:20;;;44045:10;44057:6;44024:40;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;43864:212;43708:368;43674:409;43615:468:::0;:::o;35019:30::-;;;;;;;;;;;;;:::o;42802:320::-;2360:13;:11;:13::i;:::-;42940:9:::1;42935:180;42959:8;;:15;;42955:1;:19;42935:180;;;43041:5;42996:29;:42;43026:8;;43035:1;43026:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;42996:42;;;;;;;;;;;;;;;;:50;;;;;;;;;;;;;;;;;;43084:8;;43093:1;43084:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;43066:37;;;43097:5;43066:37;;;;;;:::i;:::-;;;;;;;;42976:3;;;;;:::i;:::-;;;;42935:180;;;;42802:320:::0;;;:::o;35320:27::-;;;;:::o;11657:201::-;11791:7;11823:11;:18;11835:5;11823:18;;;;;;;;;;;;;;;:27;11842:7;11823:27;;;;;;;;;;;;;;;;11816:34;;11657:201;;;;:::o;39442:91::-;2360:13;:11;:13::i;:::-;39520:5:::1;39506:11;;:19;;;;;;;;;;;;;;;;;;39442:91:::0;:::o;35278:33::-;;;;:::o;3369:238::-;2360:13;:11;:13::i;:::-;3492:1:::1;3472:22;;:8;:22;;::::0;3450:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3571:28;3590:8;3571:18;:28::i;:::-;3369:238:::0;:::o;35247:24::-;;;;:::o;1021:98::-;1074:7;1101:10;1094:17;;1021:98;:::o;18529:380::-;18682:1;18665:19;;:5;:19;;;18657:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18763:1;18744:21;;:7;:21;;;18736:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18847:6;18817:11;:18;18829:5;18817:18;;;;;;;;;;;;;;;:27;18836:7;18817:27;;;;;;;;;;;;;;;:36;;;;18885:7;18869:32;;18878:5;18869:32;;;18894:6;18869:32;;;;;;:::i;:::-;;;;;;;;18529:380;;;:::o;2639:132::-;2714:12;:10;:12::i;:::-;2703:23;;:7;:5;:7::i;:::-;:23;;;2695:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2639:132::o;44411:190::-;44530:5;44495:26;:32;44522:4;44495:32;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;44587:5;44553:40;;44581:4;44553:40;;;;;;;;;;;;44411:190;;:::o;19194:502::-;19329:24;19356:25;19366:5;19373:7;19356:9;:25::i;:::-;19329:52;;19416:17;19396:16;:37;19392:297;;19496:6;19476:16;:26;;19450:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;19611:51;19620:5;19627:7;19655:6;19636:16;:25;19611:8;:51::i;:::-;19392:297;19318:378;19194:502;;;:::o;44609:3820::-;44757:1;44741:18;;:4;:18;;;44733:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;44834:1;44820:16;;:2;:16;;;44812:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;44903:1;44893:6;:11;44889:93;;44921:28;44937:4;44943:2;44947:1;44921:15;:28::i;:::-;44964:7;;44889:93;45020:7;:5;:7::i;:::-;45012:15;;:4;:15;;;;:45;;;;;45050:7;:5;:7::i;:::-;45044:13;;:2;:13;;;;45012:45;:78;;;;;45088:1;45074:16;;:2;:16;;;;45012:78;:112;;;;;35102:6;45107:17;;:2;:17;;;;45012:112;:139;;;;;45142:9;;;;;;;;;;;45141:10;45012:139;44994:1484;;;45183:13;;;;;;;;;;;45178:210;;45247:19;:25;45267:4;45247:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;45276:19;:23;45296:2;45276:23;;;;;;;;;;;;;;;;;;;;;;;;;45247:52;45217:155;;;;;;;;;;;;:::i;:::-;;;;;;;;;45178:210;45450:26;:32;45477:4;45450:32;;;;;;;;;;;;;;;;;;;;;;;;;:87;;;;;45504:29;:33;45534:2;45504:33;;;;;;;;;;;;;;;;;;;;;;;;;45503:34;45450:87;45428:1039;;;45612:14;;45602:6;:24;;45572:152;;;;;;;;;;;;:::i;:::-;;;;;;;;;45799:9;;45782:13;45792:2;45782:9;:13::i;:::-;45773:6;:22;;;;:::i;:::-;:35;;45743:135;;;;;;;;;;;;:::i;:::-;;;;;;;;;45428:1039;;;45960:26;:30;45987:2;45960:30;;;;;;;;;;;;;;;;;;;;;;;;;:87;;;;;46012:29;:35;46042:4;46012:35;;;;;;;;;;;;;;;;;;;;;;;;;46011:36;45960:87;45938:529;;;46122:14;;46112:6;:24;;46082:153;;;;;;;;;;;;:::i;:::-;;;;;;;;;45938:529;;;46262:29;:33;46292:2;46262:33;;;;;;;;;;;;;;;;;;;;;;;;;46257:210;;46372:9;;46355:13;46365:2;46355:9;:13::i;:::-;46346:6;:22;;;;:::i;:::-;:35;;46316:135;;;;;;;;;;;;:::i;:::-;;;;;;;;;46257:210;45938:529;45428:1039;44994:1484;46490:28;46521:24;46539:4;46521:9;:24::i;:::-;46490:55;;46558:12;46597:18;;46573:20;:42;;46558:57;;46646:7;:35;;;;;46670:11;;;;;;;;;;;46646:35;:62;;;;;46699:9;;;;;;;;;;;46698:10;46646:62;:112;;;;;46726:26;:32;46753:4;46726:32;;;;;;;;;;;;;;;;;;;;;;;;;46725:33;46646:112;:155;;;;;46776:19;:25;46796:4;46776:25;;;;;;;;;;;;;;;;;;;;;;;;;46775:26;46646:155;:196;;;;;46819:19;:23;46839:2;46819:23;;;;;;;;;;;;;;;;;;;;;;;;;46818:24;46646:196;46628:331;;;46881:4;46869:9;;:16;;;;;;;;;;;;;;;;;;46902:11;:9;:11::i;:::-;46942:5;46930:9;;:17;;;;;;;;;;;;;;;;;;46628:331;46971:12;46987:9;;;;;;;;;;;46986:10;46971:25;;47013:19;:25;47033:4;47013:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;47042:19;:23;47062:2;47042:23;;;;;;;;;;;;;;;;;;;;;;;;;47013:52;47009:100;;;47092:5;47082:15;;47009:100;47121:12;47154:7;47150:1187;;;47206:26;:30;47233:2;47206:30;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;47256:1;47240:13;;:17;47206:51;47202:986;;;47285:36;47315:5;47285:25;47296:13;;47285:6;:10;;:25;;;;:::i;:::-;:29;;:36;;;;:::i;:::-;47278:43;;47434:13;;47392:17;;47385:4;:24;;;;:::i;:::-;47384:63;;;;:::i;:::-;47340:19;;:107;;;;;;;:::i;:::-;;;;;;;;47560:13;;47518:17;;47511:4;:24;;;;:::i;:::-;47510:63;;;;:::i;:::-;47466:19;;:107;;;;;;;:::i;:::-;;;;;;;;47690:13;;47646:19;;47639:4;:26;;;;:::i;:::-;47638:65;;;;:::i;:::-;47592:21;;:111;;;;;;;:::i;:::-;;;;;;;;47202:986;;;47765:26;:32;47792:4;47765:32;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;;47816:1;47801:12;;:16;47765:52;47761:427;;;47845:35;47874:5;47845:24;47856:12;;47845:6;:10;;:24;;;;:::i;:::-;:28;;:35;;;;:::i;:::-;47838:42;;47950:12;;47930:16;;47923:4;:23;;;;:::i;:::-;47922:40;;;;:::i;:::-;47899:19;;:63;;;;;;;:::i;:::-;;;;;;;;48032:12;;48012:16;;48005:4;:23;;;;:::i;:::-;48004:40;;;;:::i;:::-;47981:19;;:63;;;;;;;:::i;:::-;;;;;;;;48160:12;;48117:18;;48110:4;:25;;;;:::i;:::-;48109:63;;;;:::i;:::-;48063:21;;:109;;;;;;;:::i;:::-;;;;;;;;47761:427;47202:986;48215:1;48208:4;:8;48204:91;;;48237:42;48253:4;48267;48274;48237:15;:42::i;:::-;48204:91;48321:4;48311:14;;;;;:::i;:::-;;;47150:1187;48349:33;48365:4;48371:2;48375:6;48349:15;:33::i;:::-;48409:12;;48393:13;:28;;;;44722:3707;;;;44609:3820;;;;:::o;17428:675::-;17531:1;17512:21;;:7;:21;;;17504:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17584:49;17605:7;17622:1;17626:6;17584:20;:49::i;:::-;17646:22;17671:9;:18;17681:7;17671:18;;;;;;;;;;;;;;;;17646:43;;17726:6;17708:14;:24;;17700:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;17845:6;17828:14;:23;17807:9;:18;17817:7;17807:18;;;;;;;;;;;;;;;:44;;;;17962:6;17946:12;;:22;;;;;;;;;;;18023:1;17997:37;;18006:7;17997:37;;;18027:6;17997:37;;;;;;:::i;:::-;;;;;;;;18047:48;18067:7;18084:1;18088:6;18047:19;:48::i;:::-;17493:610;17428:675;;:::o;3765:191::-;3839:16;3858:6;;;;;;;;;;;3839:25;;3884:8;3875:6;;:17;;;;;;;;;;;;;;;;;;3939:8;3908:40;;3929:8;3908:40;;;;;;;;;;;;3828:128;3765:191;:::o;15403:877::-;15550:1;15534:18;;:4;:18;;;15526:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15627:1;15613:16;;:2;:16;;;15605:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15682:38;15703:4;15709:2;15713:6;15682:20;:38::i;:::-;15733:19;15755:9;:15;15765:4;15755:15;;;;;;;;;;;;;;;;15733:37;;15818:6;15803:11;:21;;15781:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;15958:6;15944:11;:20;15926:9;:15;15936:4;15926:15;;;;;;;;;;;;;;;:38;;;;16161:6;16144:9;:13;16154:2;16144:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;16211:2;16196:26;;16205:4;16196:26;;;16215:6;16196:26;;;;;;:::i;:::-;;;;;;;;16235:37;16255:4;16261:2;16265:6;16235:19;:37::i;:::-;15515:765;15403:877;;;:::o;49328:1853::-;49369:23;49395:24;49413:4;49395:9;:24::i;:::-;49369:50;;49430:25;49528:21;;49493:19;;49458;;:54;;;;:::i;:::-;:91;;;;:::i;:::-;49430:119;;49560:12;49608:1;49589:15;:20;:46;;;;49634:1;49613:17;:22;49589:46;49585:85;;;49652:7;;;;;49585:85;49725:2;49704:18;;:23;;;;:::i;:::-;49686:15;:41;49682:115;;;49783:2;49762:18;;:23;;;;:::i;:::-;49744:41;;49682:115;49809:23;49923:1;49890:17;49854:19;;49836:15;:37;;;;:::i;:::-;49835:72;;;;:::i;:::-;:89;;;;:::i;:::-;49809:115;;49935:26;49964:36;49984:15;49964;:19;;:36;;;;:::i;:::-;49935:65;;50013:25;50041:21;50013:49;;50075:37;50093:18;50075:17;:37::i;:::-;50125:18;50146:44;50172:17;50146:21;:25;;:44;;;;:::i;:::-;50125:65;;50203:23;50229:82;50283:17;50229:35;50244:19;;50229:10;:14;;:35;;;;:::i;:::-;:39;;:82;;;;:::i;:::-;50203:108;;50324:25;50352:84;50408:17;50352:37;50367:21;;50352:10;:14;;:37;;;;:::i;:::-;:41;;:84;;;;:::i;:::-;50324:112;;50449:23;50532:17;50501:15;50475:10;:41;;;;:::i;:::-;:74;;;;:::i;:::-;50449:100;;50584:1;50562:19;:23;;;;50618:1;50596:19;:23;;;;50654:1;50630:21;:25;;;;50690:1;50672:15;:19;:42;;;;;50713:1;50695:15;:19;50672:42;50668:280;;;50731:47;50745:15;50762;50731:13;:47::i;:::-;50798:138;50831:18;50868:15;50902:19;;50798:138;;;;;;;;:::i;:::-;;;;;;;;50668:280;50982:17;;;;;;;;;;;50974:31;;51013:17;50974:85;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;50960:99;;;;;51094:15;;;;;;;;;;;51086:29;;51137:21;51086:87;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;51072:101;;;;;49358:1823;;;;;;;;;;49328:1853;:::o;24807:98::-;24865:7;24896:1;24892;:5;;;;:::i;:::-;24885:12;;24807:98;;;;:::o;25204:::-;25262:7;25293:1;25289;:5;;;;:::i;:::-;25282:12;;25204:98;;;;:::o;20268:125::-;;;;:::o;20969:124::-;;;;:::o;24452:98::-;24510:7;24541:1;24537;:5;;;;:::i;:::-;24530:12;;24452:98;;;;:::o;48437:503::-;48505:21;48543:1;48529:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48505:40;;48574:4;48556;48561:1;48556:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;48600:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;48590:4;48595:1;48590:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;48635:62;48652:4;48667:15;48685:11;48635:8;:62::i;:::-;48736:15;:66;;;48817:11;48843:1;48859:4;48886;48906:15;48736:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48494:446;48437:503;:::o;48948:372::-;49031:62;49048:4;49063:15;49081:11;49031:8;:62::i;:::-;49106:15;:31;;;49145:9;49178:4;49198:11;49224:1;49240;49256:15;;;;;;;;;;;49286;49106:206;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;48948:372;;:::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;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:619::-;3523:6;3531;3539;3588:2;3576:9;3567:7;3563:23;3559:32;3556:119;;;3594:79;;:::i;:::-;3556:119;3714:1;3739:53;3784:7;3775:6;3764:9;3760:22;3739:53;:::i;:::-;3729:63;;3685:117;3841:2;3867:53;3912:7;3903:6;3892:9;3888:22;3867:53;:::i;:::-;3857:63;;3812:118;3969:2;3995:53;4040:7;4031:6;4020:9;4016:22;3995:53;:::i;:::-;3985:63;;3940:118;3446:619;;;;;:::o;4071:117::-;4180:1;4177;4170:12;4194:117;4303:1;4300;4293:12;4317:117;4426:1;4423;4416:12;4457:568;4530:8;4540:6;4590:3;4583:4;4575:6;4571:17;4567:27;4557:122;;4598:79;;:::i;:::-;4557:122;4711:6;4698:20;4688:30;;4741:18;4733:6;4730:30;4727:117;;;4763:79;;:::i;:::-;4727:117;4877:4;4869:6;4865:17;4853:29;;4931:3;4923:4;4915:6;4911:17;4901:8;4897:32;4894:41;4891:128;;;4938:79;;:::i;:::-;4891:128;4457:568;;;;;:::o;5031:116::-;5101:21;5116:5;5101:21;:::i;:::-;5094:5;5091:32;5081:60;;5137:1;5134;5127:12;5081:60;5031:116;:::o;5153:133::-;5196:5;5234:6;5221:20;5212:29;;5250:30;5274:5;5250:30;:::i;:::-;5153:133;;;;:::o;5292:698::-;5384:6;5392;5400;5449:2;5437:9;5428:7;5424:23;5420:32;5417:119;;;5455:79;;:::i;:::-;5417:119;5603:1;5592:9;5588:17;5575:31;5633:18;5625:6;5622:30;5619:117;;;5655:79;;:::i;:::-;5619:117;5768:80;5840:7;5831:6;5820:9;5816:22;5768:80;:::i;:::-;5750:98;;;;5546:312;5897:2;5923:50;5965:7;5956:6;5945:9;5941:22;5923:50;:::i;:::-;5913:60;;5868:115;5292:698;;;;;:::o;5996:60::-;6024:3;6045:5;6038:12;;5996:60;;;:::o;6062:142::-;6112:9;6145:53;6163:34;6172:24;6190:5;6172:24;:::i;:::-;6163:34;:::i;:::-;6145:53;:::i;:::-;6132:66;;6062:142;;;:::o;6210:126::-;6260:9;6293:37;6324:5;6293:37;:::i;:::-;6280:50;;6210:126;;;:::o;6342:153::-;6419:9;6452:37;6483:5;6452:37;:::i;:::-;6439:50;;6342:153;;;:::o;6501:185::-;6615:64;6673:5;6615:64;:::i;:::-;6610:3;6603:77;6501:185;;:::o;6692:276::-;6812:4;6850:2;6839:9;6835:18;6827:26;;6863:98;6958:1;6947:9;6943:17;6934:6;6863:98;:::i;:::-;6692:276;;;;:::o;6974:118::-;7061:24;7079:5;7061:24;:::i;:::-;7056:3;7049:37;6974:118;;:::o;7098:222::-;7191:4;7229:2;7218:9;7214:18;7206:26;;7242:71;7310:1;7299:9;7295:17;7286:6;7242:71;:::i;:::-;7098:222;;;;:::o;7326:329::-;7385:6;7434:2;7422:9;7413:7;7409:23;7405:32;7402:119;;;7440:79;;:::i;:::-;7402:119;7560:1;7585:53;7630:7;7621:6;7610:9;7606:22;7585:53;:::i;:::-;7575:63;;7531:117;7326:329;;;;:::o;7661:619::-;7738:6;7746;7754;7803:2;7791:9;7782:7;7778:23;7774:32;7771:119;;;7809:79;;:::i;:::-;7771:119;7929:1;7954:53;7999:7;7990:6;7979:9;7975:22;7954:53;:::i;:::-;7944:63;;7900:117;8056:2;8082:53;8127:7;8118:6;8107:9;8103:22;8082:53;:::i;:::-;8072:63;;8027:118;8184:2;8210:53;8255:7;8246:6;8235:9;8231:22;8210:53;:::i;:::-;8200:63;;8155:118;7661:619;;;;;:::o;8286:118::-;8373:24;8391:5;8373:24;:::i;:::-;8368:3;8361:37;8286:118;;:::o;8410:222::-;8503:4;8541:2;8530:9;8526:18;8518:26;;8554:71;8622:1;8611:9;8607:17;8598:6;8554:71;:::i;:::-;8410:222;;;;:::o;8638:86::-;8673:7;8713:4;8706:5;8702:16;8691:27;;8638:86;;;:::o;8730:112::-;8813:22;8829:5;8813:22;:::i;:::-;8808:3;8801:35;8730:112;;:::o;8848:214::-;8937:4;8975:2;8964:9;8960:18;8952:26;;8988:67;9052:1;9041:9;9037:17;9028:6;8988:67;:::i;:::-;8848:214;;;;:::o;9068:329::-;9127:6;9176:2;9164:9;9155:7;9151:23;9147:32;9144:119;;;9182:79;;:::i;:::-;9144:119;9302:1;9327:53;9372:7;9363:6;9352:9;9348:22;9327:53;:::i;:::-;9317:63;;9273:117;9068:329;;;;:::o;9403:468::-;9468:6;9476;9525:2;9513:9;9504:7;9500:23;9496:32;9493:119;;;9531:79;;:::i;:::-;9493:119;9651:1;9676:53;9721:7;9712:6;9701:9;9697:22;9676:53;:::i;:::-;9666:63;;9622:117;9778:2;9804:50;9846:7;9837:6;9826:9;9822:22;9804:50;:::i;:::-;9794:60;;9749:115;9403:468;;;;;:::o;9877:474::-;9945:6;9953;10002:2;9990:9;9981:7;9977:23;9973:32;9970:119;;;10008:79;;:::i;:::-;9970:119;10128:1;10153:53;10198:7;10189:6;10178:9;10174:22;10153:53;:::i;:::-;10143:63;;10099:117;10255:2;10281:53;10326:7;10317:6;10306:9;10302:22;10281:53;:::i;:::-;10271:63;;10226:118;9877:474;;;;;:::o;10357:::-;10425:6;10433;10482:2;10470:9;10461:7;10457:23;10453:32;10450:119;;;10488:79;;:::i;:::-;10450:119;10608:1;10633:53;10678:7;10669:6;10658:9;10654:22;10633:53;:::i;:::-;10623:63;;10579:117;10735:2;10761:53;10806:7;10797:6;10786:9;10782:22;10761:53;:::i;:::-;10751:63;;10706:118;10357:474;;;;;:::o;10837:323::-;10893:6;10942:2;10930:9;10921:7;10917:23;10913:32;10910:119;;;10948:79;;:::i;:::-;10910:119;11068:1;11093:50;11135:7;11126:6;11115:9;11111:22;11093:50;:::i;:::-;11083:60;;11039:114;10837:323;;;;:::o;11166:180::-;11214:77;11211:1;11204:88;11311:4;11308:1;11301:15;11335:4;11332:1;11325:15;11352:320;11396:6;11433:1;11427:4;11423:12;11413:22;;11480:1;11474:4;11470:12;11501:18;11491:81;;11557:4;11549:6;11545:17;11535:27;;11491:81;11619:2;11611:6;11608:14;11588:18;11585:38;11582:84;;11638:18;;:::i;:::-;11582:84;11403:269;11352:320;;;:::o;11678:180::-;11726:77;11723:1;11716:88;11823:4;11820:1;11813:15;11847:4;11844:1;11837:15;11864:191;11904:3;11923:20;11941:1;11923:20;:::i;:::-;11918:25;;11957:20;11975:1;11957:20;:::i;:::-;11952:25;;12000:1;11997;11993:9;11986:16;;12021:3;12018:1;12015:10;12012:36;;;12028:18;;:::i;:::-;12012:36;11864:191;;;;:::o;12061:222::-;12201:34;12197:1;12189:6;12185:14;12178:58;12270:5;12265:2;12257:6;12253:15;12246:30;12061:222;:::o;12289:366::-;12431:3;12452:67;12516:2;12511:3;12452:67;:::i;:::-;12445:74;;12528:93;12617:3;12528:93;:::i;:::-;12646:2;12641:3;12637:12;12630:19;;12289:366;;;:::o;12661:419::-;12827:4;12865:2;12854:9;12850:18;12842:26;;12914:9;12908:4;12904:20;12900:1;12889:9;12885:17;12878:47;12942:131;13068:4;12942:131;:::i;:::-;12934:139;;12661:419;;;:::o;13086:173::-;13226:25;13222:1;13214:6;13210:14;13203:49;13086:173;:::o;13265:366::-;13407:3;13428:67;13492:2;13487:3;13428:67;:::i;:::-;13421:74;;13504:93;13593:3;13504:93;:::i;:::-;13622:2;13617:3;13613:12;13606:19;;13265:366;;;:::o;13637:419::-;13803:4;13841:2;13830:9;13826:18;13818:26;;13890:9;13884:4;13880:20;13876:1;13865:9;13861:17;13854:47;13918:131;14044:4;13918:131;:::i;:::-;13910:139;;13637:419;;;:::o;14062:143::-;14119:5;14150:6;14144:13;14135:22;;14166:33;14193:5;14166:33;:::i;:::-;14062:143;;;;:::o;14211:351::-;14281:6;14330:2;14318:9;14309:7;14305:23;14301:32;14298:119;;;14336:79;;:::i;:::-;14298:119;14456:1;14481:64;14537:7;14528:6;14517:9;14513:22;14481:64;:::i;:::-;14471:74;;14427:128;14211:351;;;;:::o;14568:332::-;14689:4;14727:2;14716:9;14712:18;14704:26;;14740:71;14808:1;14797:9;14793:17;14784:6;14740:71;:::i;:::-;14821:72;14889:2;14878:9;14874:18;14865:6;14821:72;:::i;:::-;14568:332;;;;;:::o;14906:::-;15027:4;15065:2;15054:9;15050:18;15042:26;;15078:71;15146:1;15135:9;15131:17;15122:6;15078:71;:::i;:::-;15159:72;15227:2;15216:9;15212:18;15203:6;15159:72;:::i;:::-;14906:332;;;;;:::o;15244:137::-;15298:5;15329:6;15323:13;15314:22;;15345:30;15369:5;15345:30;:::i;:::-;15244:137;;;;:::o;15387:345::-;15454:6;15503:2;15491:9;15482:7;15478:23;15474:32;15471:119;;;15509:79;;:::i;:::-;15471:119;15629:1;15654:61;15707:7;15698:6;15687:9;15683:22;15654:61;:::i;:::-;15644:71;;15600:125;15387:345;;;;:::o;15738:85::-;15783:7;15812:5;15801:16;;15738:85;;;:::o;15829:158::-;15887:9;15920:61;15938:42;15947:32;15973:5;15947:32;:::i;:::-;15938:42;:::i;:::-;15920:61;:::i;:::-;15907:74;;15829:158;;;:::o;15993:147::-;16088:45;16127:5;16088:45;:::i;:::-;16083:3;16076:58;15993:147;;:::o;16146:807::-;16395:4;16433:3;16422:9;16418:19;16410:27;;16447:71;16515:1;16504:9;16500:17;16491:6;16447:71;:::i;:::-;16528:72;16596:2;16585:9;16581:18;16572:6;16528:72;:::i;:::-;16610:80;16686:2;16675:9;16671:18;16662:6;16610:80;:::i;:::-;16700;16776:2;16765:9;16761:18;16752:6;16700:80;:::i;:::-;16790:73;16858:3;16847:9;16843:19;16834:6;16790:73;:::i;:::-;16873;16941:3;16930:9;16926:19;16917:6;16873:73;:::i;:::-;16146:807;;;;;;;;;:::o;16959:143::-;17016:5;17047:6;17041:13;17032:22;;17063:33;17090:5;17063:33;:::i;:::-;16959:143;;;;:::o;17108:663::-;17196:6;17204;17212;17261:2;17249:9;17240:7;17236:23;17232:32;17229:119;;;17267:79;;:::i;:::-;17229:119;17387:1;17412:64;17468:7;17459:6;17448:9;17444:22;17412:64;:::i;:::-;17402:74;;17358:128;17525:2;17551:64;17607:7;17598:6;17587:9;17583:22;17551:64;:::i;:::-;17541:74;;17496:129;17664:2;17690:64;17746:7;17737:6;17726:9;17722:22;17690:64;:::i;:::-;17680:74;;17635:129;17108:663;;;;;:::o;17777:180::-;17825:77;17822:1;17815:88;17922:4;17919:1;17912:15;17946:4;17943:1;17936:15;17963:233;18002:3;18025:24;18043:5;18025:24;:::i;:::-;18016:33;;18071:66;18064:5;18061:77;18058:103;;18141:18;;:::i;:::-;18058:103;18188:1;18181:5;18177:13;18170:20;;17963:233;;;:::o;18202:166::-;18342:18;18338:1;18330:6;18326:14;18319:42;18202:166;:::o;18374:366::-;18516:3;18537:67;18601:2;18596:3;18537:67;:::i;:::-;18530:74;;18613:93;18702:3;18613:93;:::i;:::-;18731:2;18726:3;18722:12;18715:19;;18374:366;;;:::o;18746:419::-;18912:4;18950:2;18939:9;18935:18;18927:26;;18999:9;18993:4;18989:20;18985:1;18974:9;18970:17;18963:47;19027:131;19153:4;19027:131;:::i;:::-;19019:139;;18746:419;;;:::o;19171:224::-;19311:34;19307:1;19299:6;19295:14;19288:58;19380:7;19375:2;19367:6;19363:15;19356:32;19171:224;:::o;19401:366::-;19543:3;19564:67;19628:2;19623:3;19564:67;:::i;:::-;19557:74;;19640:93;19729:3;19640:93;:::i;:::-;19758:2;19753:3;19749:12;19742:19;;19401:366;;;:::o;19773:419::-;19939:4;19977:2;19966:9;19962:18;19954:26;;20026:9;20020:4;20016:20;20012:1;20001:9;19997:17;19990:47;20054:131;20180:4;20054:131;:::i;:::-;20046:139;;19773:419;;;:::o;20198:410::-;20238:7;20261:20;20279:1;20261:20;:::i;:::-;20256:25;;20295:20;20313:1;20295:20;:::i;:::-;20290:25;;20350:1;20347;20343:9;20372:30;20390:11;20372:30;:::i;:::-;20361:41;;20551:1;20542:7;20538:15;20535:1;20532:22;20512:1;20505:9;20485:83;20462:139;;20581:18;;:::i;:::-;20462:139;20246:362;20198:410;;;;:::o;20614:180::-;20662:77;20659:1;20652:88;20759:4;20756:1;20749:15;20783:4;20780:1;20773:15;20800:185;20840:1;20857:20;20875:1;20857:20;:::i;:::-;20852:25;;20891:20;20909:1;20891:20;:::i;:::-;20886:25;;20930:1;20920:35;;20935:18;;:::i;:::-;20920:35;20977:1;20974;20970:9;20965:14;;20800:185;;;;:::o;20991:247::-;21131:34;21127:1;21119:6;21115:14;21108:58;21200:30;21195:2;21187:6;21183:15;21176:55;20991:247;:::o;21244:366::-;21386:3;21407:67;21471:2;21466:3;21407:67;:::i;:::-;21400:74;;21483:93;21572:3;21483:93;:::i;:::-;21601:2;21596:3;21592:12;21585:19;;21244:366;;;:::o;21616:419::-;21782:4;21820:2;21809:9;21805:18;21797:26;;21869:9;21863:4;21859:20;21855:1;21844:9;21840:17;21833:47;21897:131;22023:4;21897:131;:::i;:::-;21889:139;;21616:419;;;:::o;22041:246::-;22181:34;22177:1;22169:6;22165:14;22158:58;22250:29;22245:2;22237:6;22233:15;22226:54;22041:246;:::o;22293:366::-;22435:3;22456:67;22520:2;22515:3;22456:67;:::i;:::-;22449:74;;22532:93;22621:3;22532:93;:::i;:::-;22650:2;22645:3;22641:12;22634:19;;22293:366;;;:::o;22665:419::-;22831:4;22869:2;22858:9;22854:18;22846:26;;22918:9;22912:4;22908:20;22904:1;22893:9;22889:17;22882:47;22946:131;23072:4;22946:131;:::i;:::-;22938:139;;22665:419;;;:::o;23090:227::-;23230:34;23226:1;23218:6;23214:14;23207:58;23299:10;23294:2;23286:6;23282:15;23275:35;23090:227;:::o;23323:366::-;23465:3;23486:67;23550:2;23545:3;23486:67;:::i;:::-;23479:74;;23562:93;23651:3;23562:93;:::i;:::-;23680:2;23675:3;23671:12;23664:19;;23323:366;;;:::o;23695:419::-;23861:4;23899:2;23888:9;23884:18;23876:26;;23948:9;23942:4;23938:20;23934:1;23923:9;23919:17;23912:47;23976:131;24102:4;23976:131;:::i;:::-;23968:139;;23695:419;;;:::o;24120:230::-;24260:34;24256:1;24248:6;24244:14;24237:58;24329:13;24324:2;24316:6;24312:15;24305:38;24120:230;:::o;24356:366::-;24498:3;24519:67;24583:2;24578:3;24519:67;:::i;:::-;24512:74;;24595:93;24684:3;24595:93;:::i;:::-;24713:2;24708:3;24704:12;24697:19;;24356:366;;;:::o;24728:419::-;24894:4;24932:2;24921:9;24917:18;24909:26;;24981:9;24975:4;24971:20;24967:1;24956:9;24952:17;24945:47;25009:131;25135:4;25009:131;:::i;:::-;25001:139;;24728:419;;;:::o;25153:147::-;25254:11;25291:3;25276:18;;25153:147;;;;:::o;25306:114::-;;:::o;25426:398::-;25585:3;25606:83;25687:1;25682:3;25606:83;:::i;:::-;25599:90;;25698:93;25787:3;25698:93;:::i;:::-;25816:1;25811:3;25807:11;25800:18;;25426:398;;;:::o;25830:379::-;26014:3;26036:147;26179:3;26036:147;:::i;:::-;26029:154;;26200:3;26193:10;;25830:379;;;:::o;26215:351::-;26285:6;26334:2;26322:9;26313:7;26309:23;26305:32;26302:119;;;26340:79;;:::i;:::-;26302:119;26460:1;26485:64;26541:7;26532:6;26521:9;26517:22;26485:64;:::i;:::-;26475:74;;26431:128;26215:351;;;;:::o;26572:159::-;26712:11;26708:1;26700:6;26696:14;26689:35;26572:159;:::o;26737:365::-;26879:3;26900:66;26964:1;26959:3;26900:66;:::i;:::-;26893:73;;26975:93;27064:3;26975:93;:::i;:::-;27093:2;27088:3;27084:12;27077:19;;26737:365;;;:::o;27108:419::-;27274:4;27312:2;27301:9;27297:18;27289:26;;27361:9;27355:4;27351:20;27347:1;27336:9;27332:17;27325:47;27389:131;27515:4;27389:131;:::i;:::-;27381:139;;27108:419;;;:::o;27533:225::-;27673:34;27669:1;27661:6;27657:14;27650:58;27742:8;27737:2;27729:6;27725:15;27718:33;27533:225;:::o;27764:366::-;27906:3;27927:67;27991:2;27986:3;27927:67;:::i;:::-;27920:74;;28003:93;28092:3;28003:93;:::i;:::-;28121:2;28116:3;28112:12;28105:19;;27764:366;;;:::o;28136:419::-;28302:4;28340:2;28329:9;28325:18;28317:26;;28389:9;28383:4;28379:20;28375:1;28364:9;28360:17;28353:47;28417:131;28543:4;28417:131;:::i;:::-;28409:139;;28136:419;;;:::o;28561:223::-;28701:34;28697:1;28689:6;28685:14;28678:58;28770:6;28765:2;28757:6;28753:15;28746:31;28561:223;:::o;28790:366::-;28932:3;28953:67;29017:2;29012:3;28953:67;:::i;:::-;28946:74;;29029:93;29118:3;29029:93;:::i;:::-;29147:2;29142:3;29138:12;29131:19;;28790:366;;;:::o;29162:419::-;29328:4;29366:2;29355:9;29351:18;29343:26;;29415:9;29409:4;29405:20;29401:1;29390:9;29386:17;29379:47;29443:131;29569:4;29443:131;:::i;:::-;29435:139;;29162:419;;;:::o;29587:221::-;29727:34;29723:1;29715:6;29711:14;29704:58;29796:4;29791:2;29783:6;29779:15;29772:29;29587:221;:::o;29814:366::-;29956:3;29977:67;30041:2;30036:3;29977:67;:::i;:::-;29970:74;;30053:93;30142:3;30053:93;:::i;:::-;30171:2;30166:3;30162:12;30155:19;;29814:366;;;:::o;30186:419::-;30352:4;30390:2;30379:9;30375:18;30367:26;;30439:9;30433:4;30429:20;30425:1;30414:9;30410:17;30403:47;30467:131;30593:4;30467:131;:::i;:::-;30459:139;;30186:419;;;:::o;30611:182::-;30751:34;30747:1;30739:6;30735:14;30728:58;30611:182;:::o;30799:366::-;30941:3;30962:67;31026:2;31021:3;30962:67;:::i;:::-;30955:74;;31038:93;31127:3;31038:93;:::i;:::-;31156:2;31151:3;31147:12;31140:19;;30799:366;;;:::o;31171:419::-;31337:4;31375:2;31364:9;31360:18;31352:26;;31424:9;31418:4;31414:20;31410:1;31399:9;31395:17;31388:47;31452:131;31578:4;31452:131;:::i;:::-;31444:139;;31171:419;;;:::o;31596:179::-;31736:31;31732:1;31724:6;31720:14;31713:55;31596:179;:::o;31781:366::-;31923:3;31944:67;32008:2;32003:3;31944:67;:::i;:::-;31937:74;;32020:93;32109:3;32020:93;:::i;:::-;32138:2;32133:3;32129:12;32122:19;;31781:366;;;:::o;32153:419::-;32319:4;32357:2;32346:9;32342:18;32334:26;;32406:9;32400:4;32396:20;32392:1;32381:9;32377:17;32370:47;32434:131;32560:4;32434:131;:::i;:::-;32426:139;;32153:419;;;:::o;32578:224::-;32718:34;32714:1;32706:6;32702:14;32695:58;32787:7;32782:2;32774:6;32770:15;32763:32;32578:224;:::o;32808:366::-;32950:3;32971:67;33035:2;33030:3;32971:67;:::i;:::-;32964:74;;33047:93;33136:3;33047:93;:::i;:::-;33165:2;33160:3;33156:12;33149:19;;32808:366;;;:::o;33180:419::-;33346:4;33384:2;33373:9;33369:18;33361:26;;33433:9;33427:4;33423:20;33419:1;33408:9;33404:17;33397:47;33461:131;33587:4;33461:131;:::i;:::-;33453:139;;33180:419;;;:::o;33605:222::-;33745:34;33741:1;33733:6;33729:14;33722:58;33814:5;33809:2;33801:6;33797:15;33790:30;33605:222;:::o;33833:366::-;33975:3;33996:67;34060:2;34055:3;33996:67;:::i;:::-;33989:74;;34072:93;34161:3;34072:93;:::i;:::-;34190:2;34185:3;34181:12;34174:19;;33833:366;;;:::o;34205:419::-;34371:4;34409:2;34398:9;34394:18;34386:26;;34458:9;34452:4;34448:20;34444:1;34433:9;34429:17;34422:47;34486:131;34612:4;34486:131;:::i;:::-;34478:139;;34205:419;;;:::o;34630:179::-;34770:31;34766:1;34758:6;34754:14;34747:55;34630:179;:::o;34815:366::-;34957:3;34978:67;35042:2;35037:3;34978:67;:::i;:::-;34971:74;;35054:93;35143:3;35054:93;:::i;:::-;35172:2;35167:3;35163:12;35156:19;;34815:366;;;:::o;35187:419::-;35353:4;35391:2;35380:9;35376:18;35368:26;;35440:9;35434:4;35430:20;35426:1;35415:9;35411:17;35404:47;35468:131;35594:4;35468:131;:::i;:::-;35460:139;;35187:419;;;:::o;35612:241::-;35752:34;35748:1;35740:6;35736:14;35729:58;35821:24;35816:2;35808:6;35804:15;35797:49;35612:241;:::o;35859:366::-;36001:3;36022:67;36086:2;36081:3;36022:67;:::i;:::-;36015:74;;36098:93;36187:3;36098:93;:::i;:::-;36216:2;36211:3;36207:12;36200:19;;35859:366;;;:::o;36231:419::-;36397:4;36435:2;36424:9;36420:18;36412:26;;36484:9;36478:4;36474:20;36470:1;36459:9;36455:17;36448:47;36512:131;36638:4;36512:131;:::i;:::-;36504:139;;36231:419;;;:::o;36656:176::-;36796:28;36792:1;36784:6;36780:14;36773:52;36656:176;:::o;36838:366::-;36980:3;37001:67;37065:2;37060:3;37001:67;:::i;:::-;36994:74;;37077:93;37166:3;37077:93;:::i;:::-;37195:2;37190:3;37186:12;37179:19;;36838:366;;;:::o;37210:419::-;37376:4;37414:2;37403:9;37399:18;37391:26;;37463:9;37457:4;37453:20;37449:1;37438:9;37434:17;37427:47;37491:131;37617:4;37491:131;:::i;:::-;37483:139;;37210:419;;;:::o;37635:242::-;37775:34;37771:1;37763:6;37759:14;37752:58;37844:25;37839:2;37831:6;37827:15;37820:50;37635:242;:::o;37883:366::-;38025:3;38046:67;38110:2;38105:3;38046:67;:::i;:::-;38039:74;;38122:93;38211:3;38122:93;:::i;:::-;38240:2;38235:3;38231:12;38224:19;;37883:366;;;:::o;38255:419::-;38421:4;38459:2;38448:9;38444:18;38436:26;;38508:9;38502:4;38498:20;38494:1;38483:9;38479:17;38472:47;38536:131;38662:4;38536:131;:::i;:::-;38528:139;;38255:419;;;:::o;38680:194::-;38720:4;38740:20;38758:1;38740:20;:::i;:::-;38735:25;;38774:20;38792:1;38774:20;:::i;:::-;38769:25;;38818:1;38815;38811:9;38803:17;;38842:1;38836:4;38833:11;38830:37;;;38847:18;;:::i;:::-;38830:37;38680:194;;;;:::o;38880:220::-;39020:34;39016:1;39008:6;39004:14;38997:58;39089:3;39084:2;39076:6;39072:15;39065:28;38880:220;:::o;39106:366::-;39248:3;39269:67;39333:2;39328:3;39269:67;:::i;:::-;39262:74;;39345:93;39434:3;39345:93;:::i;:::-;39463:2;39458:3;39454:12;39447:19;;39106:366;;;:::o;39478:419::-;39644:4;39682:2;39671:9;39667:18;39659:26;;39731:9;39725:4;39721:20;39717:1;39706:9;39702:17;39695:47;39759:131;39885:4;39759:131;:::i;:::-;39751:139;;39478:419;;;:::o;39903:221::-;40043:34;40039:1;40031:6;40027:14;40020:58;40112:4;40107:2;40099:6;40095:15;40088:29;39903:221;:::o;40130:366::-;40272:3;40293:67;40357:2;40352:3;40293:67;:::i;:::-;40286:74;;40369:93;40458:3;40369:93;:::i;:::-;40487:2;40482:3;40478:12;40471:19;;40130:366;;;:::o;40502:419::-;40668:4;40706:2;40695:9;40691:18;40683:26;;40755:9;40749:4;40745:20;40741:1;40730:9;40726:17;40719:47;40783:131;40909:4;40783:131;:::i;:::-;40775:139;;40502:419;;;:::o;40927:225::-;41067:34;41063:1;41055:6;41051:14;41044:58;41136:8;41131:2;41123:6;41119:15;41112:33;40927:225;:::o;41158:366::-;41300:3;41321:67;41385:2;41380:3;41321:67;:::i;:::-;41314:74;;41397:93;41486:3;41397:93;:::i;:::-;41515:2;41510:3;41506:12;41499:19;;41158:366;;;:::o;41530:419::-;41696:4;41734:2;41723:9;41719:18;41711:26;;41783:9;41777:4;41773:20;41769:1;41758:9;41754:17;41747:47;41811:131;41937:4;41811:131;:::i;:::-;41803:139;;41530:419;;;:::o;41955:442::-;42104:4;42142:2;42131:9;42127:18;42119:26;;42155:71;42223:1;42212:9;42208:17;42199:6;42155:71;:::i;:::-;42236:72;42304:2;42293:9;42289:18;42280:6;42236:72;:::i;:::-;42318;42386:2;42375:9;42371:18;42362:6;42318:72;:::i;:::-;41955:442;;;;;;:::o;42403:180::-;42451:77;42448:1;42441:88;42548:4;42545:1;42538:15;42572:4;42569:1;42562:15;42589:114;42656:6;42690:5;42684:12;42674:22;;42589:114;;;:::o;42709:184::-;42808:11;42842:6;42837:3;42830:19;42882:4;42877:3;42873:14;42858:29;;42709:184;;;;:::o;42899:132::-;42966:4;42989:3;42981:11;;43019:4;43014:3;43010:14;43002:22;;42899:132;;;:::o;43037:108::-;43114:24;43132:5;43114:24;:::i;:::-;43109:3;43102:37;43037:108;;:::o;43151:179::-;43220:10;43241:46;43283:3;43275:6;43241:46;:::i;:::-;43319:4;43314:3;43310:14;43296:28;;43151:179;;;;:::o;43336:113::-;43406:4;43438;43433:3;43429:14;43421:22;;43336:113;;;:::o;43485:732::-;43604:3;43633:54;43681:5;43633:54;:::i;:::-;43703:86;43782:6;43777:3;43703:86;:::i;:::-;43696:93;;43813:56;43863:5;43813:56;:::i;:::-;43892:7;43923:1;43908:284;43933:6;43930:1;43927:13;43908:284;;;44009:6;44003:13;44036:63;44095:3;44080:13;44036:63;:::i;:::-;44029:70;;44122:60;44175:6;44122:60;:::i;:::-;44112:70;;43968:224;43955:1;43952;43948:9;43943:14;;43908:284;;;43912:14;44208:3;44201:10;;43609:608;;;43485:732;;;;:::o;44223:831::-;44486:4;44524:3;44513:9;44509:19;44501:27;;44538:71;44606:1;44595:9;44591:17;44582:6;44538:71;:::i;:::-;44619:80;44695:2;44684:9;44680:18;44671:6;44619:80;:::i;:::-;44746:9;44740:4;44736:20;44731:2;44720:9;44716:18;44709:48;44774:108;44877:4;44868:6;44774:108;:::i;:::-;44766:116;;44892:72;44960:2;44949:9;44945:18;44936:6;44892:72;:::i;:::-;44974:73;45042:3;45031:9;45027:19;45018:6;44974:73;:::i;:::-;44223:831;;;;;;;;:::o
Swarm Source
ipfs://69ddb459e000a6ab62b41e76374efab3d45f5be0e826cfa57179346fec234a3b
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.