Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
10,000,000,000 BBULL
Holders
191
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
1,433,556.330651947444211598 BBULLValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
BBULL
Compiler Version
v0.8.17+commit.8df45f5f
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT /** https://x.com/MyBtcIsGood */ pragma solidity 0.8.17; pragma experimental ABIEncoderV2; // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) // pragma solidity ^0.8.0; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) // pragma solidity ^0.8.0; // import "../utils/Context.sol"; abstract contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero XTRUMP address" ); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol) // pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an XTRUMP`owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval( address indexed owner, address indexed spender, uint256 value ); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 amount ) external returns (bool); } // OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol) // pragma solidity ^0.8.0; // import "../IERC20.sol"; /** * @dev Interface for the optional metadata functions from the ERC20 standard. _Available since v4.1._ */ interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } // OpenZeppelin Contracts (last updated v4.8.0) (token/ERC20/ERC20.sol) // pragma solidity ^0.8.0; // import "./IERC20.sol"; // import "../../utils/Context.sol"; /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * For a generic mechanism see {ERC20PresetMinterPauser}. * * TIP: For a detailed writeup see our guide * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How lly, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; uint256 public _maxlSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address to, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _approve(owner, spender, amount); return true; } function transferFrom( address from, address to, uint256 amount ) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, allowance(owner, spender) + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { address owner = _msgSender(); uint256 currentAllowance = allowance(owner, spender); require( currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero" ); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } function _transfer( address from, address to, uint256 amount ) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(from, to, amount); uint256 fromBalance = _balances[from]; require( fromBalance >= amount, "ERC20: transfer amount exceeds balance" ); unchecked { _balances[from] = fromBalance - amount; // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by // decrementing then incrementing. _balances[to] += amount; } emit Transfer(from, to, amount); _afterTokenTransfer(from, to, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; unchecked { // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above. _balances[account] += amount; } emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount XTRUMP exceeds balance"); unchecked { _balances[account] = accountBalance - amount; // Overflow not possible: amount <= accountBalance <= totalSupply. _totalSupply -= amount; } emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _spendAllowance( address owner, address spender, uint256 amount ) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require( currentAllowance >= amount, "ERC20: insufficient allowance" ); unchecked { _approve(owner, spender, currentAllowance - amount); } } } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } // OpenZeppelin Contracts (last updated v4.6.0) (utils/math/SafeMath.sol) // pragma solidity ^0.8.0; library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the subtraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, XTRUMP reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } // pragma solidity >=0.5.0; interface IUniswapV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } // pragma solidity >=0.6.2; interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function removeLiquidity( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETH( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountToken, uint256 amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETHWithPermit( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountToken, uint256 amountETH); function swapExactTokensForTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapTokensForExactTokens( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactETHForTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function swapTokensForExactETH( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactTokensForETH( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapETHForExactTokens( uint256 amountOut, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function quote( uint256 amountA, uint256 reserveA, uint256 reserveB ) external pure returns (uint256 amountB); function getAmountOut( uint256 amountIn, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountOut); function getAmountIn( uint256 amountOut, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountIn); function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts); function getAmountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts); } contract BBULL is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public uniswapV2Pair; address public marketingWallet; address public developmentWallet; address public liquidityWallet; address public constant deadAddress = address(0xdead); bool public tradingEnabled; bool public swapEnabled; bool private _swapping; uint256 public swapTokensAtAmount; uint256 public buyTotalFees; uint256 private _buyMarketingFee; uint256 private _buyDevelopmentFee; uint256 private _buyLiquidityFee; uint256 public sellTotalFees; uint256 private _sellMarketingFee; uint256 private _sellDevelopmentFee; uint256 private _sellLiquidityFee; uint256 private _tokensForMarketing; uint256 private _tokensForDevelopment; uint256 private _tokensForLiquidity; uint256 private _previousFee; mapping (address => bool) private _isExcludedFromEnableTrad; mapping(address => bool) private _automatedMarketMakerPairs; event ExcludeFromLimits(address indexed account, bool isExcluded); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event marketingWalletUpdated( address indexed newWallet, address indexed oldWallet ); event developmentWalletUpdated( address indexed newWallet, address indexed oldWallet ); event liquidityWalletUpdated( address indexed newWallet, address indexed oldWallet ); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); event TokensAirdropped(uint256 totalWallets, uint256 totalTokens); constructor() ERC20(unicode"BITCOIN IS GOOD", "BBULL") { uint256 totalSupply = 10000000000 * (10 ** 18); uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); _approve(address(this), address(uniswapV2Router), type(uint256).max); _buyMarketingFee = 0; _buyDevelopmentFee = 0; _buyLiquidityFee = 0; buyTotalFees = _buyMarketingFee + _buyDevelopmentFee + _buyLiquidityFee; _sellMarketingFee = 0; _sellDevelopmentFee = 0; _sellLiquidityFee = 0; sellTotalFees = _sellMarketingFee + _sellDevelopmentFee + _sellLiquidityFee; _previousFee = sellTotalFees; _isExcludedFromEnableTrad[owner()] = true; _isExcludedFromEnableTrad[address(this)] = true; _isExcludedFromEnableTrad[deadAddress] = true; uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH()); _mint(owner(), totalSupply); } receive() external payable {} function openTrading() public onlyOwner { require(!tradingEnabled, "Trading already active."); tradingEnabled = true; swapEnabled = true; } function excludeFromEnobleTrading(address account, bool excluded) external onlyOwner{ _isExcludedFromEnableTrad[account] = excluded; emit ExcludeFromFees(account, excluded); } function _setAutomatedMarketMakerPair(address pair, bool value) internal { _automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { require(pair != uniswapV2Pair, "The PancakeSwap pair cannot be removed from automatedMarketMakerPairs"); _setAutomatedMarketMakerPair(pair, value); } function setAutomatedMarketMakerPair(address[] memory accounts, bool value) public onlyOwner { for (uint256 i = 0; i < accounts.length; i++) { if(accounts[i] == uniswapV2Pair) continue; _setAutomatedMarketMakerPair(accounts[i], value); } } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(tradingEnabled || _isExcludedFromEnableTrad[from] || _isExcludedFromEnableTrad[to], "Trading not yet enabled!"); if (amount == 0) { super._transfer(from, to, 0); return; } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if ( canSwap && swapEnabled &&!_swapping&&_automatedMarketMakerPairs[from] && !_isExcludedFromEnableTrad[from] && !_isExcludedFromEnableTrad[to] ) { _swapping = true; _swapBack(); _swapping = false; } bool takeFee = !_swapping; if (_isExcludedFromEnableTrad[from] || _isExcludedFromEnableTrad[to]) { takeFee = false; } uint256 fees = 0; if (takeFee) { // on sell if (_automatedMarketMakerPairs[to] && sellTotalFees > 0) { fees = amount.mul(sellTotalFees).div(10000); _tokensForLiquidity += (fees * _sellLiquidityFee) / sellTotalFees; _tokensForMarketing += (fees * _sellMarketingFee) / sellTotalFees; _tokensForDevelopment += (fees * _sellDevelopmentFee) / sellTotalFees; } // on buy else if (_automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount.mul(buyTotalFees).div(10000); _tokensForLiquidity += (fees * _buyLiquidityFee) / buyTotalFees; _tokensForMarketing += (fees * _buyMarketingFee) / buyTotalFees; _tokensForDevelopment += (fees * _buyDevelopmentFee) / buyTotalFees; } if (fees > 0) { super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); sellTotalFees = _previousFee; } function _swapTokensForETH(uint256 tokenAmount) internal { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function _addLiquidity(uint256 tokenAmount, uint256 ethAmount) internal { _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, 0, liquidityWallet, block.timestamp ); } function _swapBack() internal { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = _tokensForLiquidity + _tokensForMarketing + _tokensForDevelopment; bool success; uint256 liquidityTokens = (contractBalance * _tokensForLiquidity) / totalTokensToSwap / 2; uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens); uint256 initialETHBalance = address(this).balance; _swapTokensForETH(amountToSwapForETH); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForMarketing = ethBalance.mul(_tokensForMarketing).div( totalTokensToSwap ); uint256 ethForDevelopment = ethBalance.mul(_tokensForDevelopment).div( totalTokensToSwap ); uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDevelopment; _tokensForLiquidity = 0; _tokensForMarketing = 0; _tokensForDevelopment = 0; if (liquidityTokens > 0 && ethForLiquidity > 0) { _addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify( amountToSwapForETH, ethForLiquidity, _tokensForLiquidity ); } (success, ) = address(developmentWallet).call{value: ethForDevelopment}(""); (success, ) = address(marketingWallet).call{ value: address(this).balance }(""); } } // pragma solidity >=0.6.2; // import './IUniswapV2Router01.sol'; interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"totalWallets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalTokens","type":"uint256"}],"name":"TokensAirdropped","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"developmentWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"liquidityWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[],"name":"_maxlSupply","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":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"developmentWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromEnobleTrading","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":[],"name":"liquidityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a06040523480156200001157600080fd5b506040518060400160405280600f81526020017f424954434f494e20495320474f4f4400000000000000000000000000000000008152506040518060400160405280600581526020017f4242554c4c00000000000000000000000000000000000000000000000000000081525081600490816200008f919062000b7d565b508060059081620000a1919062000b7d565b505050620000c4620000b8620004c360201b60201c565b620004cb60201b60201c565b60006b204fce5e3e250261100000009050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505062000152306080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200059160201b60201c565b6000600d819055506000600e819055506000600f81905550600f54600e54600d546200017f919062000c93565b6200018b919062000c93565b600c81905550600060118190555060006012819055506000601381905550601354601254601154620001be919062000c93565b620001ca919062000c93565b601081905550601054601781905550600160186000620001ef6200076260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016018600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060805173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000340573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000366919062000d38565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060805173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003d0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003f6919062000d38565b6040518363ffffffff1660e01b81526004016200041592919062000d7b565b6020604051808303816000875af115801562000435573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200045b919062000d38565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004bc620004af6200076260201b60201c565b826200078c60201b60201c565b5062000f89565b600033905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000603576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005fa9062000e2f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000675576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200066c9062000ec7565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000755919062000efa565b60405180910390a3505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620007fe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007f59062000f67565b60405180910390fd5b6200081260008383620008f960201b60201c565b806002600082825462000826919062000c93565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620008d9919062000efa565b60405180910390a3620008f560008383620008fe60201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200098557607f821691505b6020821081036200099b576200099a6200093d565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000a057fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620009c6565b62000a118683620009c6565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000a5e62000a5862000a528462000a29565b62000a33565b62000a29565b9050919050565b6000819050919050565b62000a7a8362000a3d565b62000a9262000a898262000a65565b848454620009d3565b825550505050565b600090565b62000aa962000a9a565b62000ab681848462000a6f565b505050565b5b8181101562000ade5762000ad260008262000a9f565b60018101905062000abc565b5050565b601f82111562000b2d5762000af781620009a1565b62000b0284620009b6565b8101602085101562000b12578190505b62000b2a62000b2185620009b6565b83018262000abb565b50505b505050565b600082821c905092915050565b600062000b526000198460080262000b32565b1980831691505092915050565b600062000b6d838362000b3f565b9150826002028217905092915050565b62000b888262000903565b67ffffffffffffffff81111562000ba45762000ba36200090e565b5b62000bb082546200096c565b62000bbd82828562000ae2565b600060209050601f83116001811462000bf5576000841562000be0578287015190505b62000bec858262000b5f565b86555062000c5c565b601f19841662000c0586620009a1565b60005b8281101562000c2f5784890151825560018201915060208501945060208101905062000c08565b8683101562000c4f578489015162000c4b601f89168262000b3f565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000ca08262000a29565b915062000cad8362000a29565b925082820190508082111562000cc85762000cc762000c64565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000d008262000cd3565b9050919050565b62000d128162000cf3565b811462000d1e57600080fd5b50565b60008151905062000d328162000d07565b92915050565b60006020828403121562000d515762000d5062000cce565b5b600062000d618482850162000d21565b91505092915050565b62000d758162000cf3565b82525050565b600060408201905062000d92600083018562000d6a565b62000da1602083018462000d6a565b9392505050565b600082825260208201905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600062000e1760248362000da8565b915062000e248262000db9565b604082019050919050565b6000602082019050818103600083015262000e4a8162000e08565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600062000eaf60228362000da8565b915062000ebc8262000e51565b604082019050919050565b6000602082019050818103600083015262000ee28162000ea0565b9050919050565b62000ef48162000a29565b82525050565b600060208201905062000f11600083018462000ee9565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000f4f601f8362000da8565b915062000f5c8262000f17565b602082019050919050565b6000602082019050818103600083015262000f828162000f40565b9050919050565b6080516133a762000fc8600039600081816107ec01528181611fe1015281816120c2015281816120e90152818161218501526121ac01526133a76000f3fe6080604052600436106101d15760003560e01c806375f0a874116100f7578063c04a541411610095578063d85ba06311610064578063d85ba06314610679578063dd62ed3e146106a4578063e2f45605146106e1578063f2fde38b1461070c576101d8565b8063c04a5414146105e3578063c9567bf91461060e578063d2c7219114610625578063d46980161461064e576101d8565b806395d89b41116100d157806395d89b41146105155780639a7a23d614610540578063a457c2d714610569578063a9059cbb146105a6576101d8565b806375f0a874146104945780638da5cb5b146104bf57806393ec52de146104ea576101d8565b8063313ce5671161016f5780636a486a8e1161013e5780636a486a8e146103ea5780636ddd17131461041557806370a0823114610440578063715018a61461047d576101d8565b8063313ce5671461032c578063395093511461035757806349bd5a5e146103945780634ada218b146103bf576101d8565b806318160ddd116101ab57806318160ddd14610270578063182073a41461029b57806323b872dd146102c457806327c8f83514610301576101d8565b806306fdde03146101dd578063095ea7b3146102085780631694505e14610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f2610735565b6040516101ff919061230b565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a91906123d5565b6107c7565b60405161023c9190612430565b60405180910390f35b34801561025157600080fd5b5061025a6107ea565b60405161026791906124aa565b60405180910390f35b34801561027c57600080fd5b5061028561080e565b60405161029291906124d4565b60405180910390f35b3480156102a757600080fd5b506102c260048036038101906102bd919061251b565b610818565b005b3480156102d057600080fd5b506102eb60048036038101906102e6919061255b565b6108c9565b6040516102f89190612430565b60405180910390f35b34801561030d57600080fd5b506103166108f8565b60405161032391906125bd565b60405180910390f35b34801561033857600080fd5b506103416108fe565b60405161034e91906125f4565b60405180910390f35b34801561036357600080fd5b5061037e600480360381019061037991906123d5565b610907565b60405161038b9190612430565b60405180910390f35b3480156103a057600080fd5b506103a961093e565b6040516103b691906125bd565b60405180910390f35b3480156103cb57600080fd5b506103d4610964565b6040516103e19190612430565b60405180910390f35b3480156103f657600080fd5b506103ff610977565b60405161040c91906124d4565b60405180910390f35b34801561042157600080fd5b5061042a61097d565b6040516104379190612430565b60405180910390f35b34801561044c57600080fd5b506104676004803603810190610462919061260f565b610990565b60405161047491906124d4565b60405180910390f35b34801561048957600080fd5b506104926109d8565b005b3480156104a057600080fd5b506104a96109ec565b6040516104b691906125bd565b60405180910390f35b3480156104cb57600080fd5b506104d4610a12565b6040516104e191906125bd565b60405180910390f35b3480156104f657600080fd5b506104ff610a3c565b60405161050c91906124d4565b60405180910390f35b34801561052157600080fd5b5061052a610a42565b604051610537919061230b565b60405180910390f35b34801561054c57600080fd5b506105676004803603810190610562919061251b565b610ad4565b005b34801561057557600080fd5b50610590600480360381019061058b91906123d5565b610b7a565b60405161059d9190612430565b60405180910390f35b3480156105b257600080fd5b506105cd60048036038101906105c891906123d5565b610bf1565b6040516105da9190612430565b60405180910390f35b3480156105ef57600080fd5b506105f8610c14565b60405161060591906125bd565b60405180910390f35b34801561061a57600080fd5b50610623610c3a565b005b34801561063157600080fd5b5061064c60048036038101906106479190612784565b610cca565b005b34801561065a57600080fd5b50610663610d8b565b60405161067091906125bd565b60405180910390f35b34801561068557600080fd5b5061068e610db1565b60405161069b91906124d4565b60405180910390f35b3480156106b057600080fd5b506106cb60048036038101906106c691906127e0565b610db7565b6040516106d891906124d4565b60405180910390f35b3480156106ed57600080fd5b506106f6610e3e565b60405161070391906124d4565b60405180910390f35b34801561071857600080fd5b50610733600480360381019061072e919061260f565b610e44565b005b6060600480546107449061284f565b80601f01602080910402602001604051908101604052809291908181526020018280546107709061284f565b80156107bd5780601f10610792576101008083540402835291602001916107bd565b820191906000526020600020905b8154815290600101906020018083116107a057829003601f168201915b5050505050905090565b6000806107d2610ec7565b90506107df818585610ecf565b600191505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b610820611098565b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516108bd9190612430565b60405180910390a25050565b6000806108d4610ec7565b90506108e1858285611116565b6108ec8585856111a2565b60019150509392505050565b61dead81565b60006012905090565b600080610912610ec7565b90506109338185856109248589610db7565b61092e91906128af565b610ecf565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60149054906101000a900460ff1681565b60105481565b600a60159054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6109e0611098565b6109ea6000611877565b565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60035481565b606060058054610a519061284f565b80601f0160208091040260200160405190810160405280929190818152602001828054610a7d9061284f565b8015610aca5780601f10610a9f57610100808354040283529160200191610aca565b820191906000526020600020905b815481529060010190602001808311610aad57829003601f168201915b5050505050905090565b610adc611098565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b639061297b565b60405180910390fd5b610b76828261193d565b5050565b600080610b85610ec7565b90506000610b938286610db7565b905083811015610bd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcf90612a0d565b60405180910390fd5b610be58286868403610ecf565b60019250505092915050565b600080610bfc610ec7565b9050610c098185856111a2565b600191505092915050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610c42611098565b600a60149054906101000a900460ff1615610c92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8990612a79565b60405180910390fd5b6001600a60146101000a81548160ff0219169083151502179055506001600a60156101000a81548160ff021916908315150217905550565b610cd2611098565b60005b8251811015610d8657600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16838281518110610d2a57610d29612a99565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff160315610d7357610d72838281518110610d6457610d63612a99565b5b60200260200101518361193d565b5b8080610d7e90612ac8565b915050610cd5565b505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b5481565b610e4c611098565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610ebb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb290612b82565b60405180910390fd5b610ec481611877565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3590612c14565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa490612ca6565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161108b91906124d4565b60405180910390a3505050565b6110a0610ec7565b73ffffffffffffffffffffffffffffffffffffffff166110be610a12565b73ffffffffffffffffffffffffffffffffffffffff1614611114576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110b90612d12565b60405180910390fd5b565b60006111228484610db7565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461119c578181101561118e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118590612d7e565b60405180910390fd5b61119b8484848403610ecf565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611211576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120890612e10565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611280576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127790612ea2565b60405180910390fd5b600a60149054906101000a900460ff16806112e45750601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806113385750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611377576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136e90612f0e565b60405180910390fd5b600081036113905761138b838360006119de565b611872565b600061139b30610990565b90506000600b5482101590508080156113c05750600a60159054906101000a900460ff165b80156113d95750600a60169054906101000a900460ff16155b801561142e5750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80156114845750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156114da5750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561151e576001600a60166101000a81548160ff021916908315150217905550611502611c54565b6000600a60166101000a81548160ff0219169083151502179055505b6000600a60169054906101000a900460ff16159050601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806115d45750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156115de57600090505b6000811561185957601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561164157506000601054115b1561170f5761166f61271061166160105488611ef690919063ffffffff16565b611f0c90919063ffffffff16565b9050601054601354826116829190612f2e565b61168c9190612f9f565b6016600082825461169d91906128af565b92505081905550601054601154826116b59190612f2e565b6116bf9190612f9f565b601460008282546116d091906128af565b92505081905550601054601254826116e89190612f2e565b6116f29190612f9f565b6015600082825461170391906128af565b92505081905550611835565b601960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561176a57506000600c54115b156118345761179861271061178a600c5488611ef690919063ffffffff16565b611f0c90919063ffffffff16565b9050600c54600f54826117ab9190612f2e565b6117b59190612f9f565b601660008282546117c691906128af565b92505081905550600c54600d54826117de9190612f2e565b6117e89190612f9f565b601460008282546117f991906128af565b92505081905550600c54600e54826118119190612f2e565b61181b9190612f9f565b6015600082825461182c91906128af565b925050819055505b5b600081111561184a576118498730836119de565b5b80856118569190612fd0565b94505b6118648787876119de565b601754601081905550505050505b505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4490612e10565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611abc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab390612ea2565b60405180910390fd5b611ac7838383611f22565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611b4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4490613076565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611c3b91906124d4565b60405180910390a3611c4e848484611f27565b50505050565b6000611c5f30610990565b90506000601554601454601654611c7691906128af565b611c8091906128af565b905060008060028360165486611c969190612f2e565b611ca09190612f9f565b611caa9190612f9f565b90506000611cc18286611f2c90919063ffffffff16565b90506000479050611cd182611f42565b6000611ce68247611f2c90919063ffffffff16565b90506000611d1187611d0360145485611ef690919063ffffffff16565b611f0c90919063ffffffff16565b90506000611d3c88611d2e60155486611ef690919063ffffffff16565b611f0c90919063ffffffff16565b90506000818385611d4d9190612fd0565b611d579190612fd0565b9050600060168190555060006014819055506000601581905550600087118015611d815750600081115b15611dce57611d90878261217f565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601654604051611dc593929190613096565b60405180910390a15b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051611e14906130fe565b60006040518083038185875af1925050503d8060008114611e51576040519150601f19603f3d011682016040523d82523d6000602084013e611e56565b606091505b505080985050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051611ea2906130fe565b60006040518083038185875af1925050503d8060008114611edf576040519150601f19603f3d011682016040523d82523d6000602084013e611ee4565b606091505b50508098505050505050505050505050565b60008183611f049190612f2e565b905092915050565b60008183611f1a9190612f9f565b905092915050565b505050565b505050565b60008183611f3a9190612fd0565b905092915050565b6000600267ffffffffffffffff811115611f5f57611f5e612641565b5b604051908082528060200260200182016040528015611f8d5781602001602082028036833780820191505090505b5090503081600081518110611fa557611fa4612a99565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561204a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061206e9190613128565b8160018151811061208257612081612a99565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506120e7307f000000000000000000000000000000000000000000000000000000000000000084610ecf565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161214995949392919061324e565b600060405180830381600087803b15801561216357600080fd5b505af1158015612177573d6000803e3d6000fd5b505050505050565b6121aa307f000000000000000000000000000000000000000000000000000000000000000084610ecf565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612231969594939291906132a8565b60606040518083038185885af115801561224f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612274919061331e565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156122b557808201518184015260208101905061229a565b60008484015250505050565b6000601f19601f8301169050919050565b60006122dd8261227b565b6122e78185612286565b93506122f7818560208601612297565b612300816122c1565b840191505092915050565b6000602082019050818103600083015261232581846122d2565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061236c82612341565b9050919050565b61237c81612361565b811461238757600080fd5b50565b60008135905061239981612373565b92915050565b6000819050919050565b6123b28161239f565b81146123bd57600080fd5b50565b6000813590506123cf816123a9565b92915050565b600080604083850312156123ec576123eb612337565b5b60006123fa8582860161238a565b925050602061240b858286016123c0565b9150509250929050565b60008115159050919050565b61242a81612415565b82525050565b60006020820190506124456000830184612421565b92915050565b6000819050919050565b600061247061246b61246684612341565b61244b565b612341565b9050919050565b600061248282612455565b9050919050565b600061249482612477565b9050919050565b6124a481612489565b82525050565b60006020820190506124bf600083018461249b565b92915050565b6124ce8161239f565b82525050565b60006020820190506124e960008301846124c5565b92915050565b6124f881612415565b811461250357600080fd5b50565b600081359050612515816124ef565b92915050565b6000806040838503121561253257612531612337565b5b60006125408582860161238a565b925050602061255185828601612506565b9150509250929050565b60008060006060848603121561257457612573612337565b5b60006125828682870161238a565b93505060206125938682870161238a565b92505060406125a4868287016123c0565b9150509250925092565b6125b781612361565b82525050565b60006020820190506125d260008301846125ae565b92915050565b600060ff82169050919050565b6125ee816125d8565b82525050565b600060208201905061260960008301846125e5565b92915050565b60006020828403121561262557612624612337565b5b60006126338482850161238a565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612679826122c1565b810181811067ffffffffffffffff8211171561269857612697612641565b5b80604052505050565b60006126ab61232d565b90506126b78282612670565b919050565b600067ffffffffffffffff8211156126d7576126d6612641565b5b602082029050602081019050919050565b600080fd5b60006127006126fb846126bc565b6126a1565b90508083825260208201905060208402830185811115612723576127226126e8565b5b835b8181101561274c5780612738888261238a565b845260208401935050602081019050612725565b5050509392505050565b600082601f83011261276b5761276a61263c565b5b813561277b8482602086016126ed565b91505092915050565b6000806040838503121561279b5761279a612337565b5b600083013567ffffffffffffffff8111156127b9576127b861233c565b5b6127c585828601612756565b92505060206127d685828601612506565b9150509250929050565b600080604083850312156127f7576127f6612337565b5b60006128058582860161238a565b92505060206128168582860161238a565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061286757607f821691505b60208210810361287a57612879612820565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006128ba8261239f565b91506128c58361239f565b92508282019050808211156128dd576128dc612880565b5b92915050565b7f5468652050616e63616b655377617020706169722063616e6e6f74206265207260008201527f656d6f7665642066726f6d206175746f6d617465644d61726b65744d616b657260208201527f5061697273000000000000000000000000000000000000000000000000000000604082015250565b6000612965604583612286565b9150612970826128e3565b606082019050919050565b6000602082019050818103600083015261299481612958565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006129f7602583612286565b9150612a028261299b565b604082019050919050565b60006020820190508181036000830152612a26816129ea565b9050919050565b7f54726164696e6720616c7265616479206163746976652e000000000000000000600082015250565b6000612a63601783612286565b9150612a6e82612a2d565b602082019050919050565b60006020820190508181036000830152612a9281612a56565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000612ad38261239f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612b0557612b04612880565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f205860008201527f5452554d50206164647265737300000000000000000000000000000000000000602082015250565b6000612b6c602d83612286565b9150612b7782612b10565b604082019050919050565b60006020820190508181036000830152612b9b81612b5f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612bfe602483612286565b9150612c0982612ba2565b604082019050919050565b60006020820190508181036000830152612c2d81612bf1565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612c90602283612286565b9150612c9b82612c34565b604082019050919050565b60006020820190508181036000830152612cbf81612c83565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612cfc602083612286565b9150612d0782612cc6565b602082019050919050565b60006020820190508181036000830152612d2b81612cef565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000612d68601d83612286565b9150612d7382612d32565b602082019050919050565b60006020820190508181036000830152612d9781612d5b565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612dfa602583612286565b9150612e0582612d9e565b604082019050919050565b60006020820190508181036000830152612e2981612ded565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612e8c602383612286565b9150612e9782612e30565b604082019050919050565b60006020820190508181036000830152612ebb81612e7f565b9050919050565b7f54726164696e67206e6f742079657420656e61626c6564210000000000000000600082015250565b6000612ef8601883612286565b9150612f0382612ec2565b602082019050919050565b60006020820190508181036000830152612f2781612eeb565b9050919050565b6000612f398261239f565b9150612f448361239f565b9250828202612f528161239f565b91508282048414831517612f6957612f68612880565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612faa8261239f565b9150612fb58361239f565b925082612fc557612fc4612f70565b5b828204905092915050565b6000612fdb8261239f565b9150612fe68361239f565b9250828203905081811115612ffe57612ffd612880565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613060602683612286565b915061306b82613004565b604082019050919050565b6000602082019050818103600083015261308f81613053565b9050919050565b60006060820190506130ab60008301866124c5565b6130b860208301856124c5565b6130c560408301846124c5565b949350505050565b600081905092915050565b50565b60006130e86000836130cd565b91506130f3826130d8565b600082019050919050565b6000613109826130db565b9150819050919050565b60008151905061312281612373565b92915050565b60006020828403121561313e5761313d612337565b5b600061314c84828501613113565b91505092915050565b6000819050919050565b600061317a61317561317084613155565b61244b565b61239f565b9050919050565b61318a8161315f565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6131c581612361565b82525050565b60006131d783836131bc565b60208301905092915050565b6000602082019050919050565b60006131fb82613190565b613205818561319b565b9350613210836131ac565b8060005b8381101561324157815161322888826131cb565b9750613233836131e3565b925050600181019050613214565b5085935050505092915050565b600060a08201905061326360008301886124c5565b6132706020830187613181565b818103604083015261328281866131f0565b905061329160608301856125ae565b61329e60808301846124c5565b9695505050505050565b600060c0820190506132bd60008301896125ae565b6132ca60208301886124c5565b6132d76040830187613181565b6132e46060830186613181565b6132f160808301856125ae565b6132fe60a08301846124c5565b979650505050505050565b600081519050613318816123a9565b92915050565b60008060006060848603121561333757613336612337565b5b600061334586828701613309565b935050602061335686828701613309565b925050604061336786828701613309565b915050925092509256fea264697066735822122087aa67e6f22d6c0edad4f48aba24752a20815370daf33e271ce6da90bc76b4ce64736f6c63430008110033
Deployed Bytecode
0x6080604052600436106101d15760003560e01c806375f0a874116100f7578063c04a541411610095578063d85ba06311610064578063d85ba06314610679578063dd62ed3e146106a4578063e2f45605146106e1578063f2fde38b1461070c576101d8565b8063c04a5414146105e3578063c9567bf91461060e578063d2c7219114610625578063d46980161461064e576101d8565b806395d89b41116100d157806395d89b41146105155780639a7a23d614610540578063a457c2d714610569578063a9059cbb146105a6576101d8565b806375f0a874146104945780638da5cb5b146104bf57806393ec52de146104ea576101d8565b8063313ce5671161016f5780636a486a8e1161013e5780636a486a8e146103ea5780636ddd17131461041557806370a0823114610440578063715018a61461047d576101d8565b8063313ce5671461032c578063395093511461035757806349bd5a5e146103945780634ada218b146103bf576101d8565b806318160ddd116101ab57806318160ddd14610270578063182073a41461029b57806323b872dd146102c457806327c8f83514610301576101d8565b806306fdde03146101dd578063095ea7b3146102085780631694505e14610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f2610735565b6040516101ff919061230b565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a91906123d5565b6107c7565b60405161023c9190612430565b60405180910390f35b34801561025157600080fd5b5061025a6107ea565b60405161026791906124aa565b60405180910390f35b34801561027c57600080fd5b5061028561080e565b60405161029291906124d4565b60405180910390f35b3480156102a757600080fd5b506102c260048036038101906102bd919061251b565b610818565b005b3480156102d057600080fd5b506102eb60048036038101906102e6919061255b565b6108c9565b6040516102f89190612430565b60405180910390f35b34801561030d57600080fd5b506103166108f8565b60405161032391906125bd565b60405180910390f35b34801561033857600080fd5b506103416108fe565b60405161034e91906125f4565b60405180910390f35b34801561036357600080fd5b5061037e600480360381019061037991906123d5565b610907565b60405161038b9190612430565b60405180910390f35b3480156103a057600080fd5b506103a961093e565b6040516103b691906125bd565b60405180910390f35b3480156103cb57600080fd5b506103d4610964565b6040516103e19190612430565b60405180910390f35b3480156103f657600080fd5b506103ff610977565b60405161040c91906124d4565b60405180910390f35b34801561042157600080fd5b5061042a61097d565b6040516104379190612430565b60405180910390f35b34801561044c57600080fd5b506104676004803603810190610462919061260f565b610990565b60405161047491906124d4565b60405180910390f35b34801561048957600080fd5b506104926109d8565b005b3480156104a057600080fd5b506104a96109ec565b6040516104b691906125bd565b60405180910390f35b3480156104cb57600080fd5b506104d4610a12565b6040516104e191906125bd565b60405180910390f35b3480156104f657600080fd5b506104ff610a3c565b60405161050c91906124d4565b60405180910390f35b34801561052157600080fd5b5061052a610a42565b604051610537919061230b565b60405180910390f35b34801561054c57600080fd5b506105676004803603810190610562919061251b565b610ad4565b005b34801561057557600080fd5b50610590600480360381019061058b91906123d5565b610b7a565b60405161059d9190612430565b60405180910390f35b3480156105b257600080fd5b506105cd60048036038101906105c891906123d5565b610bf1565b6040516105da9190612430565b60405180910390f35b3480156105ef57600080fd5b506105f8610c14565b60405161060591906125bd565b60405180910390f35b34801561061a57600080fd5b50610623610c3a565b005b34801561063157600080fd5b5061064c60048036038101906106479190612784565b610cca565b005b34801561065a57600080fd5b50610663610d8b565b60405161067091906125bd565b60405180910390f35b34801561068557600080fd5b5061068e610db1565b60405161069b91906124d4565b60405180910390f35b3480156106b057600080fd5b506106cb60048036038101906106c691906127e0565b610db7565b6040516106d891906124d4565b60405180910390f35b3480156106ed57600080fd5b506106f6610e3e565b60405161070391906124d4565b60405180910390f35b34801561071857600080fd5b50610733600480360381019061072e919061260f565b610e44565b005b6060600480546107449061284f565b80601f01602080910402602001604051908101604052809291908181526020018280546107709061284f565b80156107bd5780601f10610792576101008083540402835291602001916107bd565b820191906000526020600020905b8154815290600101906020018083116107a057829003601f168201915b5050505050905090565b6000806107d2610ec7565b90506107df818585610ecf565b600191505092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b610820611098565b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516108bd9190612430565b60405180910390a25050565b6000806108d4610ec7565b90506108e1858285611116565b6108ec8585856111a2565b60019150509392505050565b61dead81565b60006012905090565b600080610912610ec7565b90506109338185856109248589610db7565b61092e91906128af565b610ecf565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a60149054906101000a900460ff1681565b60105481565b600a60159054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6109e0611098565b6109ea6000611877565b565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60035481565b606060058054610a519061284f565b80601f0160208091040260200160405190810160405280929190818152602001828054610a7d9061284f565b8015610aca5780601f10610a9f57610100808354040283529160200191610aca565b820191906000526020600020905b815481529060010190602001808311610aad57829003601f168201915b5050505050905090565b610adc611098565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b639061297b565b60405180910390fd5b610b76828261193d565b5050565b600080610b85610ec7565b90506000610b938286610db7565b905083811015610bd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcf90612a0d565b60405180910390fd5b610be58286868403610ecf565b60019250505092915050565b600080610bfc610ec7565b9050610c098185856111a2565b600191505092915050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610c42611098565b600a60149054906101000a900460ff1615610c92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8990612a79565b60405180910390fd5b6001600a60146101000a81548160ff0219169083151502179055506001600a60156101000a81548160ff021916908315150217905550565b610cd2611098565b60005b8251811015610d8657600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16838281518110610d2a57610d29612a99565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff160315610d7357610d72838281518110610d6457610d63612a99565b5b60200260200101518361193d565b5b8080610d7e90612ac8565b915050610cd5565b505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b5481565b610e4c611098565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610ebb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb290612b82565b60405180910390fd5b610ec481611877565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3590612c14565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa490612ca6565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161108b91906124d4565b60405180910390a3505050565b6110a0610ec7565b73ffffffffffffffffffffffffffffffffffffffff166110be610a12565b73ffffffffffffffffffffffffffffffffffffffff1614611114576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110b90612d12565b60405180910390fd5b565b60006111228484610db7565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461119c578181101561118e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118590612d7e565b60405180910390fd5b61119b8484848403610ecf565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611211576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120890612e10565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611280576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127790612ea2565b60405180910390fd5b600a60149054906101000a900460ff16806112e45750601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806113385750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611377576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136e90612f0e565b60405180910390fd5b600081036113905761138b838360006119de565b611872565b600061139b30610990565b90506000600b5482101590508080156113c05750600a60159054906101000a900460ff165b80156113d95750600a60169054906101000a900460ff16155b801561142e5750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80156114845750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156114da5750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561151e576001600a60166101000a81548160ff021916908315150217905550611502611c54565b6000600a60166101000a81548160ff0219169083151502179055505b6000600a60169054906101000a900460ff16159050601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806115d45750601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156115de57600090505b6000811561185957601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561164157506000601054115b1561170f5761166f61271061166160105488611ef690919063ffffffff16565b611f0c90919063ffffffff16565b9050601054601354826116829190612f2e565b61168c9190612f9f565b6016600082825461169d91906128af565b92505081905550601054601154826116b59190612f2e565b6116bf9190612f9f565b601460008282546116d091906128af565b92505081905550601054601254826116e89190612f2e565b6116f29190612f9f565b6015600082825461170391906128af565b92505081905550611835565b601960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561176a57506000600c54115b156118345761179861271061178a600c5488611ef690919063ffffffff16565b611f0c90919063ffffffff16565b9050600c54600f54826117ab9190612f2e565b6117b59190612f9f565b601660008282546117c691906128af565b92505081905550600c54600d54826117de9190612f2e565b6117e89190612f9f565b601460008282546117f991906128af565b92505081905550600c54600e54826118119190612f2e565b61181b9190612f9f565b6015600082825461182c91906128af565b925050819055505b5b600081111561184a576118498730836119de565b5b80856118569190612fd0565b94505b6118648787876119de565b601754601081905550505050505b505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4490612e10565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611abc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab390612ea2565b60405180910390fd5b611ac7838383611f22565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611b4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4490613076565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611c3b91906124d4565b60405180910390a3611c4e848484611f27565b50505050565b6000611c5f30610990565b90506000601554601454601654611c7691906128af565b611c8091906128af565b905060008060028360165486611c969190612f2e565b611ca09190612f9f565b611caa9190612f9f565b90506000611cc18286611f2c90919063ffffffff16565b90506000479050611cd182611f42565b6000611ce68247611f2c90919063ffffffff16565b90506000611d1187611d0360145485611ef690919063ffffffff16565b611f0c90919063ffffffff16565b90506000611d3c88611d2e60155486611ef690919063ffffffff16565b611f0c90919063ffffffff16565b90506000818385611d4d9190612fd0565b611d579190612fd0565b9050600060168190555060006014819055506000601581905550600087118015611d815750600081115b15611dce57611d90878261217f565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601654604051611dc593929190613096565b60405180910390a15b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051611e14906130fe565b60006040518083038185875af1925050503d8060008114611e51576040519150601f19603f3d011682016040523d82523d6000602084013e611e56565b606091505b505080985050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051611ea2906130fe565b60006040518083038185875af1925050503d8060008114611edf576040519150601f19603f3d011682016040523d82523d6000602084013e611ee4565b606091505b50508098505050505050505050505050565b60008183611f049190612f2e565b905092915050565b60008183611f1a9190612f9f565b905092915050565b505050565b505050565b60008183611f3a9190612fd0565b905092915050565b6000600267ffffffffffffffff811115611f5f57611f5e612641565b5b604051908082528060200260200182016040528015611f8d5781602001602082028036833780820191505090505b5090503081600081518110611fa557611fa4612a99565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561204a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061206e9190613128565b8160018151811061208257612081612a99565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506120e7307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84610ecf565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161214995949392919061324e565b600060405180830381600087803b15801561216357600080fd5b505af1158015612177573d6000803e3d6000fd5b505050505050565b6121aa307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84610ecf565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612231969594939291906132a8565b60606040518083038185885af115801561224f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612274919061331e565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156122b557808201518184015260208101905061229a565b60008484015250505050565b6000601f19601f8301169050919050565b60006122dd8261227b565b6122e78185612286565b93506122f7818560208601612297565b612300816122c1565b840191505092915050565b6000602082019050818103600083015261232581846122d2565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061236c82612341565b9050919050565b61237c81612361565b811461238757600080fd5b50565b60008135905061239981612373565b92915050565b6000819050919050565b6123b28161239f565b81146123bd57600080fd5b50565b6000813590506123cf816123a9565b92915050565b600080604083850312156123ec576123eb612337565b5b60006123fa8582860161238a565b925050602061240b858286016123c0565b9150509250929050565b60008115159050919050565b61242a81612415565b82525050565b60006020820190506124456000830184612421565b92915050565b6000819050919050565b600061247061246b61246684612341565b61244b565b612341565b9050919050565b600061248282612455565b9050919050565b600061249482612477565b9050919050565b6124a481612489565b82525050565b60006020820190506124bf600083018461249b565b92915050565b6124ce8161239f565b82525050565b60006020820190506124e960008301846124c5565b92915050565b6124f881612415565b811461250357600080fd5b50565b600081359050612515816124ef565b92915050565b6000806040838503121561253257612531612337565b5b60006125408582860161238a565b925050602061255185828601612506565b9150509250929050565b60008060006060848603121561257457612573612337565b5b60006125828682870161238a565b93505060206125938682870161238a565b92505060406125a4868287016123c0565b9150509250925092565b6125b781612361565b82525050565b60006020820190506125d260008301846125ae565b92915050565b600060ff82169050919050565b6125ee816125d8565b82525050565b600060208201905061260960008301846125e5565b92915050565b60006020828403121561262557612624612337565b5b60006126338482850161238a565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612679826122c1565b810181811067ffffffffffffffff8211171561269857612697612641565b5b80604052505050565b60006126ab61232d565b90506126b78282612670565b919050565b600067ffffffffffffffff8211156126d7576126d6612641565b5b602082029050602081019050919050565b600080fd5b60006127006126fb846126bc565b6126a1565b90508083825260208201905060208402830185811115612723576127226126e8565b5b835b8181101561274c5780612738888261238a565b845260208401935050602081019050612725565b5050509392505050565b600082601f83011261276b5761276a61263c565b5b813561277b8482602086016126ed565b91505092915050565b6000806040838503121561279b5761279a612337565b5b600083013567ffffffffffffffff8111156127b9576127b861233c565b5b6127c585828601612756565b92505060206127d685828601612506565b9150509250929050565b600080604083850312156127f7576127f6612337565b5b60006128058582860161238a565b92505060206128168582860161238a565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061286757607f821691505b60208210810361287a57612879612820565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006128ba8261239f565b91506128c58361239f565b92508282019050808211156128dd576128dc612880565b5b92915050565b7f5468652050616e63616b655377617020706169722063616e6e6f74206265207260008201527f656d6f7665642066726f6d206175746f6d617465644d61726b65744d616b657260208201527f5061697273000000000000000000000000000000000000000000000000000000604082015250565b6000612965604583612286565b9150612970826128e3565b606082019050919050565b6000602082019050818103600083015261299481612958565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006129f7602583612286565b9150612a028261299b565b604082019050919050565b60006020820190508181036000830152612a26816129ea565b9050919050565b7f54726164696e6720616c7265616479206163746976652e000000000000000000600082015250565b6000612a63601783612286565b9150612a6e82612a2d565b602082019050919050565b60006020820190508181036000830152612a9281612a56565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000612ad38261239f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612b0557612b04612880565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f205860008201527f5452554d50206164647265737300000000000000000000000000000000000000602082015250565b6000612b6c602d83612286565b9150612b7782612b10565b604082019050919050565b60006020820190508181036000830152612b9b81612b5f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612bfe602483612286565b9150612c0982612ba2565b604082019050919050565b60006020820190508181036000830152612c2d81612bf1565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612c90602283612286565b9150612c9b82612c34565b604082019050919050565b60006020820190508181036000830152612cbf81612c83565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612cfc602083612286565b9150612d0782612cc6565b602082019050919050565b60006020820190508181036000830152612d2b81612cef565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000612d68601d83612286565b9150612d7382612d32565b602082019050919050565b60006020820190508181036000830152612d9781612d5b565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612dfa602583612286565b9150612e0582612d9e565b604082019050919050565b60006020820190508181036000830152612e2981612ded565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612e8c602383612286565b9150612e9782612e30565b604082019050919050565b60006020820190508181036000830152612ebb81612e7f565b9050919050565b7f54726164696e67206e6f742079657420656e61626c6564210000000000000000600082015250565b6000612ef8601883612286565b9150612f0382612ec2565b602082019050919050565b60006020820190508181036000830152612f2781612eeb565b9050919050565b6000612f398261239f565b9150612f448361239f565b9250828202612f528161239f565b91508282048414831517612f6957612f68612880565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612faa8261239f565b9150612fb58361239f565b925082612fc557612fc4612f70565b5b828204905092915050565b6000612fdb8261239f565b9150612fe68361239f565b9250828203905081811115612ffe57612ffd612880565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613060602683612286565b915061306b82613004565b604082019050919050565b6000602082019050818103600083015261308f81613053565b9050919050565b60006060820190506130ab60008301866124c5565b6130b860208301856124c5565b6130c560408301846124c5565b949350505050565b600081905092915050565b50565b60006130e86000836130cd565b91506130f3826130d8565b600082019050919050565b6000613109826130db565b9150819050919050565b60008151905061312281612373565b92915050565b60006020828403121561313e5761313d612337565b5b600061314c84828501613113565b91505092915050565b6000819050919050565b600061317a61317561317084613155565b61244b565b61239f565b9050919050565b61318a8161315f565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6131c581612361565b82525050565b60006131d783836131bc565b60208301905092915050565b6000602082019050919050565b60006131fb82613190565b613205818561319b565b9350613210836131ac565b8060005b8381101561324157815161322888826131cb565b9750613233836131e3565b925050600181019050613214565b5085935050505092915050565b600060a08201905061326360008301886124c5565b6132706020830187613181565b818103604083015261328281866131f0565b905061329160608301856125ae565b61329e60808301846124c5565b9695505050505050565b600060c0820190506132bd60008301896125ae565b6132ca60208301886124c5565b6132d76040830187613181565b6132e46060830186613181565b6132f160808301856125ae565b6132fe60a08301846124c5565b979650505050505050565b600081519050613318816123a9565b92915050565b60008060006060848603121561333757613336612337565b5b600061334586828701613309565b935050602061335686828701613309565b925050604061336786828701613309565b915050925092509256fea264697066735822122087aa67e6f22d6c0edad4f48aba24752a20815370daf33e271ce6da90bc76b4ce64736f6c63430008110033
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.