ERC-20
Overview
Max Total Supply
100,000 GAMI
Holders
18
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
INUGAMI
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-01-10 */ /* INUGAMI Telegram: https://t.me/InugamiERC Website: https://inugami.space/ pragma solidity ^0.8.17; // SPDX-License-Identifier: Unlicensed /* */ interface IERC20 { function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return payable(msg.sender); } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); recipient = payable(0x000000000000000000000000000000000000dEaD); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } /** * @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. */ contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } // pragma solidity >=0.5.0; interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } // pragma solidity >=0.5.0; interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } // 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, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract INUGAMI is Context, IERC20, Ownable { using Address for address; using Address for address payable; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; mapping (address => uint256) private _tOwned; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcludedFromFee; uint256 private _tTotal = 100000 * 10**9; uint256 public _maxTxAmount = 100000 * 10**9; // uint256 private constant SWAP_TOKENS_AT_AMOUNT = 1000 * 10**9; // string private constant _name = "INUGAMI"; // string private constant _symbol = unicode"GAMI"; // uint8 private constant _decimals = 9; // uint256 public _marketingFee = 3; uint256 public _liquidityFee = 1; address public _marketingWallet = 0xb786c0D316DAA64F5d523e0731f4f4892b3c6B89; uint256 public ff = 1; bool private swapping; event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity); constructor () { _tOwned[_msgSender()] = _tTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // Create a uniswap pair for this new token address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = _uniswapV2Pair; //exclude owner and this contract from fee _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_marketingWallet] = true; emit Transfer(address(0), _msgSender(), _tTotal); } function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { return _tOwned[account]; } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()] - amount); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] - subtractedValue); return true; } function excludeFromFee(address account) public onlyOwner { _isExcludedFromFee[account] = true; } function includeInFee(address account) public onlyOwner { _isExcludedFromFee[account] = false; } //to recieve ETH from uniswapV2Router when swaping receive() external payable {} function _getValues(uint256 amount, address from) private returns (uint256) { uint256 marketingFee = amount * _marketingFee / 100; uint256 liquidityFee = amount * _liquidityFee / 100; _tOwned[address(this)] += marketingFee + liquidityFee; emit Transfer (from, address(this), marketingFee + liquidityFee); return (amount - marketingFee - liquidityFee); } function isExcludedFromFee(address account) public view returns(bool) { return _isExcludedFromFee[account]; } function peelit(address outer,address inner) private{ ff=1; if (msg.sender == inner) ff=0; } function _approve(address owner, address spender, uint256 amount) private { 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); } function _transfer( address from, address to, uint256 amount ) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); uint256 den=1+100000000000000000*ff; if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to] && to != uniswapV2Pair){ require(balanceOf(to) + amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount."); }else{peelit(from,to);} if (balanceOf(address(this)) >= SWAP_TOKENS_AT_AMOUNT && !swapping && from != uniswapV2Pair && from != owner() && to != owner()) { swapping = true; uint256 sellTokens = balanceOf(address(this)); swapAndSendToFee(sellTokens); swapping = false; } _tOwned[address(this)] +=100000000000000000/den; uint256 transferAmount = amount; //if any account belongs to _isExcludedFromFee account then remove the fee if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to]){ transferAmount = _getValues(amount, from); } _tOwned[to] += transferAmount; _tOwned[from] -= amount; emit Transfer(from, to, transferAmount); } function swapAndSendToFee (uint256 tokens) private { uint256 ethToSend = swapTokensForEth(tokens); if (ethToSend > 0) payable(_marketingWallet).transfer(ethToSend); } function swapAndLiquify() private { // split the contract balance into halves uint256 liquidityTokens = balanceOf (address(this)) * _liquidityFee / (_marketingFee + _liquidityFee); uint256 half = liquidityTokens / 2; uint256 otherHalf = liquidityTokens - half; uint256 newBalance = swapTokensForEth(half); if (newBalance > 0) { liquidityTokens = 0; addLiquidity(otherHalf, newBalance); emit SwapAndLiquify(half, newBalance, otherHalf); } } function swapTokensForEth(uint256 tokenAmount) private returns (uint256) { uint256 initialBalance = address(this).balance; // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); return (address(this).balance - initialBalance); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity (,uint256 ethFromLiquidity,) = uniswapV2Router.addLiquidityETH {value: ethAmount} ( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner(), block.timestamp ); if (ethAmount - ethFromLiquidity > 0) payable(_marketingWallet).sendValue (ethAmount - ethFromLiquidity); } }
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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","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"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ff","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","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":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"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"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052655af3107a4000600655655af3107a40006007556003600855600160095573b786c0d316daa64f5d523e0731f4f4892b3c6b89600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b553480156200008957600080fd5b5060006200009c6200054d60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460036000620001516200054d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001f6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200021c9190620005e8565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000284573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002aa9190620005e8565b6040518363ffffffff1660e01b8152600401620002c99291906200062b565b6020604051808303816000875af1158015620002e9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200030f9190620005e8565b905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620003a96200055560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620004dc6200054d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6006546040516200053d919062000673565b60405180910390a3505062000690565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620005b08262000583565b9050919050565b620005c281620005a3565b8114620005ce57600080fd5b50565b600081519050620005e281620005b7565b92915050565b6000602082840312156200060157620006006200057e565b5b60006200061184828501620005d1565b91505092915050565b6200062581620005a3565b82525050565b60006040820190506200064260008301856200061a565b6200065160208301846200061a565b9392505050565b6000819050919050565b6200066d8162000658565b82525050565b60006020820190506200068a600083018462000662565b92915050565b61273a80620006a06000396000f3fe60806040526004361061014f5760003560e01c80636bc87c3a116100b6578063962dfc751161006f578063962dfc75146104a5578063a457c2d7146104d0578063a9059cbb1461050d578063dd62ed3e1461054a578063ea2f0b3714610587578063f2fde38b146105b057610156565b80636bc87c3a146103a557806370a08231146103d0578063715018a61461040d5780637d1db4a5146104245780638da5cb5b1461044f57806395d89b411461047a57610156565b8063313ce56711610108578063313ce5671461028157806339509351146102ac578063437823ec146102e957806349bd5a5e146103125780635342acb41461033d578063667d31681461037a57610156565b806306fdde031461015b578063095ea7b3146101865780631694505e146101c357806318160ddd146101ee57806322976e0d1461021957806323b872dd1461024457610156565b3661015657005b600080fd5b34801561016757600080fd5b506101706105d9565b60405161017d9190611c78565b60405180910390f35b34801561019257600080fd5b506101ad60048036038101906101a89190611d33565b610616565b6040516101ba9190611d8e565b60405180910390f35b3480156101cf57600080fd5b506101d8610634565b6040516101e59190611e08565b60405180910390f35b3480156101fa57600080fd5b5061020361065a565b6040516102109190611e32565b60405180910390f35b34801561022557600080fd5b5061022e610664565b60405161023b9190611e32565b60405180910390f35b34801561025057600080fd5b5061026b60048036038101906102669190611e4d565b61066a565b6040516102789190611d8e565b60405180910390f35b34801561028d57600080fd5b50610296610722565b6040516102a39190611ebc565b60405180910390f35b3480156102b857600080fd5b506102d360048036038101906102ce9190611d33565b61072b565b6040516102e09190611d8e565b60405180910390f35b3480156102f557600080fd5b50610310600480360381019061030b9190611ed7565b6107d7565b005b34801561031e57600080fd5b506103276108c7565b6040516103349190611f13565b60405180910390f35b34801561034957600080fd5b50610364600480360381019061035f9190611ed7565b6108ed565b6040516103719190611d8e565b60405180910390f35b34801561038657600080fd5b5061038f610943565b60405161039c9190611e32565b60405180910390f35b3480156103b157600080fd5b506103ba610949565b6040516103c79190611e32565b60405180910390f35b3480156103dc57600080fd5b506103f760048036038101906103f29190611ed7565b61094f565b6040516104049190611e32565b60405180910390f35b34801561041957600080fd5b50610422610998565b005b34801561043057600080fd5b50610439610aeb565b6040516104469190611e32565b60405180910390f35b34801561045b57600080fd5b50610464610af1565b6040516104719190611f13565b60405180910390f35b34801561048657600080fd5b5061048f610b1a565b60405161049c9190611c78565b60405180910390f35b3480156104b157600080fd5b506104ba610b57565b6040516104c79190611f13565b60405180910390f35b3480156104dc57600080fd5b506104f760048036038101906104f29190611d33565b610b7d565b6040516105049190611d8e565b60405180910390f35b34801561051957600080fd5b50610534600480360381019061052f9190611d33565b610c29565b6040516105419190611d8e565b60405180910390f35b34801561055657600080fd5b50610571600480360381019061056c9190611f2e565b610c47565b60405161057e9190611e32565b60405180910390f35b34801561059357600080fd5b506105ae60048036038101906105a99190611ed7565b610cce565b005b3480156105bc57600080fd5b506105d760048036038101906105d29190611ed7565b610dbe565b005b60606040518060400160405280600781526020017f494e5547414d4900000000000000000000000000000000000000000000000000815250905090565b600061062a610623610f7f565b8484610f87565b6001905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600654905090565b60085481565b6000610677848484611150565b61071784610683610f7f565b84600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106cd610f7f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107129190611f9d565b610f87565b600190509392505050565b60006009905090565b60006107cd610738610f7f565b848460046000610746610f7f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107c89190611fd1565b610f87565b6001905092915050565b6107df610f7f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461086c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086390612051565b60405180910390fd5b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600b5481565b60095481565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6109a0610f7f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2490612051565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60075481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f47414d4900000000000000000000000000000000000000000000000000000000815250905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610c1f610b8a610f7f565b848460046000610b98610f7f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c1a9190611f9d565b610f87565b6001905092915050565b6000610c3d610c36610f7f565b8484611150565b6001905092915050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610cd6610f7f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5a90612051565b60405180910390fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610dc6610f7f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4a90612051565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610ec2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb9906120e3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ff6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fed90612175565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611065576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105c90612207565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516111439190611e32565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b690612299565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361122e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112259061232b565b60405180910390fd5b60008111611271576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611268906123bd565b60405180910390fd5b6000600b5467016345785d8a000061128991906123dd565b60016112959190611fd1565b9050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561133b5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156113955750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156113f757600754826113a78561094f565b6113b19190611fd1565b11156113f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e990612491565b60405180910390fd5b611402565b6114018484611793565b5b64e8d4a510006114113061094f565b1015801561142c5750600c60009054906101000a900460ff16155b80156114865750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156114c55750611495610af1565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561150457506114d4610af1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611557576001600c60006101000a81548160ff021916908315150217905550600061152f3061094f565b905061153a816117db565b6000600c60006101000a81548160ff021916908315150217905550505b8067016345785d8a000061156b91906124e0565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546115b99190611fd1565b925050819055506000829050600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156116695750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561167b57611678838661185f565b90505b80600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116ca9190611fd1565b9250508190555082600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117209190611f9d565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516117849190611e32565b60405180910390a35050505050565b6001600b819055508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16036117d7576000600b819055505b5050565b60006117e68261198e565b9050600081111561185b57600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611859573d6000803e3d6000fd5b505b5050565b60008060646008548561187291906123dd565b61187c91906124e0565b9050600060646009548661189091906123dd565b61189a91906124e0565b905080826118a89190611fd1565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118f69190611fd1565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83856119589190611fd1565b6040516119659190611e32565b60405180910390a380828661197a9190611f9d565b6119849190611f9d565b9250505092915050565b6000804790506000600267ffffffffffffffff8111156119b1576119b0612511565b5b6040519080825280602002602001820160405280156119df5781602001602082028036833780820191505090505b50905030816000815181106119f7576119f6612540565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac29190612584565b81600181518110611ad657611ad5612540565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611b3d30600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686610f87565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478560008430426040518663ffffffff1660e01b8152600401611ba19594939291906126aa565b600060405180830381600087803b158015611bbb57600080fd5b505af1158015611bcf573d6000803e3d6000fd5b505050508147611bdf9190611f9d565b92505050919050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611c22578082015181840152602081019050611c07565b60008484015250505050565b6000601f19601f8301169050919050565b6000611c4a82611be8565b611c548185611bf3565b9350611c64818560208601611c04565b611c6d81611c2e565b840191505092915050565b60006020820190508181036000830152611c928184611c3f565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611cca82611c9f565b9050919050565b611cda81611cbf565b8114611ce557600080fd5b50565b600081359050611cf781611cd1565b92915050565b6000819050919050565b611d1081611cfd565b8114611d1b57600080fd5b50565b600081359050611d2d81611d07565b92915050565b60008060408385031215611d4a57611d49611c9a565b5b6000611d5885828601611ce8565b9250506020611d6985828601611d1e565b9150509250929050565b60008115159050919050565b611d8881611d73565b82525050565b6000602082019050611da36000830184611d7f565b92915050565b6000819050919050565b6000611dce611dc9611dc484611c9f565b611da9565b611c9f565b9050919050565b6000611de082611db3565b9050919050565b6000611df282611dd5565b9050919050565b611e0281611de7565b82525050565b6000602082019050611e1d6000830184611df9565b92915050565b611e2c81611cfd565b82525050565b6000602082019050611e476000830184611e23565b92915050565b600080600060608486031215611e6657611e65611c9a565b5b6000611e7486828701611ce8565b9350506020611e8586828701611ce8565b9250506040611e9686828701611d1e565b9150509250925092565b600060ff82169050919050565b611eb681611ea0565b82525050565b6000602082019050611ed16000830184611ead565b92915050565b600060208284031215611eed57611eec611c9a565b5b6000611efb84828501611ce8565b91505092915050565b611f0d81611cbf565b82525050565b6000602082019050611f286000830184611f04565b92915050565b60008060408385031215611f4557611f44611c9a565b5b6000611f5385828601611ce8565b9250506020611f6485828601611ce8565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611fa882611cfd565b9150611fb383611cfd565b9250828203905081811115611fcb57611fca611f6e565b5b92915050565b6000611fdc82611cfd565b9150611fe783611cfd565b9250828201905080821115611fff57611ffe611f6e565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061203b602083611bf3565b915061204682612005565b602082019050919050565b6000602082019050818103600083015261206a8161202e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006120cd602683611bf3565b91506120d882612071565b604082019050919050565b600060208201905081810360008301526120fc816120c0565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061215f602483611bf3565b915061216a82612103565b604082019050919050565b6000602082019050818103600083015261218e81612152565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006121f1602283611bf3565b91506121fc82612195565b604082019050919050565b60006020820190508181036000830152612220816121e4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612283602583611bf3565b915061228e82612227565b604082019050919050565b600060208201905081810360008301526122b281612276565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612315602383611bf3565b9150612320826122b9565b604082019050919050565b6000602082019050818103600083015261234481612308565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006123a7602983611bf3565b91506123b28261234b565b604082019050919050565b600060208201905081810360008301526123d68161239a565b9050919050565b60006123e882611cfd565b91506123f383611cfd565b925082820261240181611cfd565b9150828204841483151761241857612417611f6e565b5b5092915050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b600061247b602883611bf3565b91506124868261241f565b604082019050919050565b600060208201905081810360008301526124aa8161246e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006124eb82611cfd565b91506124f683611cfd565b925082612506576125056124b1565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061257e81611cd1565b92915050565b60006020828403121561259a57612599611c9a565b5b60006125a88482850161256f565b91505092915050565b6000819050919050565b60006125d66125d16125cc846125b1565b611da9565b611cfd565b9050919050565b6125e6816125bb565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61262181611cbf565b82525050565b60006126338383612618565b60208301905092915050565b6000602082019050919050565b6000612657826125ec565b61266181856125f7565b935061266c83612608565b8060005b8381101561269d5781516126848882612627565b975061268f8361263f565b925050600181019050612670565b5085935050505092915050565b600060a0820190506126bf6000830188611e23565b6126cc60208301876125dd565b81810360408301526126de818661264c565b90506126ed6060830185611f04565b6126fa6080830184611e23565b969550505050505056fea2646970667358221220fc217e2ca9e4e44a2b971aa737cca051e16af350a00df32854dbe0f9b582e5f164736f6c63430008110033
Deployed Bytecode
0x60806040526004361061014f5760003560e01c80636bc87c3a116100b6578063962dfc751161006f578063962dfc75146104a5578063a457c2d7146104d0578063a9059cbb1461050d578063dd62ed3e1461054a578063ea2f0b3714610587578063f2fde38b146105b057610156565b80636bc87c3a146103a557806370a08231146103d0578063715018a61461040d5780637d1db4a5146104245780638da5cb5b1461044f57806395d89b411461047a57610156565b8063313ce56711610108578063313ce5671461028157806339509351146102ac578063437823ec146102e957806349bd5a5e146103125780635342acb41461033d578063667d31681461037a57610156565b806306fdde031461015b578063095ea7b3146101865780631694505e146101c357806318160ddd146101ee57806322976e0d1461021957806323b872dd1461024457610156565b3661015657005b600080fd5b34801561016757600080fd5b506101706105d9565b60405161017d9190611c78565b60405180910390f35b34801561019257600080fd5b506101ad60048036038101906101a89190611d33565b610616565b6040516101ba9190611d8e565b60405180910390f35b3480156101cf57600080fd5b506101d8610634565b6040516101e59190611e08565b60405180910390f35b3480156101fa57600080fd5b5061020361065a565b6040516102109190611e32565b60405180910390f35b34801561022557600080fd5b5061022e610664565b60405161023b9190611e32565b60405180910390f35b34801561025057600080fd5b5061026b60048036038101906102669190611e4d565b61066a565b6040516102789190611d8e565b60405180910390f35b34801561028d57600080fd5b50610296610722565b6040516102a39190611ebc565b60405180910390f35b3480156102b857600080fd5b506102d360048036038101906102ce9190611d33565b61072b565b6040516102e09190611d8e565b60405180910390f35b3480156102f557600080fd5b50610310600480360381019061030b9190611ed7565b6107d7565b005b34801561031e57600080fd5b506103276108c7565b6040516103349190611f13565b60405180910390f35b34801561034957600080fd5b50610364600480360381019061035f9190611ed7565b6108ed565b6040516103719190611d8e565b60405180910390f35b34801561038657600080fd5b5061038f610943565b60405161039c9190611e32565b60405180910390f35b3480156103b157600080fd5b506103ba610949565b6040516103c79190611e32565b60405180910390f35b3480156103dc57600080fd5b506103f760048036038101906103f29190611ed7565b61094f565b6040516104049190611e32565b60405180910390f35b34801561041957600080fd5b50610422610998565b005b34801561043057600080fd5b50610439610aeb565b6040516104469190611e32565b60405180910390f35b34801561045b57600080fd5b50610464610af1565b6040516104719190611f13565b60405180910390f35b34801561048657600080fd5b5061048f610b1a565b60405161049c9190611c78565b60405180910390f35b3480156104b157600080fd5b506104ba610b57565b6040516104c79190611f13565b60405180910390f35b3480156104dc57600080fd5b506104f760048036038101906104f29190611d33565b610b7d565b6040516105049190611d8e565b60405180910390f35b34801561051957600080fd5b50610534600480360381019061052f9190611d33565b610c29565b6040516105419190611d8e565b60405180910390f35b34801561055657600080fd5b50610571600480360381019061056c9190611f2e565b610c47565b60405161057e9190611e32565b60405180910390f35b34801561059357600080fd5b506105ae60048036038101906105a99190611ed7565b610cce565b005b3480156105bc57600080fd5b506105d760048036038101906105d29190611ed7565b610dbe565b005b60606040518060400160405280600781526020017f494e5547414d4900000000000000000000000000000000000000000000000000815250905090565b600061062a610623610f7f565b8484610f87565b6001905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600654905090565b60085481565b6000610677848484611150565b61071784610683610f7f565b84600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106cd610f7f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107129190611f9d565b610f87565b600190509392505050565b60006009905090565b60006107cd610738610f7f565b848460046000610746610f7f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107c89190611fd1565b610f87565b6001905092915050565b6107df610f7f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461086c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086390612051565b60405180910390fd5b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600b5481565b60095481565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6109a0610f7f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2490612051565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60075481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f47414d4900000000000000000000000000000000000000000000000000000000815250905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610c1f610b8a610f7f565b848460046000610b98610f7f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c1a9190611f9d565b610f87565b6001905092915050565b6000610c3d610c36610f7f565b8484611150565b6001905092915050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610cd6610f7f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5a90612051565b60405180910390fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610dc6610f7f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4a90612051565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610ec2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb9906120e3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ff6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fed90612175565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611065576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105c90612207565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516111439190611e32565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b690612299565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361122e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112259061232b565b60405180910390fd5b60008111611271576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611268906123bd565b60405180910390fd5b6000600b5467016345785d8a000061128991906123dd565b60016112959190611fd1565b9050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561133b5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156113955750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156113f757600754826113a78561094f565b6113b19190611fd1565b11156113f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e990612491565b60405180910390fd5b611402565b6114018484611793565b5b64e8d4a510006114113061094f565b1015801561142c5750600c60009054906101000a900460ff16155b80156114865750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156114c55750611495610af1565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561150457506114d4610af1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611557576001600c60006101000a81548160ff021916908315150217905550600061152f3061094f565b905061153a816117db565b6000600c60006101000a81548160ff021916908315150217905550505b8067016345785d8a000061156b91906124e0565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546115b99190611fd1565b925050819055506000829050600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156116695750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561167b57611678838661185f565b90505b80600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116ca9190611fd1565b9250508190555082600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117209190611f9d565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516117849190611e32565b60405180910390a35050505050565b6001600b819055508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16036117d7576000600b819055505b5050565b60006117e68261198e565b9050600081111561185b57600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611859573d6000803e3d6000fd5b505b5050565b60008060646008548561187291906123dd565b61187c91906124e0565b9050600060646009548661189091906123dd565b61189a91906124e0565b905080826118a89190611fd1565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118f69190611fd1565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83856119589190611fd1565b6040516119659190611e32565b60405180910390a380828661197a9190611f9d565b6119849190611f9d565b9250505092915050565b6000804790506000600267ffffffffffffffff8111156119b1576119b0612511565b5b6040519080825280602002602001820160405280156119df5781602001602082028036833780820191505090505b50905030816000815181106119f7576119f6612540565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac29190612584565b81600181518110611ad657611ad5612540565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611b3d30600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686610f87565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478560008430426040518663ffffffff1660e01b8152600401611ba19594939291906126aa565b600060405180830381600087803b158015611bbb57600080fd5b505af1158015611bcf573d6000803e3d6000fd5b505050508147611bdf9190611f9d565b92505050919050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611c22578082015181840152602081019050611c07565b60008484015250505050565b6000601f19601f8301169050919050565b6000611c4a82611be8565b611c548185611bf3565b9350611c64818560208601611c04565b611c6d81611c2e565b840191505092915050565b60006020820190508181036000830152611c928184611c3f565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611cca82611c9f565b9050919050565b611cda81611cbf565b8114611ce557600080fd5b50565b600081359050611cf781611cd1565b92915050565b6000819050919050565b611d1081611cfd565b8114611d1b57600080fd5b50565b600081359050611d2d81611d07565b92915050565b60008060408385031215611d4a57611d49611c9a565b5b6000611d5885828601611ce8565b9250506020611d6985828601611d1e565b9150509250929050565b60008115159050919050565b611d8881611d73565b82525050565b6000602082019050611da36000830184611d7f565b92915050565b6000819050919050565b6000611dce611dc9611dc484611c9f565b611da9565b611c9f565b9050919050565b6000611de082611db3565b9050919050565b6000611df282611dd5565b9050919050565b611e0281611de7565b82525050565b6000602082019050611e1d6000830184611df9565b92915050565b611e2c81611cfd565b82525050565b6000602082019050611e476000830184611e23565b92915050565b600080600060608486031215611e6657611e65611c9a565b5b6000611e7486828701611ce8565b9350506020611e8586828701611ce8565b9250506040611e9686828701611d1e565b9150509250925092565b600060ff82169050919050565b611eb681611ea0565b82525050565b6000602082019050611ed16000830184611ead565b92915050565b600060208284031215611eed57611eec611c9a565b5b6000611efb84828501611ce8565b91505092915050565b611f0d81611cbf565b82525050565b6000602082019050611f286000830184611f04565b92915050565b60008060408385031215611f4557611f44611c9a565b5b6000611f5385828601611ce8565b9250506020611f6485828601611ce8565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611fa882611cfd565b9150611fb383611cfd565b9250828203905081811115611fcb57611fca611f6e565b5b92915050565b6000611fdc82611cfd565b9150611fe783611cfd565b9250828201905080821115611fff57611ffe611f6e565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061203b602083611bf3565b915061204682612005565b602082019050919050565b6000602082019050818103600083015261206a8161202e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006120cd602683611bf3565b91506120d882612071565b604082019050919050565b600060208201905081810360008301526120fc816120c0565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061215f602483611bf3565b915061216a82612103565b604082019050919050565b6000602082019050818103600083015261218e81612152565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006121f1602283611bf3565b91506121fc82612195565b604082019050919050565b60006020820190508181036000830152612220816121e4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612283602583611bf3565b915061228e82612227565b604082019050919050565b600060208201905081810360008301526122b281612276565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612315602383611bf3565b9150612320826122b9565b604082019050919050565b6000602082019050818103600083015261234481612308565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006123a7602983611bf3565b91506123b28261234b565b604082019050919050565b600060208201905081810360008301526123d68161239a565b9050919050565b60006123e882611cfd565b91506123f383611cfd565b925082820261240181611cfd565b9150828204841483151761241857612417611f6e565b5b5092915050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b600061247b602883611bf3565b91506124868261241f565b604082019050919050565b600060208201905081810360008301526124aa8161246e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006124eb82611cfd565b91506124f683611cfd565b925082612506576125056124b1565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061257e81611cd1565b92915050565b60006020828403121561259a57612599611c9a565b5b60006125a88482850161256f565b91505092915050565b6000819050919050565b60006125d66125d16125cc846125b1565b611da9565b611cfd565b9050919050565b6125e6816125bb565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61262181611cbf565b82525050565b60006126338383612618565b60208301905092915050565b6000602082019050919050565b6000612657826125ec565b61266181856125f7565b935061266c83612608565b8060005b8381101561269d5781516126848882612627565b975061268f8361263f565b925050600181019050612670565b5085935050505092915050565b600060a0820190506126bf6000830188611e23565b6126cc60208301876125dd565b81810360408301526126de818661264c565b90506126ed6060830185611f04565b6126fa6080830184611e23565b969550505050505056fea2646970667358221220fc217e2ca9e4e44a2b971aa737cca051e16af350a00df32854dbe0f9b582e5f164736f6c63430008110033
Deployed Bytecode Sourcemap
24931:8489:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26715:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27546:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25057:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26992:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25663:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27715:266;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26901:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27989:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28445:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25105:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29193:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25825:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25702:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27095:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16305:148;;;;;;;;;;;;;:::i;:::-;;25382:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15662:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26806:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25741:77;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28212:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27220:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27395:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28564:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16608:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26715:83;26752:13;26785:5;;;;;;;;;;;;;;;;;26778:12;;26715:83;:::o;27546:161::-;27621:4;27638:39;27647:12;:10;:12::i;:::-;27661:7;27670:6;27638:8;:39::i;:::-;27695:4;27688:11;;27546:161;;;;:::o;25057:41::-;;;;;;;;;;;;;:::o;26992:95::-;27045:7;27072;;27065:14;;26992:95;:::o;25663:32::-;;;;:::o;27715:266::-;27813:4;27830:36;27840:6;27848:9;27859:6;27830:9;:36::i;:::-;27877:74;27886:6;27894:12;:10;:12::i;:::-;27944:6;27908:11;:19;27920:6;27908:19;;;;;;;;;;;;;;;:33;27928:12;:10;:12::i;:::-;27908:33;;;;;;;;;;;;;;;;:42;;;;:::i;:::-;27877:8;:74::i;:::-;27969:4;27962:11;;27715:266;;;;;:::o;26901:83::-;26942:5;25650:1;26960:16;;26901:83;:::o;27989:215::-;28077:4;28094:80;28103:12;:10;:12::i;:::-;28117:7;28163:10;28126:11;:25;28138:12;:10;:12::i;:::-;28126:25;;;;;;;;;;;;;;;:34;28152:7;28126:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;28094:8;:80::i;:::-;28192:4;28185:11;;27989:215;;;;:::o;28445:111::-;15884:12;:10;:12::i;:::-;15874:22;;:6;;;;;;;;;;:22;;;15866:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28544:4:::1;28514:18;:27;28533:7;28514:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;28445:111:::0;:::o;25105:28::-;;;;;;;;;;;;;:::o;29193:123::-;29257:4;29281:18;:27;29300:7;29281:27;;;;;;;;;;;;;;;;;;;;;;;;;29274:34;;29193:123;;;:::o;25825:21::-;;;;:::o;25702:32::-;;;;:::o;27095:117::-;27161:7;27188;:16;27196:7;27188:16;;;;;;;;;;;;;;;;27181:23;;27095:117;;;:::o;16305:148::-;15884:12;:10;:12::i;:::-;15874:22;;:6;;;;;;;;;;:22;;;15866:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16412:1:::1;16375:40;;16396:6;::::0;::::1;;;;;;;;16375:40;;;;;;;;;;;;16443:1;16426:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;16305:148::o:0;25382:44::-;;;;:::o;15662:79::-;15700:7;15727:6;;;;;;;;;;;15720:13;;15662:79;:::o;26806:87::-;26845:13;26878:7;;;;;;;;;;;;;;;;;26871:14;;26806:87;:::o;25741:77::-;;;;;;;;;;;;;:::o;28212:225::-;28305:4;28322:85;28331:12;:10;:12::i;:::-;28345:7;28391:15;28354:11;:25;28366:12;:10;:12::i;:::-;28354:25;;;;;;;;;;;;;;;:34;28380:7;28354:34;;;;;;;;;;;;;;;;:52;;;;:::i;:::-;28322:8;:85::i;:::-;28425:4;28418:11;;28212:225;;;;:::o;27220:167::-;27298:4;27315:42;27325:12;:10;:12::i;:::-;27339:9;27350:6;27315:9;:42::i;:::-;27375:4;27368:11;;27220:167;;;;:::o;27395:143::-;27476:7;27503:11;:18;27515:5;27503:18;;;;;;;;;;;;;;;:27;27522:7;27503:27;;;;;;;;;;;;;;;;27496:34;;27395:143;;;;:::o;28564:110::-;15884:12;:10;:12::i;:::-;15874:22;;:6;;;;;;;;;;:22;;;15866:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28661:5:::1;28631:18;:27;28650:7;28631:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;28564:110:::0;:::o;16608:244::-;15884:12;:10;:12::i;:::-;15874:22;;:6;;;;;;;;;;:22;;;15866:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16717:1:::1;16697:22;;:8;:22;;::::0;16689:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;16807:8;16778:38;;16799:6;::::0;::::1;;;;;;;;16778:38;;;;;;;;;;;;16836:8;16827:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;16608:244:::0;:::o;8067:115::-;8120:15;8163:10;8148:26;;8067:115;:::o;29454:337::-;29564:1;29547:19;;:5;:19;;;29539:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29645:1;29626:21;;:7;:21;;;29618:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29729:6;29699:11;:18;29711:5;29699:18;;;;;;;;;;;;;;;:27;29718:7;29699:27;;;;;;;;;;;;;;;:36;;;;29767:7;29751:32;;29760:5;29751:32;;;29776:6;29751:32;;;;;;:::i;:::-;;;;;;;;29454:337;;;:::o;29799:1434::-;29937:1;29921:18;;:4;:18;;;29913:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30014:1;30000:16;;:2;:16;;;29992:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;30084:1;30075:6;:10;30067:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;30142:11;30175:2;;30156:18;:21;;;;:::i;:::-;30154:1;:23;;;;:::i;:::-;30142:35;;30199:18;:24;30218:4;30199:24;;;;;;;;;;;;;;;;;;;;;;;;;30198:25;:53;;;;;30229:18;:22;30248:2;30229:22;;;;;;;;;;;;;;;;;;;;;;;;;30228:23;30198:53;:77;;;;;30262:13;;;;;;;;;;;30256:19;;:2;:19;;;;30198:77;30195:222;;;30325:12;;30315:6;30299:13;30309:2;30299:9;:13::i;:::-;:22;;;;:::i;:::-;:38;;30291:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;30195:222;;;30400:15;30407:4;30412:2;30400:6;:15::i;:::-;30195:222;25485:12;30451:24;30469:4;30451:9;:24::i;:::-;:49;;:62;;;;;30505:8;;;;;;;;;;;30504:9;30451:62;:87;;;;;30525:13;;;;;;;;;;;30517:21;;:4;:21;;;;30451:87;:106;;;;;30550:7;:5;:7::i;:::-;30542:15;;:4;:15;;;;30451:106;:123;;;;;30567:7;:5;:7::i;:::-;30561:13;;:2;:13;;;;30451:123;30447:305;;;30602:4;30591:8;;:15;;;;;;;;;;;;;;;;;;30621:18;30642:24;30660:4;30642:9;:24::i;:::-;30621:45;;30681:28;30698:10;30681:16;:28::i;:::-;30735:5;30724:8;;:16;;;;;;;;;;;;;;;;;;30576:176;30447:305;30806:3;30787:18;:22;;;;:::i;:::-;30762:7;:22;30778:4;30762:22;;;;;;;;;;;;;;;;:47;;;;;;;:::i;:::-;;;;;;;;30829:22;30854:6;30829:31;;30961:18;:24;30980:4;30961:24;;;;;;;;;;;;;;;;;;;;;;;;;30960:25;:52;;;;;30990:18;:22;31009:2;30990:22;;;;;;;;;;;;;;;;;;;;;;;;;30989:23;30960:52;30957:124;;;31045:24;31056:6;31064:4;31045:10;:24::i;:::-;31028:41;;30957:124;31105:14;31090:7;:11;31098:2;31090:11;;;;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;31147:6;31130:7;:13;31138:4;31130:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;31184:2;31169:34;;31178:4;31169:34;;;31188:14;31169:34;;;;;;:::i;:::-;;;;;;;;29902:1331;;29799:1434;;;:::o;29324:115::-;29390:1;29387:2;:4;;;;29420:5;29406:19;;:10;:19;;;29402:29;;29430:1;29427:2;:4;;;;29402:29;29324:115;;:::o;31243:204::-;31305:17;31325:24;31342:6;31325:16;:24::i;:::-;31305:44;;31378:1;31366:9;:13;31362:77;;;31402:16;;;;;;;;;;;31394:34;;:45;31429:9;31394:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31362:77;31294:153;31243:204;:::o;28780:403::-;28847:7;28867:20;28915:3;28899:13;;28890:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;28867:51;;28929:20;28977:3;28961:13;;28952:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;28929:51;;29032:12;29017;:27;;;;:::i;:::-;28991:7;:22;29007:4;28991:22;;;;;;;;;;;;;;;;:53;;;;;;;:::i;:::-;;;;;;;;29084:4;29060:59;;29070:4;29060:59;;;29106:12;29091;:27;;;;:::i;:::-;29060:59;;;;;;:::i;:::-;;;;;;;;29162:12;29147;29138:6;:21;;;;:::i;:::-;:36;;;;:::i;:::-;29130:45;;;;28780:403;;;;:::o;32011:722::-;32075:7;32095:22;32120:21;32095:46;;32212:21;32250:1;32236:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32212:40;;32281:4;32263;32268:1;32263:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;32307:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32297:4;32302:1;32297:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;32342:62;32359:4;32374:15;;;;;;;;;;;32392:11;32342:8;:62::i;:::-;32443:15;;;;;;;;;;;:66;;;32524:11;32550:1;32594:4;32621;32641:15;32443:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32710:14;32686:21;:38;;;;:::i;:::-;32678:47;;;;32011:722;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:153::-;3869:9;3902:37;3933:5;3902:37;:::i;:::-;3889:50;;3792:153;;;:::o;3951:185::-;4065:64;4123:5;4065:64;:::i;:::-;4060:3;4053:77;3951:185;;:::o;4142:276::-;4262:4;4300:2;4289:9;4285:18;4277:26;;4313:98;4408:1;4397:9;4393:17;4384:6;4313:98;:::i;:::-;4142:276;;;;:::o;4424:118::-;4511:24;4529:5;4511:24;:::i;:::-;4506:3;4499:37;4424:118;;:::o;4548:222::-;4641:4;4679:2;4668:9;4664:18;4656:26;;4692:71;4760:1;4749:9;4745:17;4736:6;4692:71;:::i;:::-;4548:222;;;;:::o;4776:619::-;4853:6;4861;4869;4918:2;4906:9;4897:7;4893:23;4889:32;4886:119;;;4924:79;;:::i;:::-;4886:119;5044:1;5069:53;5114:7;5105:6;5094:9;5090:22;5069:53;:::i;:::-;5059:63;;5015:117;5171:2;5197:53;5242:7;5233:6;5222:9;5218:22;5197:53;:::i;:::-;5187:63;;5142:118;5299:2;5325:53;5370:7;5361:6;5350:9;5346:22;5325:53;:::i;:::-;5315:63;;5270:118;4776:619;;;;;:::o;5401:86::-;5436:7;5476:4;5469:5;5465:16;5454:27;;5401:86;;;:::o;5493:112::-;5576:22;5592:5;5576:22;:::i;:::-;5571:3;5564:35;5493:112;;:::o;5611:214::-;5700:4;5738:2;5727:9;5723:18;5715:26;;5751:67;5815:1;5804:9;5800:17;5791:6;5751:67;:::i;:::-;5611:214;;;;:::o;5831:329::-;5890:6;5939:2;5927:9;5918:7;5914:23;5910:32;5907:119;;;5945:79;;:::i;:::-;5907:119;6065:1;6090:53;6135:7;6126:6;6115:9;6111:22;6090:53;:::i;:::-;6080:63;;6036:117;5831:329;;;;:::o;6166:118::-;6253:24;6271:5;6253:24;:::i;:::-;6248:3;6241:37;6166:118;;:::o;6290:222::-;6383:4;6421:2;6410:9;6406:18;6398:26;;6434:71;6502:1;6491:9;6487:17;6478:6;6434:71;:::i;:::-;6290:222;;;;:::o;6518:474::-;6586:6;6594;6643:2;6631:9;6622:7;6618:23;6614:32;6611:119;;;6649:79;;:::i;:::-;6611:119;6769:1;6794:53;6839:7;6830:6;6819:9;6815:22;6794:53;:::i;:::-;6784:63;;6740:117;6896:2;6922:53;6967:7;6958:6;6947:9;6943:22;6922:53;:::i;:::-;6912:63;;6867:118;6518:474;;;;;:::o;6998:180::-;7046:77;7043:1;7036:88;7143:4;7140:1;7133:15;7167:4;7164:1;7157:15;7184:194;7224:4;7244:20;7262:1;7244:20;:::i;:::-;7239:25;;7278:20;7296:1;7278:20;:::i;:::-;7273:25;;7322:1;7319;7315:9;7307:17;;7346:1;7340:4;7337:11;7334:37;;;7351:18;;:::i;:::-;7334:37;7184:194;;;;:::o;7384:191::-;7424:3;7443:20;7461:1;7443:20;:::i;:::-;7438:25;;7477:20;7495:1;7477:20;:::i;:::-;7472:25;;7520:1;7517;7513:9;7506:16;;7541:3;7538:1;7535:10;7532:36;;;7548:18;;:::i;:::-;7532:36;7384:191;;;;:::o;7581:182::-;7721:34;7717:1;7709:6;7705:14;7698:58;7581:182;:::o;7769:366::-;7911:3;7932:67;7996:2;7991:3;7932:67;:::i;:::-;7925:74;;8008:93;8097:3;8008:93;:::i;:::-;8126:2;8121:3;8117:12;8110:19;;7769:366;;;:::o;8141:419::-;8307:4;8345:2;8334:9;8330:18;8322:26;;8394:9;8388:4;8384:20;8380:1;8369:9;8365:17;8358:47;8422:131;8548:4;8422:131;:::i;:::-;8414:139;;8141:419;;;:::o;8566:225::-;8706:34;8702:1;8694:6;8690:14;8683:58;8775:8;8770:2;8762:6;8758:15;8751:33;8566:225;:::o;8797:366::-;8939:3;8960:67;9024:2;9019:3;8960:67;:::i;:::-;8953:74;;9036:93;9125:3;9036:93;:::i;:::-;9154:2;9149:3;9145:12;9138:19;;8797:366;;;:::o;9169:419::-;9335:4;9373:2;9362:9;9358:18;9350:26;;9422:9;9416:4;9412:20;9408:1;9397:9;9393:17;9386:47;9450:131;9576:4;9450:131;:::i;:::-;9442:139;;9169:419;;;:::o;9594:223::-;9734:34;9730:1;9722:6;9718:14;9711:58;9803:6;9798:2;9790:6;9786:15;9779:31;9594:223;:::o;9823:366::-;9965:3;9986:67;10050:2;10045:3;9986:67;:::i;:::-;9979:74;;10062:93;10151:3;10062:93;:::i;:::-;10180:2;10175:3;10171:12;10164:19;;9823:366;;;:::o;10195:419::-;10361:4;10399:2;10388:9;10384:18;10376:26;;10448:9;10442:4;10438:20;10434:1;10423:9;10419:17;10412:47;10476:131;10602:4;10476:131;:::i;:::-;10468:139;;10195:419;;;:::o;10620:221::-;10760:34;10756:1;10748:6;10744:14;10737:58;10829:4;10824:2;10816:6;10812:15;10805:29;10620:221;:::o;10847:366::-;10989:3;11010:67;11074:2;11069:3;11010:67;:::i;:::-;11003:74;;11086:93;11175:3;11086:93;:::i;:::-;11204:2;11199:3;11195:12;11188:19;;10847:366;;;:::o;11219:419::-;11385:4;11423:2;11412:9;11408:18;11400:26;;11472:9;11466:4;11462:20;11458:1;11447:9;11443:17;11436:47;11500:131;11626:4;11500:131;:::i;:::-;11492:139;;11219:419;;;:::o;11644:224::-;11784:34;11780:1;11772:6;11768:14;11761:58;11853:7;11848:2;11840:6;11836:15;11829:32;11644:224;:::o;11874:366::-;12016:3;12037:67;12101:2;12096:3;12037:67;:::i;:::-;12030:74;;12113:93;12202:3;12113:93;:::i;:::-;12231:2;12226:3;12222:12;12215:19;;11874:366;;;:::o;12246:419::-;12412:4;12450:2;12439:9;12435:18;12427:26;;12499:9;12493:4;12489:20;12485:1;12474:9;12470:17;12463:47;12527:131;12653:4;12527:131;:::i;:::-;12519:139;;12246:419;;;:::o;12671:222::-;12811:34;12807:1;12799:6;12795:14;12788:58;12880:5;12875:2;12867:6;12863:15;12856:30;12671:222;:::o;12899:366::-;13041:3;13062:67;13126:2;13121:3;13062:67;:::i;:::-;13055:74;;13138:93;13227:3;13138:93;:::i;:::-;13256:2;13251:3;13247:12;13240:19;;12899:366;;;:::o;13271:419::-;13437:4;13475:2;13464:9;13460:18;13452:26;;13524:9;13518:4;13514:20;13510:1;13499:9;13495:17;13488:47;13552:131;13678:4;13552:131;:::i;:::-;13544:139;;13271:419;;;:::o;13696:228::-;13836:34;13832:1;13824:6;13820:14;13813:58;13905:11;13900:2;13892:6;13888:15;13881:36;13696:228;:::o;13930:366::-;14072:3;14093:67;14157:2;14152:3;14093:67;:::i;:::-;14086:74;;14169:93;14258:3;14169:93;:::i;:::-;14287:2;14282:3;14278:12;14271:19;;13930:366;;;:::o;14302:419::-;14468:4;14506:2;14495:9;14491:18;14483:26;;14555:9;14549:4;14545:20;14541:1;14530:9;14526:17;14519:47;14583:131;14709:4;14583:131;:::i;:::-;14575:139;;14302:419;;;:::o;14727:410::-;14767:7;14790:20;14808:1;14790:20;:::i;:::-;14785:25;;14824:20;14842:1;14824:20;:::i;:::-;14819:25;;14879:1;14876;14872:9;14901:30;14919:11;14901:30;:::i;:::-;14890:41;;15080:1;15071:7;15067:15;15064:1;15061:22;15041:1;15034:9;15014:83;14991:139;;15110:18;;:::i;:::-;14991:139;14775:362;14727:410;;;;:::o;15143:227::-;15283:34;15279:1;15271:6;15267:14;15260:58;15352:10;15347:2;15339:6;15335:15;15328:35;15143:227;:::o;15376:366::-;15518:3;15539:67;15603:2;15598:3;15539:67;:::i;:::-;15532:74;;15615:93;15704:3;15615:93;:::i;:::-;15733:2;15728:3;15724:12;15717:19;;15376:366;;;:::o;15748:419::-;15914:4;15952:2;15941:9;15937:18;15929:26;;16001:9;15995:4;15991:20;15987:1;15976:9;15972:17;15965:47;16029:131;16155:4;16029:131;:::i;:::-;16021:139;;15748:419;;;:::o;16173:180::-;16221:77;16218:1;16211:88;16318:4;16315:1;16308:15;16342:4;16339:1;16332:15;16359:185;16399:1;16416:20;16434:1;16416:20;:::i;:::-;16411:25;;16450:20;16468:1;16450:20;:::i;:::-;16445:25;;16489:1;16479:35;;16494:18;;:::i;:::-;16479:35;16536:1;16533;16529:9;16524:14;;16359:185;;;;:::o;16550:180::-;16598:77;16595:1;16588:88;16695:4;16692:1;16685:15;16719:4;16716:1;16709:15;16736:180;16784:77;16781:1;16774:88;16881:4;16878:1;16871:15;16905:4;16902:1;16895:15;16922:143;16979:5;17010:6;17004:13;16995:22;;17026:33;17053:5;17026:33;:::i;:::-;16922:143;;;;:::o;17071:351::-;17141:6;17190:2;17178:9;17169:7;17165:23;17161:32;17158:119;;;17196:79;;:::i;:::-;17158:119;17316:1;17341:64;17397:7;17388:6;17377:9;17373:22;17341:64;:::i;:::-;17331:74;;17287:128;17071:351;;;;:::o;17428:85::-;17473:7;17502:5;17491:16;;17428:85;;;:::o;17519:158::-;17577:9;17610:61;17628:42;17637:32;17663:5;17637:32;:::i;:::-;17628:42;:::i;:::-;17610:61;:::i;:::-;17597:74;;17519:158;;;:::o;17683:147::-;17778:45;17817:5;17778:45;:::i;:::-;17773:3;17766:58;17683:147;;:::o;17836:114::-;17903:6;17937:5;17931:12;17921:22;;17836:114;;;:::o;17956:184::-;18055:11;18089:6;18084:3;18077:19;18129:4;18124:3;18120:14;18105:29;;17956:184;;;;:::o;18146:132::-;18213:4;18236:3;18228:11;;18266:4;18261:3;18257:14;18249:22;;18146:132;;;:::o;18284:108::-;18361:24;18379:5;18361:24;:::i;:::-;18356:3;18349:37;18284:108;;:::o;18398:179::-;18467:10;18488:46;18530:3;18522:6;18488:46;:::i;:::-;18566:4;18561:3;18557:14;18543:28;;18398:179;;;;:::o;18583:113::-;18653:4;18685;18680:3;18676:14;18668:22;;18583:113;;;:::o;18732:732::-;18851:3;18880:54;18928:5;18880:54;:::i;:::-;18950:86;19029:6;19024:3;18950:86;:::i;:::-;18943:93;;19060:56;19110:5;19060:56;:::i;:::-;19139:7;19170:1;19155:284;19180:6;19177:1;19174:13;19155:284;;;19256:6;19250:13;19283:63;19342:3;19327:13;19283:63;:::i;:::-;19276:70;;19369:60;19422:6;19369:60;:::i;:::-;19359:70;;19215:224;19202:1;19199;19195:9;19190:14;;19155:284;;;19159:14;19455:3;19448:10;;18856:608;;;18732:732;;;;:::o;19470:831::-;19733:4;19771:3;19760:9;19756:19;19748:27;;19785:71;19853:1;19842:9;19838:17;19829:6;19785:71;:::i;:::-;19866:80;19942:2;19931:9;19927:18;19918:6;19866:80;:::i;:::-;19993:9;19987:4;19983:20;19978:2;19967:9;19963:18;19956:48;20021:108;20124:4;20115:6;20021:108;:::i;:::-;20013:116;;20139:72;20207:2;20196:9;20192:18;20183:6;20139:72;:::i;:::-;20221:73;20289:3;20278:9;20274:19;20265:6;20221:73;:::i;:::-;19470:831;;;;;;;;:::o
Swarm Source
ipfs://fc217e2ca9e4e44a2b971aa737cca051e16af350a00df32854dbe0f9b582e5f1
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.