Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
1,000,000,000 GG
Holders
818
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
15,952.287010415415020472 GGValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
GG
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-11-11 */ /* _____ _____ /\ \ /\ \ /::\ \ /::\ \ /::::\ \ /::::\ \ /::::::\ \ /::::::\ \ /:::/\:::\ \ /:::/\:::\ \ /:::/ \:::\ \ /:::/ \:::\ \ /:::/ \:::\ \ /:::/ \:::\ \ /:::/ / \:::\ \ /:::/ / \:::\ \ /:::/ / \:::\ ___\ /:::/ / \:::\ ___\ /:::/____/ ___\:::| |/:::/____/ ___\:::| | \:::\ \ /\ /:::|____|\:::\ \ /\ /:::|____| \:::\ /::\ \::/ / \:::\ /::\ \::/ / \:::\ \:::\ \/____/ \:::\ \:::\ \/____/ \:::\ \:::\____\ \:::\ \:::\____\ \:::\ /:::/ / \:::\ /:::/ / \:::\/:::/ / \:::\/:::/ / \::::::/ / \::::::/ / \::::/ / \::::/ / \::/____/ \::/____/ Telegram https://t.me/GoodGameETH Website https://goodgametoken.io/ */ // SPDX-License-Identifier: Unlicensed pragma solidity ^0.6.12; abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } contract Ownable is Context { address private _owner; address private _previousOwner; uint256 private _lockTime; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () internal { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } function getUnlockTime() public view returns (uint256) { return _lockTime; } } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract GG is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; mapping (address => uint256) private _rOwned; mapping (address => uint256) private _tOwned; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcludedFromFee; mapping (address => bool) private _isExcluded; address[] private _excluded; mapping (address => bool) private _isBlackListedBot; address[] private _blackListedBots; uint256 private constant MAX = ~uint256(0); uint256 private constant _tTotal = 1000000000 * 10**18; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; string private constant _name = 'Good Game '; string private constant _symbol = 'GG'; uint8 private constant _decimals = 18; uint256 private _taxFee = 1; uint256 private _teamFee = 10; uint256 private _previousTaxFee = _taxFee; uint256 private _previousTeamFee = _teamFee; address payable public _devWalletAddress; address payable public _marketingWalletAddress; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; bool inSwap = false; bool public swapEnabled = true; uint256 private _maxTxAmount = 20000000 * 10**18; uint256 private constant _numOfTokensToExchangeForTeam = 7000 * 10**18; uint256 private _maxWalletSize = 20000000 * 10**18; event botAddedToBlacklist(address account); event botRemovedFromBlacklist(address account); // event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap); // event SwapEnabledUpdated(bool enabled); modifier lockTheSwap { inSwap = true; _; inSwap = false; } constructor (address payable devWalletAddress, address payable marketingWalletAddress) public { _devWalletAddress = devWalletAddress; _marketingWalletAddress = marketingWalletAddress; _rOwned[_msgSender()] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // Create a uniswap pair for this new token uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); // set the rest of the contract variables uniswapV2Router = _uniswapV2Router; // Exclude owner and this contract from fee _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; emit Transfer(address(0), _msgSender(), _tTotal); } function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function isExcluded(address account) public view returns (bool) { return _isExcluded[account]; } function setExcludeFromFee(address account, bool excluded) external onlyOwner() { _isExcludedFromFee[account] = excluded; } function totalFees() public view returns (uint256) { return _tFeeTotal; } function deliver(uint256 tAmount) public { address sender = _msgSender(); require(!_isExcluded[sender], "Excluded addresses cannot call this function"); (uint256 rAmount,,,,,) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rTotal = _rTotal.sub(rAmount); _tFeeTotal = _tFeeTotal.add(tAmount); } function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) { require(tAmount <= _tTotal, "Amount must be less than supply"); if (!deductTransferFee) { (uint256 rAmount,,,,,) = _getValues(tAmount); return rAmount; } else { (,uint256 rTransferAmount,,,,) = _getValues(tAmount); return rTransferAmount; } } function tokenFromReflection(uint256 rAmount) public view returns(uint256) { require(rAmount <= _rTotal, "Amount must be less than total reflections"); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function addBotToBlacklist (address account) external onlyOwner() { require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We cannot blacklist UniSwap router'); require (!_isBlackListedBot[account], 'Account is already blacklisted'); _isBlackListedBot[account] = true; _blackListedBots.push(account); } function removeBotFromBlacklist(address account) external onlyOwner() { require (_isBlackListedBot[account], 'Account is not blacklisted'); for (uint256 i = 0; i < _blackListedBots.length; i++) { if (_blackListedBots[i] == account) { _blackListedBots[i] = _blackListedBots[_blackListedBots.length - 1]; _isBlackListedBot[account] = false; _blackListedBots.pop(); break; } } } function excludeAccount(address account) external onlyOwner() { require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not exclude Uniswap router.'); require(!_isExcluded[account], "Account is already excluded"); if(_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcluded[account] = true; _excluded.push(account); } function includeAccount(address account) external onlyOwner() { require(_isExcluded[account], "Account is not excluded"); for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _tOwned[account] = 0; _isExcluded[account] = false; _excluded.pop(); break; } } } function removeAllFee() private { if(_taxFee == 0 && _teamFee == 0) return; _previousTaxFee = _taxFee; _previousTeamFee = _teamFee; _taxFee = 0; _teamFee = 0; } function restoreAllFee() private { _taxFee = _previousTaxFee; _teamFee = _previousTeamFee; } function isExcludedFromFee(address account) public view returns(bool) { return _isExcludedFromFee[account]; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer(address sender, address recipient, uint256 amount) private { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); require(!_isBlackListedBot[sender], "You are blacklisted"); require(!_isBlackListedBot[msg.sender], "You are blacklisted"); require(!_isBlackListedBot[tx.origin], "You are blacklisted"); if(sender != owner() && recipient != owner()) { require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount."); } if(sender != owner() && recipient != owner() && recipient != uniswapV2Pair && recipient != address(0xdead)) { uint256 tokenBalanceRecipient = balanceOf(recipient); require(tokenBalanceRecipient + amount <= _maxWalletSize, "Recipient exceeds max wallet size."); } // is the token balance of this contract address over the min number of // tokens that we need to initiate a swap? // also, don't get caught in a circular team event. // also, don't swap if sender is uniswap pair. uint256 contractTokenBalance = balanceOf(address(this)); if(contractTokenBalance >= _maxTxAmount) { contractTokenBalance = _maxTxAmount; } bool overMinTokenBalance = contractTokenBalance >= _numOfTokensToExchangeForTeam; if (!inSwap && swapEnabled && overMinTokenBalance && sender != uniswapV2Pair) { // Swap tokens for ETH and send to resepctive wallets swapTokensForEth(contractTokenBalance); uint256 contractETHBalance = address(this).balance; if(contractETHBalance > 0) { sendETHToTeam(address(this).balance); } } //indicates if fee should be deducted from transfer bool takeFee = true; //if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]){ takeFee = false; } //transfer amount, it will take tax and team fee _tokenTransfer(sender,recipient,amount,takeFee); } function swapTokensForEth(uint256 tokenAmount) private lockTheSwap{ // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function sendETHToTeam(uint256 amount) private { _devWalletAddress.transfer(amount.div(5)); _marketingWalletAddress.transfer(amount.div(10).mul(8)); } function manualSwap() external onlyOwner() { uint256 contractBalance = balanceOf(address(this)); swapTokensForEth(contractBalance); } function manualSend() external onlyOwner() { uint256 contractETHBalance = address(this).balance; sendETHToTeam(contractETHBalance); } function setSwapEnabled(bool enabled) external onlyOwner(){ swapEnabled = enabled; } function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) private { if(!takeFee) removeAllFee(); if (_isExcluded[sender] && !_isExcluded[recipient]) { _transferFromExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && _isExcluded[recipient]) { _transferToExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && !_isExcluded[recipient]) { _transferStandard(sender, recipient, amount); } else if (_isExcluded[sender] && _isExcluded[recipient]) { _transferBothExcluded(sender, recipient, amount); } else { _transferStandard(sender, recipient, amount); } if(!takeFee) restoreAllFee(); } function _transferStandard(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeTeam(tTeam); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferToExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeTeam(tTeam); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeTeam(tTeam); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeTeam(tTeam); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _takeTeam(uint256 tTeam) private { uint256 currentRate = _getRate(); uint256 rTeam = tTeam.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rTeam); if(_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].add(tTeam); } function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } //to recieve ETH from uniswapV2Router when swaping receive() external payable {} function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) { (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _taxFee, _teamFee); uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tTeam, currentRate); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam); } function _getTValues(uint256 tAmount, uint256 taxFee, uint256 teamFee) private pure returns (uint256, uint256, uint256) { uint256 tFee = tAmount.mul(taxFee).div(100); uint256 tTeam = tAmount.mul(teamFee).div(100); uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam); return (tTransferAmount, tFee, tTeam); } function _getRValues(uint256 tAmount, uint256 tFee, uint256 tTeam, uint256 currentRate) private pure returns (uint256, uint256, uint256) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rTeam = tTeam.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns(uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns(uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; for (uint256 i = 0; i < _excluded.length; i++) { if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal); rSupply = rSupply.sub(_rOwned[_excluded[i]]); tSupply = tSupply.sub(_tOwned[_excluded[i]]); } if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function _getTaxFee() public view returns(uint256) { return _taxFee; } function _getTeamFee() public view returns (uint256) { return _teamFee; } function _getMaxTxAmount() public view returns(uint256) { return _maxTxAmount; } function _getETHBalance() public view returns(uint256 balance) { return address(this).balance; } function _setTaxFee(uint256 taxFee) external onlyOwner() { require(taxFee >= 1 && taxFee <= 25, 'taxFee should be in 1 - 25'); _taxFee = taxFee; } function _setTeamFee(uint256 teamFee) external onlyOwner() { require(teamFee >= 1 && teamFee <= 25, 'teamFee should be in 1 - 25'); _teamFee = teamFee; } function _setDevWallet(address payable devWalletAddress) external onlyOwner() { _devWalletAddress = devWalletAddress; } function _setMarketingWallet(address payable marketingWalletAddress) external onlyOwner() { _marketingWalletAddress = marketingWalletAddress; } function _setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() { _maxTxAmount = maxTxAmount; } function _setMaxWalletSize (uint256 maxWalletSize) external onlyOwner() { _maxWalletSize = maxWalletSize; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address payable","name":"devWalletAddress","type":"address"},{"internalType":"address payable","name":"marketingWalletAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"botAddedToBlacklist","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"botRemovedFromBlacklist","type":"event"},{"inputs":[],"name":"_devWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_getETHBalance","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_getMaxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_getTaxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_getTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"devWalletAddress","type":"address"}],"name":"_setDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketingWalletAddress","type":"address"}],"name":"_setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"_setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"_setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"_setTaxFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"teamFee","type":"uint256"}],"name":"_setTeamFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addBotToBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBotFromBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040526b01d290004395eb7bbfffffff19600b556001600d819055600a600e819055600f919091556010556012805461ffff60a01b1916600160a81b1790556a108b2a2c2802909400000060138190556014553480156200006157600080fd5b506040516200348c3803806200348c833981810160405260408110156200008757600080fd5b50805160209091015160006200009c6200039d565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601180546001600160a01b038085166001600160a01b0319928316179092556012805492841692909116919091179055600b5460036000620001276200039d565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200019e57600080fd5b505afa158015620001b3573d6000803e3d6000fd5b505050506040513d6020811015620001ca57600080fd5b5051604080516315ab88c960e31b815290516001600160a01b039283169263c9c653969230929186169163ad5c464891600480820192602092909190829003018186803b1580156200021b57600080fd5b505afa15801562000230573d6000803e3d6000fd5b505050506040513d60208110156200024757600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301525160448083019260209291908290030181600087803b1580156200029a57600080fd5b505af1158015620002af573d6000803e3d6000fd5b505050506040513d6020811015620002c657600080fd5b50516001600160601b0319606091821b811660a0529082901b16608052600160066000620002f3620003a1565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff1995861617905530815260069092529020805490911660011790556200033d6200039d565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6b033b2e3c9fd0803ce80000006040518082815260200191505060405180910390a3505050620003b0565b3390565b6000546001600160a01b031690565b60805160601c60a05160601c613099620003f3600039806110a85280611fc852806120ca525080610a8e52806123dd528061249552806124bc52506130996000f3fe60806040526004361061026b5760003560e01c8063602bc62b11610144578063b030b34a116100b6578063f2cc0c181161007a578063f2cc0c18146108f2578063f2fde38b14610925578063f429389014610958578063f7a915911461096d578063f815a84214610982578063f84354f11461099757610272565b8063b030b34a14610810578063b425bac314610843578063cba0e99614610858578063dd62ed3e1461088b578063e01af92c146108c657610272565b806395d89b411161010857806395d89b411461070f5780639e6c752914610724578063a457c2d71461074e578063a5e8c95414610787578063a9059cbb1461079c578063af9549e0146107d557610272565b8063602bc62b146106885780636ddd17131461069d57806370a08231146106b2578063715018a6146106e55780638da5cb5b146106fa57610272565b80632d838119116101dd5780634144d9e4116101a15780634144d9e4146105ba5780634549b039146105cf57806349bd5a5e1461060157806351bc3c85146106165780635342acb41461062b5780635880b8731461065e57610272565b80632d838119146104ed5780632fbff03014610517578063313ce5671461052c57806339509351146105575780633bd5d1731461059057610272565b806318160ddd1161022f57806318160ddd146103db5780631bbae6e0146103f05780631d7ef8791461041a5780631ff53b601461044d57806323b872dd1461048057806328667162146104c357610272565b806306fdde0314610277578063095ea7b3146103015780630a1f8ea81461034e57806313114a9d146103835780631694505e146103aa57610272565b3661027257005b600080fd5b34801561028357600080fd5b5061028c6109ca565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102c65781810151838201526020016102ae565b50505050905090810190601f1680156102f35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561030d57600080fd5b5061033a6004803603604081101561032457600080fd5b506001600160a01b0381351690602001356109ee565b604080519115158252519081900360200190f35b34801561035a57600080fd5b506103816004803603602081101561037157600080fd5b50356001600160a01b0316610a0c565b005b34801561038f57600080fd5b50610398610a86565b60408051918252519081900360200190f35b3480156103b657600080fd5b506103bf610a8c565b604080516001600160a01b039092168252519081900360200190f35b3480156103e757600080fd5b50610398610ab0565b3480156103fc57600080fd5b506103816004803603602081101561041357600080fd5b5035610ac0565b34801561042657600080fd5b506103816004803603602081101561043d57600080fd5b50356001600160a01b0316610b1d565b34801561045957600080fd5b506103816004803603602081101561047057600080fd5b50356001600160a01b0316610ca5565b34801561048c57600080fd5b5061033a600480360360608110156104a357600080fd5b506001600160a01b03813581169160208101359091169060400135610d1f565b3480156104cf57600080fd5b50610381600480360360208110156104e657600080fd5b5035610da6565b3480156104f957600080fd5b506103986004803603602081101561051057600080fd5b5035610e66565b34801561052357600080fd5b50610398610ec8565b34801561053857600080fd5b50610541610ece565b6040805160ff9092168252519081900360200190f35b34801561056357600080fd5b5061033a6004803603604081101561057a57600080fd5b506001600160a01b038135169060200135610ed3565b34801561059c57600080fd5b50610381600480360360208110156105b357600080fd5b5035610f21565b3480156105c657600080fd5b506103bf610ffb565b3480156105db57600080fd5b50610398600480360360408110156105f257600080fd5b5080359060200135151561100a565b34801561060d57600080fd5b506103bf6110a6565b34801561062257600080fd5b506103816110ca565b34801561063757600080fd5b5061033a6004803603602081101561064e57600080fd5b50356001600160a01b031661113b565b34801561066a57600080fd5b506103816004803603602081101561068157600080fd5b5035611159565b34801561069457600080fd5b50610398611219565b3480156106a957600080fd5b5061033a61121f565b3480156106be57600080fd5b50610398600480360360208110156106d557600080fd5b50356001600160a01b031661122f565b3480156106f157600080fd5b50610381611291565b34801561070657600080fd5b506103bf611333565b34801561071b57600080fd5b5061028c611342565b34801561073057600080fd5b506103816004803603602081101561074757600080fd5b503561135e565b34801561075a57600080fd5b5061033a6004803603604081101561077157600080fd5b506001600160a01b0381351690602001356113bb565b34801561079357600080fd5b50610398611423565b3480156107a857600080fd5b5061033a600480360360408110156107bf57600080fd5b506001600160a01b038135169060200135611429565b3480156107e157600080fd5b50610381600480360360408110156107f857600080fd5b506001600160a01b038135169060200135151561143d565b34801561081c57600080fd5b506103816004803603602081101561083357600080fd5b50356001600160a01b03166114c0565b34801561084f57600080fd5b506103bf611678565b34801561086457600080fd5b5061033a6004803603602081101561087b57600080fd5b50356001600160a01b0316611687565b34801561089757600080fd5b50610398600480360360408110156108ae57600080fd5b506001600160a01b03813581169160200135166116a5565b3480156108d257600080fd5b50610381600480360360208110156108e957600080fd5b503515156116d0565b3480156108fe57600080fd5b506103816004803603602081101561091557600080fd5b50356001600160a01b0316611746565b34801561093157600080fd5b506103816004803603602081101561094857600080fd5b50356001600160a01b0316611928565b34801561096457600080fd5b50610381611a20565b34801561097957600080fd5b50610398611a82565b34801561098e57600080fd5b50610398611a88565b3480156109a357600080fd5b50610381600480360360208110156109ba57600080fd5b50356001600160a01b0316611a8c565b60408051808201909152600a815269023b7b7b21023b0b6b2960b51b602082015290565b6000610a026109fb611c22565b8484611c26565b5060015b92915050565b610a14611c22565b6000546001600160a01b03908116911614610a64576040805162461bcd60e51b81526020600482018190526024820152600080516020612f5f833981519152604482015290519081900360640190fd5b601180546001600160a01b0319166001600160a01b0392909216919091179055565b600c5490565b7f000000000000000000000000000000000000000000000000000000000000000081565b6b033b2e3c9fd0803ce800000090565b610ac8611c22565b6000546001600160a01b03908116911614610b18576040805162461bcd60e51b81526020600482018190526024820152600080516020612f5f833981519152604482015290519081900360640190fd5b601355565b610b25611c22565b6000546001600160a01b03908116911614610b75576040805162461bcd60e51b81526020600482018190526024820152600080516020612f5f833981519152604482015290519081900360640190fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0382161415610bd15760405162461bcd60e51b8152600401808060200182810382526022815260200180612f156022913960400191505060405180910390fd5b6001600160a01b03811660009081526009602052604090205460ff1615610c3f576040805162461bcd60e51b815260206004820152601e60248201527f4163636f756e7420697320616c726561647920626c61636b6c69737465640000604482015290519081900360640190fd5b6001600160a01b03166000818152600960205260408120805460ff19166001908117909155600a805491820181559091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319169091179055565b610cad611c22565b6000546001600160a01b03908116911614610cfd576040805162461bcd60e51b81526020600482018190526024820152600080516020612f5f833981519152604482015290519081900360640190fd5b601280546001600160a01b0319166001600160a01b0392909216919091179055565b6000610d2c848484611d12565b610d9c84610d38611c22565b610d9785604051806060016040528060288152602001612f37602891396001600160a01b038a16600090815260056020526040812090610d76611c22565b6001600160a01b03168152602081019190915260400160002054919061217e565b611c26565b5060019392505050565b610dae611c22565b6000546001600160a01b03908116911614610dfe576040805162461bcd60e51b81526020600482018190526024820152600080516020612f5f833981519152604482015290519081900360640190fd5b60018110158015610e10575060198111155b610e61576040805162461bcd60e51b815260206004820152601b60248201527f7465616d4665652073686f756c6420626520696e2031202d2032350000000000604482015290519081900360640190fd5b600e55565b6000600b54821115610ea95760405162461bcd60e51b815260040180806020018281038252602a815260200180612e38602a913960400191505060405180910390fd5b6000610eb3612215565b9050610ebf8382612238565b9150505b919050565b600d5490565b601290565b6000610a02610ee0611c22565b84610d978560056000610ef1611c22565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490612281565b6000610f2b611c22565b6001600160a01b03811660009081526007602052604090205490915060ff1615610f865760405162461bcd60e51b815260040180806020018281038252602c815260200180613013602c913960400191505060405180910390fd5b6000610f91836122db565b505050506001600160a01b038416600090815260036020526040902054919250610fbd91905082612338565b6001600160a01b038316600090815260036020526040902055600b54610fe39082612338565b600b55600c54610ff39084612281565b600c55505050565b6012546001600160a01b031681565b60006b033b2e3c9fd0803ce800000083111561106d576040805162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604482015290519081900360640190fd5b8161108c57600061107d846122db565b50939550610a06945050505050565b6000611097846122db565b50929550610a06945050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6110d2611c22565b6000546001600160a01b03908116911614611122576040805162461bcd60e51b81526020600482018190526024820152600080516020612f5f833981519152604482015290519081900360640190fd5b600061112d3061122f565b90506111388161237a565b50565b6001600160a01b031660009081526006602052604090205460ff1690565b611161611c22565b6000546001600160a01b039081169116146111b1576040805162461bcd60e51b81526020600482018190526024820152600080516020612f5f833981519152604482015290519081900360640190fd5b600181101580156111c3575060198111155b611214576040805162461bcd60e51b815260206004820152601a60248201527f7461784665652073686f756c6420626520696e2031202d203235000000000000604482015290519081900360640190fd5b600d55565b60025490565b601254600160a81b900460ff1681565b6001600160a01b03811660009081526007602052604081205460ff161561126f57506001600160a01b038116600090815260046020526040902054610ec3565b6001600160a01b038216600090815260036020526040902054610a0690610e66565b611299611c22565b6000546001600160a01b039081169116146112e9576040805162461bcd60e51b81526020600482018190526024820152600080516020612f5f833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b604080518082019091526002815261474760f01b602082015290565b611366611c22565b6000546001600160a01b039081169116146113b6576040805162461bcd60e51b81526020600482018190526024820152600080516020612f5f833981519152604482015290519081900360640190fd5b601455565b6000610a026113c8611c22565b84610d978560405180606001604052806025815260200161303f60259139600560006113f2611c22565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919061217e565b600e5490565b6000610a02611436611c22565b8484611d12565b611445611c22565b6000546001600160a01b03908116911614611495576040805162461bcd60e51b81526020600482018190526024820152600080516020612f5f833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6114c8611c22565b6000546001600160a01b03908116911614611518576040805162461bcd60e51b81526020600482018190526024820152600080516020612f5f833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526009602052604090205460ff16611585576040805162461bcd60e51b815260206004820152601a60248201527f4163636f756e74206973206e6f7420626c61636b6c6973746564000000000000604482015290519081900360640190fd5b60005b600a5481101561167457816001600160a01b0316600a82815481106115a957fe5b6000918252602090912001546001600160a01b0316141561166c57600a805460001981019081106115d657fe5b600091825260209091200154600a80546001600160a01b0390921691839081106115fc57fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600990915260409020805460ff19169055600a80548061164557fe5b600082815260209020810160001990810180546001600160a01b0319169055019055611674565b600101611588565b5050565b6011546001600160a01b031681565b6001600160a01b031660009081526007602052604090205460ff1690565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b6116d8611c22565b6000546001600160a01b03908116911614611728576040805162461bcd60e51b81526020600482018190526024820152600080516020612f5f833981519152604482015290519081900360640190fd5b60128054911515600160a81b0260ff60a81b19909216919091179055565b61174e611c22565b6000546001600160a01b0390811691161461179e576040805162461bcd60e51b81526020600482018190526024820152600080516020612f5f833981519152604482015290519081900360640190fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03821614156117fa5760405162461bcd60e51b8152600401808060200182810382526022815260200180612ff16022913960400191505060405180910390fd5b6001600160a01b03811660009081526007602052604090205460ff1615611868576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b6001600160a01b038116600090815260036020526040902054156118c2576001600160a01b0381166000908152600360205260409020546118a890610e66565b6001600160a01b0382166000908152600460205260409020555b6001600160a01b03166000818152600760205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b611930611c22565b6000546001600160a01b03908116911614611980576040805162461bcd60e51b81526020600482018190526024820152600080516020612f5f833981519152604482015290519081900360640190fd5b6001600160a01b0381166119c55760405162461bcd60e51b8152600401808060200182810382526026815260200180612e626026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b611a28611c22565b6000546001600160a01b03908116911614611a78576040805162461bcd60e51b81526020600482018190526024820152600080516020612f5f833981519152604482015290519081900360640190fd5b47611138816125b1565b60135490565b4790565b611a94611c22565b6000546001600160a01b03908116911614611ae4576040805162461bcd60e51b81526020600482018190526024820152600080516020612f5f833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526007602052604090205460ff16611b51576040805162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c75646564000000000000000000604482015290519081900360640190fd5b60005b60085481101561167457816001600160a01b031660088281548110611b7557fe5b6000918252602090912001546001600160a01b03161415611c1a57600880546000198101908110611ba257fe5b600091825260209091200154600880546001600160a01b039092169183908110611bc857fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600482526040808220829055600790925220805460ff19169055600880548061164557fe5b600101611b54565b3390565b6001600160a01b038316611c6b5760405162461bcd60e51b8152600401808060200182810382526024815260200180612fcd6024913960400191505060405180910390fd5b6001600160a01b038216611cb05760405162461bcd60e51b8152600401808060200182810382526022815260200180612e886022913960400191505060405180910390fd5b6001600160a01b03808416600081815260056020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316611d575760405162461bcd60e51b8152600401808060200182810382526025815260200180612fa86025913960400191505060405180910390fd5b6001600160a01b038216611d9c5760405162461bcd60e51b8152600401808060200182810382526023815260200180612e156023913960400191505060405180910390fd5b60008111611ddb5760405162461bcd60e51b8152600401808060200182810382526029815260200180612f7f6029913960400191505060405180910390fd5b6001600160a01b03831660009081526009602052604090205460ff1615611e3f576040805162461bcd60e51b8152602060048201526013602482015272165bdd48185c9948189b1858dadb1a5cdd1959606a1b604482015290519081900360640190fd5b3360009081526009602052604090205460ff1615611e9a576040805162461bcd60e51b8152602060048201526013602482015272165bdd48185c9948189b1858dadb1a5cdd1959606a1b604482015290519081900360640190fd5b3260009081526009602052604090205460ff1615611ef5576040805162461bcd60e51b8152602060048201526013602482015272165bdd48185c9948189b1858dadb1a5cdd1959606a1b604482015290519081900360640190fd5b611efd611333565b6001600160a01b0316836001600160a01b031614158015611f375750611f21611333565b6001600160a01b0316826001600160a01b031614155b15611f7d57601354811115611f7d5760405162461bcd60e51b8152600401808060200182810382526028815260200180612ecc6028913960400191505060405180910390fd5b611f85611333565b6001600160a01b0316836001600160a01b031614158015611fbf5750611fa9611333565b6001600160a01b0316826001600160a01b031614155b8015611ffd57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b801561201457506001600160a01b03821661dead14155b1561206b5760006120248361122f565b905060145482820111156120695760405162461bcd60e51b8152600401808060200182810382526022815260200180612eaa6022913960400191505060405180910390fd5b505b60006120763061122f565b9050601354811061208657506013545b60125469017b7883c0691660000082101590600160a01b900460ff161580156120b85750601254600160a81b900460ff165b80156120c15750805b80156120ff57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b1561211f5761210d8261237a565b47801561211d5761211d476125b1565b505b6001600160a01b03851660009081526006602052604090205460019060ff168061216157506001600160a01b03851660009081526006602052604090205460ff165b1561216a575060005b61217686868684612641565b505050505050565b6000818484111561220d5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156121d25781810151838201526020016121ba565b50505050905090810190601f1680156121ff5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008060006122226127b5565b90925090506122318282612238565b9250505090565b600061227a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612940565b9392505050565b60008282018381101561227a576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008060008060008060008060006122f88a600d54600e546129a5565b9250925092506000612308612215565b9050600080600061231b8e8787876129fa565b919e509c509a509598509396509194505050505091939550919395565b600061227a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061217e565b6012805460ff60a01b1916600160a01b179055604080516002808252606080830184529260208301908036833701905050905030816000815181106123bb57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561243457600080fd5b505afa158015612448573d6000803e3d6000fd5b505050506040513d602081101561245e57600080fd5b505181518290600190811061246f57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506124ba307f000000000000000000000000000000000000000000000000000000000000000084611c26565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663791ac9478360008430426040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561255f578181015183820152602001612547565b505050509050019650505050505050600060405180830381600087803b15801561258857600080fd5b505af115801561259c573d6000803e3d6000fd5b50506012805460ff60a01b1916905550505050565b6011546001600160a01b03166108fc6125cb836005612238565b6040518115909202916000818181858888f193505050501580156125f3573d6000803e3d6000fd5b506012546001600160a01b03166108fc612619600861261385600a612238565b90612a4a565b6040518115909202916000818181858888f19350505050158015611674573d6000803e3d6000fd5b8061264e5761264e612aa3565b6001600160a01b03841660009081526007602052604090205460ff16801561268f57506001600160a01b03831660009081526007602052604090205460ff16155b156126a45761269f848484612ad5565b6127a2565b6001600160a01b03841660009081526007602052604090205460ff161580156126e557506001600160a01b03831660009081526007602052604090205460ff165b156126f55761269f848484612bf9565b6001600160a01b03841660009081526007602052604090205460ff1615801561273757506001600160a01b03831660009081526007602052604090205460ff16155b156127475761269f848484612ca2565b6001600160a01b03841660009081526007602052604090205460ff16801561278757506001600160a01b03831660009081526007602052604090205460ff165b156127975761269f848484612ce6565b6127a2848484612ca2565b806127af576127af612d59565b50505050565b600b5460009081906b033b2e3c9fd0803ce8000000825b6008548110156128fa578260036000600884815481106127e857fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061284d575081600460006008848154811061282657fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561286e57600b546b033b2e3c9fd0803ce80000009450945050505061293c565b6128ae600360006008848154811061288257fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612338565b92506128f060046000600884815481106128c457fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612338565b91506001016127cc565b50600b54612914906b033b2e3c9fd0803ce8000000612238565b82101561293657600b546b033b2e3c9fd0803ce800000093509350505061293c565b90925090505b9091565b6000818361298f5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156121d25781810151838201526020016121ba565b50600083858161299b57fe5b0495945050505050565b60008080806129bf60646129b98989612a4a565b90612238565b905060006129d260646129b98a89612a4a565b905060006129ea826129e48b86612338565b90612338565b9992985090965090945050505050565b6000808080612a098886612a4a565b90506000612a178887612a4a565b90506000612a258888612a4a565b90506000612a37826129e48686612338565b939b939a50919850919650505050505050565b600082612a5957506000610a06565b82820282848281612a6657fe5b041461227a5760405162461bcd60e51b8152600401808060200182810382526021815260200180612ef46021913960400191505060405180910390fd5b600d54158015612ab35750600e54155b15612abd57612ad3565b600d8054600f55600e8054601055600091829055555b565b600080600080600080612ae7876122db565b6001600160a01b038f16600090815260046020526040902054959b50939950919750955093509150612b199088612338565b6001600160a01b038a16600090815260046020908152604080832093909355600390522054612b489087612338565b6001600160a01b03808b1660009081526003602052604080822093909355908a1681522054612b779086612281565b6001600160a01b038916600090815260036020526040902055612b9981612d67565b612ba38483612df0565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080612c0b876122db565b6001600160a01b038f16600090815260036020526040902054959b50939950919750955093509150612c3d9087612338565b6001600160a01b03808b16600090815260036020908152604080832094909455918b16815260049091522054612c739084612281565b6001600160a01b038916600090815260046020908152604080832093909355600390522054612b779086612281565b600080600080600080612cb4876122db565b6001600160a01b038f16600090815260036020526040902054959b50939950919750955093509150612b489087612338565b600080600080600080612cf8876122db565b6001600160a01b038f16600090815260046020526040902054959b50939950919750955093509150612d2a9088612338565b6001600160a01b038a16600090815260046020908152604080832093909355600390522054612c3d9087612338565b600f54600d55601054600e55565b6000612d71612215565b90506000612d7f8383612a4a565b30600090815260036020526040902054909150612d9c9082612281565b3060009081526003602090815260408083209390935560079052205460ff1615612deb5730600090815260046020526040902054612dda9084612281565b306000908152600460205260409020555b505050565b600b54612dfd9083612338565b600b55600c54612e0d9082612281565b600c55505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373526563697069656e742065786365656473206d61782077616c6c65742073697a652e5472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7757652063616e6e6f7420626c61636b6c69737420556e695377617020726f7574657245524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737357652063616e206e6f74206578636c75646520556e697377617020726f757465722e4578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220448a3b593393f393eb13bb696af19992e0ffeff4cbc982619b91cb5248e8c0db64736f6c634300060c003300000000000000000000000037d09428fe7ed8e703b0c024b219be9cfd3bc10200000000000000000000000037d09428fe7ed8e703b0c024b219be9cfd3bc102
Deployed Bytecode
0x60806040526004361061026b5760003560e01c8063602bc62b11610144578063b030b34a116100b6578063f2cc0c181161007a578063f2cc0c18146108f2578063f2fde38b14610925578063f429389014610958578063f7a915911461096d578063f815a84214610982578063f84354f11461099757610272565b8063b030b34a14610810578063b425bac314610843578063cba0e99614610858578063dd62ed3e1461088b578063e01af92c146108c657610272565b806395d89b411161010857806395d89b411461070f5780639e6c752914610724578063a457c2d71461074e578063a5e8c95414610787578063a9059cbb1461079c578063af9549e0146107d557610272565b8063602bc62b146106885780636ddd17131461069d57806370a08231146106b2578063715018a6146106e55780638da5cb5b146106fa57610272565b80632d838119116101dd5780634144d9e4116101a15780634144d9e4146105ba5780634549b039146105cf57806349bd5a5e1461060157806351bc3c85146106165780635342acb41461062b5780635880b8731461065e57610272565b80632d838119146104ed5780632fbff03014610517578063313ce5671461052c57806339509351146105575780633bd5d1731461059057610272565b806318160ddd1161022f57806318160ddd146103db5780631bbae6e0146103f05780631d7ef8791461041a5780631ff53b601461044d57806323b872dd1461048057806328667162146104c357610272565b806306fdde0314610277578063095ea7b3146103015780630a1f8ea81461034e57806313114a9d146103835780631694505e146103aa57610272565b3661027257005b600080fd5b34801561028357600080fd5b5061028c6109ca565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102c65781810151838201526020016102ae565b50505050905090810190601f1680156102f35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561030d57600080fd5b5061033a6004803603604081101561032457600080fd5b506001600160a01b0381351690602001356109ee565b604080519115158252519081900360200190f35b34801561035a57600080fd5b506103816004803603602081101561037157600080fd5b50356001600160a01b0316610a0c565b005b34801561038f57600080fd5b50610398610a86565b60408051918252519081900360200190f35b3480156103b657600080fd5b506103bf610a8c565b604080516001600160a01b039092168252519081900360200190f35b3480156103e757600080fd5b50610398610ab0565b3480156103fc57600080fd5b506103816004803603602081101561041357600080fd5b5035610ac0565b34801561042657600080fd5b506103816004803603602081101561043d57600080fd5b50356001600160a01b0316610b1d565b34801561045957600080fd5b506103816004803603602081101561047057600080fd5b50356001600160a01b0316610ca5565b34801561048c57600080fd5b5061033a600480360360608110156104a357600080fd5b506001600160a01b03813581169160208101359091169060400135610d1f565b3480156104cf57600080fd5b50610381600480360360208110156104e657600080fd5b5035610da6565b3480156104f957600080fd5b506103986004803603602081101561051057600080fd5b5035610e66565b34801561052357600080fd5b50610398610ec8565b34801561053857600080fd5b50610541610ece565b6040805160ff9092168252519081900360200190f35b34801561056357600080fd5b5061033a6004803603604081101561057a57600080fd5b506001600160a01b038135169060200135610ed3565b34801561059c57600080fd5b50610381600480360360208110156105b357600080fd5b5035610f21565b3480156105c657600080fd5b506103bf610ffb565b3480156105db57600080fd5b50610398600480360360408110156105f257600080fd5b5080359060200135151561100a565b34801561060d57600080fd5b506103bf6110a6565b34801561062257600080fd5b506103816110ca565b34801561063757600080fd5b5061033a6004803603602081101561064e57600080fd5b50356001600160a01b031661113b565b34801561066a57600080fd5b506103816004803603602081101561068157600080fd5b5035611159565b34801561069457600080fd5b50610398611219565b3480156106a957600080fd5b5061033a61121f565b3480156106be57600080fd5b50610398600480360360208110156106d557600080fd5b50356001600160a01b031661122f565b3480156106f157600080fd5b50610381611291565b34801561070657600080fd5b506103bf611333565b34801561071b57600080fd5b5061028c611342565b34801561073057600080fd5b506103816004803603602081101561074757600080fd5b503561135e565b34801561075a57600080fd5b5061033a6004803603604081101561077157600080fd5b506001600160a01b0381351690602001356113bb565b34801561079357600080fd5b50610398611423565b3480156107a857600080fd5b5061033a600480360360408110156107bf57600080fd5b506001600160a01b038135169060200135611429565b3480156107e157600080fd5b50610381600480360360408110156107f857600080fd5b506001600160a01b038135169060200135151561143d565b34801561081c57600080fd5b506103816004803603602081101561083357600080fd5b50356001600160a01b03166114c0565b34801561084f57600080fd5b506103bf611678565b34801561086457600080fd5b5061033a6004803603602081101561087b57600080fd5b50356001600160a01b0316611687565b34801561089757600080fd5b50610398600480360360408110156108ae57600080fd5b506001600160a01b03813581169160200135166116a5565b3480156108d257600080fd5b50610381600480360360208110156108e957600080fd5b503515156116d0565b3480156108fe57600080fd5b506103816004803603602081101561091557600080fd5b50356001600160a01b0316611746565b34801561093157600080fd5b506103816004803603602081101561094857600080fd5b50356001600160a01b0316611928565b34801561096457600080fd5b50610381611a20565b34801561097957600080fd5b50610398611a82565b34801561098e57600080fd5b50610398611a88565b3480156109a357600080fd5b50610381600480360360208110156109ba57600080fd5b50356001600160a01b0316611a8c565b60408051808201909152600a815269023b7b7b21023b0b6b2960b51b602082015290565b6000610a026109fb611c22565b8484611c26565b5060015b92915050565b610a14611c22565b6000546001600160a01b03908116911614610a64576040805162461bcd60e51b81526020600482018190526024820152600080516020612f5f833981519152604482015290519081900360640190fd5b601180546001600160a01b0319166001600160a01b0392909216919091179055565b600c5490565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6b033b2e3c9fd0803ce800000090565b610ac8611c22565b6000546001600160a01b03908116911614610b18576040805162461bcd60e51b81526020600482018190526024820152600080516020612f5f833981519152604482015290519081900360640190fd5b601355565b610b25611c22565b6000546001600160a01b03908116911614610b75576040805162461bcd60e51b81526020600482018190526024820152600080516020612f5f833981519152604482015290519081900360640190fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0382161415610bd15760405162461bcd60e51b8152600401808060200182810382526022815260200180612f156022913960400191505060405180910390fd5b6001600160a01b03811660009081526009602052604090205460ff1615610c3f576040805162461bcd60e51b815260206004820152601e60248201527f4163636f756e7420697320616c726561647920626c61636b6c69737465640000604482015290519081900360640190fd5b6001600160a01b03166000818152600960205260408120805460ff19166001908117909155600a805491820181559091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319169091179055565b610cad611c22565b6000546001600160a01b03908116911614610cfd576040805162461bcd60e51b81526020600482018190526024820152600080516020612f5f833981519152604482015290519081900360640190fd5b601280546001600160a01b0319166001600160a01b0392909216919091179055565b6000610d2c848484611d12565b610d9c84610d38611c22565b610d9785604051806060016040528060288152602001612f37602891396001600160a01b038a16600090815260056020526040812090610d76611c22565b6001600160a01b03168152602081019190915260400160002054919061217e565b611c26565b5060019392505050565b610dae611c22565b6000546001600160a01b03908116911614610dfe576040805162461bcd60e51b81526020600482018190526024820152600080516020612f5f833981519152604482015290519081900360640190fd5b60018110158015610e10575060198111155b610e61576040805162461bcd60e51b815260206004820152601b60248201527f7465616d4665652073686f756c6420626520696e2031202d2032350000000000604482015290519081900360640190fd5b600e55565b6000600b54821115610ea95760405162461bcd60e51b815260040180806020018281038252602a815260200180612e38602a913960400191505060405180910390fd5b6000610eb3612215565b9050610ebf8382612238565b9150505b919050565b600d5490565b601290565b6000610a02610ee0611c22565b84610d978560056000610ef1611c22565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490612281565b6000610f2b611c22565b6001600160a01b03811660009081526007602052604090205490915060ff1615610f865760405162461bcd60e51b815260040180806020018281038252602c815260200180613013602c913960400191505060405180910390fd5b6000610f91836122db565b505050506001600160a01b038416600090815260036020526040902054919250610fbd91905082612338565b6001600160a01b038316600090815260036020526040902055600b54610fe39082612338565b600b55600c54610ff39084612281565b600c55505050565b6012546001600160a01b031681565b60006b033b2e3c9fd0803ce800000083111561106d576040805162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604482015290519081900360640190fd5b8161108c57600061107d846122db565b50939550610a06945050505050565b6000611097846122db565b50929550610a06945050505050565b7f00000000000000000000000060f44fb2a3ad4fabc2f41fae28638b261820bd7281565b6110d2611c22565b6000546001600160a01b03908116911614611122576040805162461bcd60e51b81526020600482018190526024820152600080516020612f5f833981519152604482015290519081900360640190fd5b600061112d3061122f565b90506111388161237a565b50565b6001600160a01b031660009081526006602052604090205460ff1690565b611161611c22565b6000546001600160a01b039081169116146111b1576040805162461bcd60e51b81526020600482018190526024820152600080516020612f5f833981519152604482015290519081900360640190fd5b600181101580156111c3575060198111155b611214576040805162461bcd60e51b815260206004820152601a60248201527f7461784665652073686f756c6420626520696e2031202d203235000000000000604482015290519081900360640190fd5b600d55565b60025490565b601254600160a81b900460ff1681565b6001600160a01b03811660009081526007602052604081205460ff161561126f57506001600160a01b038116600090815260046020526040902054610ec3565b6001600160a01b038216600090815260036020526040902054610a0690610e66565b611299611c22565b6000546001600160a01b039081169116146112e9576040805162461bcd60e51b81526020600482018190526024820152600080516020612f5f833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b604080518082019091526002815261474760f01b602082015290565b611366611c22565b6000546001600160a01b039081169116146113b6576040805162461bcd60e51b81526020600482018190526024820152600080516020612f5f833981519152604482015290519081900360640190fd5b601455565b6000610a026113c8611c22565b84610d978560405180606001604052806025815260200161303f60259139600560006113f2611c22565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919061217e565b600e5490565b6000610a02611436611c22565b8484611d12565b611445611c22565b6000546001600160a01b03908116911614611495576040805162461bcd60e51b81526020600482018190526024820152600080516020612f5f833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6114c8611c22565b6000546001600160a01b03908116911614611518576040805162461bcd60e51b81526020600482018190526024820152600080516020612f5f833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526009602052604090205460ff16611585576040805162461bcd60e51b815260206004820152601a60248201527f4163636f756e74206973206e6f7420626c61636b6c6973746564000000000000604482015290519081900360640190fd5b60005b600a5481101561167457816001600160a01b0316600a82815481106115a957fe5b6000918252602090912001546001600160a01b0316141561166c57600a805460001981019081106115d657fe5b600091825260209091200154600a80546001600160a01b0390921691839081106115fc57fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600990915260409020805460ff19169055600a80548061164557fe5b600082815260209020810160001990810180546001600160a01b0319169055019055611674565b600101611588565b5050565b6011546001600160a01b031681565b6001600160a01b031660009081526007602052604090205460ff1690565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b6116d8611c22565b6000546001600160a01b03908116911614611728576040805162461bcd60e51b81526020600482018190526024820152600080516020612f5f833981519152604482015290519081900360640190fd5b60128054911515600160a81b0260ff60a81b19909216919091179055565b61174e611c22565b6000546001600160a01b0390811691161461179e576040805162461bcd60e51b81526020600482018190526024820152600080516020612f5f833981519152604482015290519081900360640190fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03821614156117fa5760405162461bcd60e51b8152600401808060200182810382526022815260200180612ff16022913960400191505060405180910390fd5b6001600160a01b03811660009081526007602052604090205460ff1615611868576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b6001600160a01b038116600090815260036020526040902054156118c2576001600160a01b0381166000908152600360205260409020546118a890610e66565b6001600160a01b0382166000908152600460205260409020555b6001600160a01b03166000818152600760205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b611930611c22565b6000546001600160a01b03908116911614611980576040805162461bcd60e51b81526020600482018190526024820152600080516020612f5f833981519152604482015290519081900360640190fd5b6001600160a01b0381166119c55760405162461bcd60e51b8152600401808060200182810382526026815260200180612e626026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b611a28611c22565b6000546001600160a01b03908116911614611a78576040805162461bcd60e51b81526020600482018190526024820152600080516020612f5f833981519152604482015290519081900360640190fd5b47611138816125b1565b60135490565b4790565b611a94611c22565b6000546001600160a01b03908116911614611ae4576040805162461bcd60e51b81526020600482018190526024820152600080516020612f5f833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526007602052604090205460ff16611b51576040805162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c75646564000000000000000000604482015290519081900360640190fd5b60005b60085481101561167457816001600160a01b031660088281548110611b7557fe5b6000918252602090912001546001600160a01b03161415611c1a57600880546000198101908110611ba257fe5b600091825260209091200154600880546001600160a01b039092169183908110611bc857fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600482526040808220829055600790925220805460ff19169055600880548061164557fe5b600101611b54565b3390565b6001600160a01b038316611c6b5760405162461bcd60e51b8152600401808060200182810382526024815260200180612fcd6024913960400191505060405180910390fd5b6001600160a01b038216611cb05760405162461bcd60e51b8152600401808060200182810382526022815260200180612e886022913960400191505060405180910390fd5b6001600160a01b03808416600081815260056020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316611d575760405162461bcd60e51b8152600401808060200182810382526025815260200180612fa86025913960400191505060405180910390fd5b6001600160a01b038216611d9c5760405162461bcd60e51b8152600401808060200182810382526023815260200180612e156023913960400191505060405180910390fd5b60008111611ddb5760405162461bcd60e51b8152600401808060200182810382526029815260200180612f7f6029913960400191505060405180910390fd5b6001600160a01b03831660009081526009602052604090205460ff1615611e3f576040805162461bcd60e51b8152602060048201526013602482015272165bdd48185c9948189b1858dadb1a5cdd1959606a1b604482015290519081900360640190fd5b3360009081526009602052604090205460ff1615611e9a576040805162461bcd60e51b8152602060048201526013602482015272165bdd48185c9948189b1858dadb1a5cdd1959606a1b604482015290519081900360640190fd5b3260009081526009602052604090205460ff1615611ef5576040805162461bcd60e51b8152602060048201526013602482015272165bdd48185c9948189b1858dadb1a5cdd1959606a1b604482015290519081900360640190fd5b611efd611333565b6001600160a01b0316836001600160a01b031614158015611f375750611f21611333565b6001600160a01b0316826001600160a01b031614155b15611f7d57601354811115611f7d5760405162461bcd60e51b8152600401808060200182810382526028815260200180612ecc6028913960400191505060405180910390fd5b611f85611333565b6001600160a01b0316836001600160a01b031614158015611fbf5750611fa9611333565b6001600160a01b0316826001600160a01b031614155b8015611ffd57507f00000000000000000000000060f44fb2a3ad4fabc2f41fae28638b261820bd726001600160a01b0316826001600160a01b031614155b801561201457506001600160a01b03821661dead14155b1561206b5760006120248361122f565b905060145482820111156120695760405162461bcd60e51b8152600401808060200182810382526022815260200180612eaa6022913960400191505060405180910390fd5b505b60006120763061122f565b9050601354811061208657506013545b60125469017b7883c0691660000082101590600160a01b900460ff161580156120b85750601254600160a81b900460ff165b80156120c15750805b80156120ff57507f00000000000000000000000060f44fb2a3ad4fabc2f41fae28638b261820bd726001600160a01b0316856001600160a01b031614155b1561211f5761210d8261237a565b47801561211d5761211d476125b1565b505b6001600160a01b03851660009081526006602052604090205460019060ff168061216157506001600160a01b03851660009081526006602052604090205460ff165b1561216a575060005b61217686868684612641565b505050505050565b6000818484111561220d5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156121d25781810151838201526020016121ba565b50505050905090810190601f1680156121ff5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008060006122226127b5565b90925090506122318282612238565b9250505090565b600061227a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612940565b9392505050565b60008282018381101561227a576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008060008060008060008060006122f88a600d54600e546129a5565b9250925092506000612308612215565b9050600080600061231b8e8787876129fa565b919e509c509a509598509396509194505050505091939550919395565b600061227a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061217e565b6012805460ff60a01b1916600160a01b179055604080516002808252606080830184529260208301908036833701905050905030816000815181106123bb57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561243457600080fd5b505afa158015612448573d6000803e3d6000fd5b505050506040513d602081101561245e57600080fd5b505181518290600190811061246f57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506124ba307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611c26565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663791ac9478360008430426040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561255f578181015183820152602001612547565b505050509050019650505050505050600060405180830381600087803b15801561258857600080fd5b505af115801561259c573d6000803e3d6000fd5b50506012805460ff60a01b1916905550505050565b6011546001600160a01b03166108fc6125cb836005612238565b6040518115909202916000818181858888f193505050501580156125f3573d6000803e3d6000fd5b506012546001600160a01b03166108fc612619600861261385600a612238565b90612a4a565b6040518115909202916000818181858888f19350505050158015611674573d6000803e3d6000fd5b8061264e5761264e612aa3565b6001600160a01b03841660009081526007602052604090205460ff16801561268f57506001600160a01b03831660009081526007602052604090205460ff16155b156126a45761269f848484612ad5565b6127a2565b6001600160a01b03841660009081526007602052604090205460ff161580156126e557506001600160a01b03831660009081526007602052604090205460ff165b156126f55761269f848484612bf9565b6001600160a01b03841660009081526007602052604090205460ff1615801561273757506001600160a01b03831660009081526007602052604090205460ff16155b156127475761269f848484612ca2565b6001600160a01b03841660009081526007602052604090205460ff16801561278757506001600160a01b03831660009081526007602052604090205460ff165b156127975761269f848484612ce6565b6127a2848484612ca2565b806127af576127af612d59565b50505050565b600b5460009081906b033b2e3c9fd0803ce8000000825b6008548110156128fa578260036000600884815481106127e857fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061284d575081600460006008848154811061282657fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561286e57600b546b033b2e3c9fd0803ce80000009450945050505061293c565b6128ae600360006008848154811061288257fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612338565b92506128f060046000600884815481106128c457fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612338565b91506001016127cc565b50600b54612914906b033b2e3c9fd0803ce8000000612238565b82101561293657600b546b033b2e3c9fd0803ce800000093509350505061293c565b90925090505b9091565b6000818361298f5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156121d25781810151838201526020016121ba565b50600083858161299b57fe5b0495945050505050565b60008080806129bf60646129b98989612a4a565b90612238565b905060006129d260646129b98a89612a4a565b905060006129ea826129e48b86612338565b90612338565b9992985090965090945050505050565b6000808080612a098886612a4a565b90506000612a178887612a4a565b90506000612a258888612a4a565b90506000612a37826129e48686612338565b939b939a50919850919650505050505050565b600082612a5957506000610a06565b82820282848281612a6657fe5b041461227a5760405162461bcd60e51b8152600401808060200182810382526021815260200180612ef46021913960400191505060405180910390fd5b600d54158015612ab35750600e54155b15612abd57612ad3565b600d8054600f55600e8054601055600091829055555b565b600080600080600080612ae7876122db565b6001600160a01b038f16600090815260046020526040902054959b50939950919750955093509150612b199088612338565b6001600160a01b038a16600090815260046020908152604080832093909355600390522054612b489087612338565b6001600160a01b03808b1660009081526003602052604080822093909355908a1681522054612b779086612281565b6001600160a01b038916600090815260036020526040902055612b9981612d67565b612ba38483612df0565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b600080600080600080612c0b876122db565b6001600160a01b038f16600090815260036020526040902054959b50939950919750955093509150612c3d9087612338565b6001600160a01b03808b16600090815260036020908152604080832094909455918b16815260049091522054612c739084612281565b6001600160a01b038916600090815260046020908152604080832093909355600390522054612b779086612281565b600080600080600080612cb4876122db565b6001600160a01b038f16600090815260036020526040902054959b50939950919750955093509150612b489087612338565b600080600080600080612cf8876122db565b6001600160a01b038f16600090815260046020526040902054959b50939950919750955093509150612d2a9088612338565b6001600160a01b038a16600090815260046020908152604080832093909355600390522054612c3d9087612338565b600f54600d55601054600e55565b6000612d71612215565b90506000612d7f8383612a4a565b30600090815260036020526040902054909150612d9c9082612281565b3060009081526003602090815260408083209390935560079052205460ff1615612deb5730600090815260046020526040902054612dda9084612281565b306000908152600460205260409020555b505050565b600b54612dfd9083612338565b600b55600c54612e0d9082612281565b600c55505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f2061646472657373526563697069656e742065786365656473206d61782077616c6c65742073697a652e5472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7757652063616e6e6f7420626c61636b6c69737420556e695377617020726f7574657245524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737357652063616e206e6f74206578636c75646520556e697377617020726f757465722e4578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220448a3b593393f393eb13bb696af19992e0ffeff4cbc982619b91cb5248e8c0db64736f6c634300060c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000037d09428fe7ed8e703b0c024b219be9cfd3bc10200000000000000000000000037d09428fe7ed8e703b0c024b219be9cfd3bc102
-----Decoded View---------------
Arg [0] : devWalletAddress (address): 0x37d09428fe7ED8E703B0C024b219BE9cfD3BC102
Arg [1] : marketingWalletAddress (address): 0x37d09428fe7ED8E703B0C024b219BE9cfD3BC102
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000037d09428fe7ed8e703b0c024b219be9cfd3bc102
Arg [1] : 00000000000000000000000037d09428fe7ed8e703b0c024b219be9cfd3bc102
Deployed Bytecode Sourcemap
26958:20752:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29894:91;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30898:173;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;30898:173:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;47114:141;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;47114:141:0;-1:-1:-1;;;;;47114:141:0;;:::i;:::-;;32246:95;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;28213:51;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;28213:51:0;;;;;;;;;;;;;;30207:103;;;;;;;;;;;;;:::i;47444:120::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;47444:120:0;;:::i;33535:368::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33535:368:0;-1:-1:-1;;;;;33535:368:0;;:::i;47267:165::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;47267:165:0;-1:-1:-1;;;;;47267:165:0;;:::i;31083:329::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;31083:329:0;;;;;;;;;;;;;;;;;:::i;46914:188::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;46914:188:0;;:::i;33254:269::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33254:269:0;;:::i;46268:92::-;;;;;;;;;;;;;:::i;30104:91::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;31424:230;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;31424:230:0;;;;;;;;:::i;32353:405::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32353:405:0;;:::i;28152:46::-;;;;;;;;;;;;;:::i;32770:472::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32770:472:0;;;;;;;;;:::i;28275:38::-;;;;;;;;;;;;;:::i;39770:168::-;;;;;;;;;;;;;:::i;35874:131::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;35874:131:0;-1:-1:-1;;;;;35874:131:0;;:::i;46721:181::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;46721:181:0;;:::i;18148:98::-;;;;;;;;;;;;;:::i;28356:30::-;;;;;;;;;;;;;:::i;30322:210::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30322:210:0;-1:-1:-1;;;;;30322:210:0;;:::i;17544:160::-;;;;;;;;;;;;;:::i;16842:87::-;;;;;;;;;;;;;:::i;29997:95::-;;;;;;;;;;;;;:::i;47576:127::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;47576:127:0;;:::i;31666:281::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;31666:281:0;;;;;;;;:::i;46372:93::-;;;;;;;;;;;;;:::i;30544:179::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;30544:179:0;;;;;;;;:::i;32089:145::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;32089:145:0;;;;;;;;;;:::i;33915:541::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33915:541:0;-1:-1:-1;;;;;33915:541:0;;:::i;28101:40::-;;;;;;;;;;;;;:::i;31959:118::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31959:118:0;-1:-1:-1;;;;;31959:118:0;;:::i;30735:151::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;30735:151:0;;;;;;;;;;:::i;40130:106::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;40130:106:0;;;;:::i;34468:475::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34468:475:0;-1:-1:-1;;;;;34468:475:0;;:::i;17876:260::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17876:260:0;-1:-1:-1;;;;;17876:260:0;;:::i;39950:168::-;;;;;;;;;;;;;:::i;46477:102::-;;;;;;;;;;;;;:::i;46591:118::-;;;;;;;;;;;;;:::i;34955:518::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34955:518:0;-1:-1:-1;;;;;34955:518:0;;:::i;29894:91::-;29968:5;;;;;;;;;;;;-1:-1:-1;;;29968:5:0;;;;29894:91;:::o;30898:173::-;30973:4;30994:39;31003:12;:10;:12::i;:::-;31017:7;31026:6;30994:8;:39::i;:::-;-1:-1:-1;31055:4:0;30898:173;;;;;:::o;47114:141::-;17090:12;:10;:12::i;:::-;17080:6;;-1:-1:-1;;;;;17080:6:0;;;:22;;;17072:67;;;;;-1:-1:-1;;;17072:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17072:67:0;;;;;;;;;;;;;;;47207:17:::1;:36:::0;;-1:-1:-1;;;;;;47207:36:0::1;-1:-1:-1::0;;;;;47207:36:0;;;::::1;::::0;;;::::1;::::0;;47114:141::o;32246:95::-;32319:10;;32246:95;:::o;28213:51::-;;;:::o;30207:103::-;27632:19;30207:103;:::o;47444:120::-;17090:12;:10;:12::i;:::-;17080:6;;-1:-1:-1;;;;;17080:6:0;;;:22;;;17072:67;;;;;-1:-1:-1;;;17072:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17072:67:0;;;;;;;;;;;;;;;47526:12:::1;:26:::0;47444:120::o;33535:368::-;17090:12;:10;:12::i;:::-;17080:6;;-1:-1:-1;;;;;17080:6:0;;;:22;;;17072:67;;;;;-1:-1:-1;;;17072:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17072:67:0;;;;;;;;;;;;;;;33634:42:::1;-1:-1:-1::0;;;;;33623:53:0;::::1;;;33615:100;;;;-1:-1:-1::0;;;33615:100:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;33739:26:0;::::1;;::::0;;;:17:::1;:26;::::0;;;;;::::1;;33738:27;33729:71;;;::::0;;-1:-1:-1;;;33729:71:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;33814:26:0::1;;::::0;;;:17:::1;:26;::::0;;;;:33;;-1:-1:-1;;33814:33:0::1;33843:4;33814:33:::0;;::::1;::::0;;;33861:16:::1;:30:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;33861:30:0::1;::::0;;::::1;::::0;;33535:368::o;47267:165::-;17090:12;:10;:12::i;:::-;17080:6;;-1:-1:-1;;;;;17080:6:0;;;:22;;;17072:67;;;;;-1:-1:-1;;;17072:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17072:67:0;;;;;;;;;;;;;;;47372:23:::1;:48:::0;;-1:-1:-1;;;;;;47372:48:0::1;-1:-1:-1::0;;;;;47372:48:0;;;::::1;::::0;;;::::1;::::0;;47267:165::o;31083:329::-;31181:4;31202:36;31212:6;31220:9;31231:6;31202:9;:36::i;:::-;31253:121;31262:6;31270:12;:10;:12::i;:::-;31284:89;31322:6;31284:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;31284:19:0;;;;;;:11;:19;;;;;;31304:12;:10;:12::i;:::-;-1:-1:-1;;;;;31284:33:0;;;;;;;;;;;;-1:-1:-1;31284:33:0;;;:89;:37;:89::i;:::-;31253:8;:121::i;:::-;-1:-1:-1;31396:4:0;31083:329;;;;;:::o;46914:188::-;17090:12;:10;:12::i;:::-;17080:6;;-1:-1:-1;;;;;17080:6:0;;;:22;;;17072:67;;;;;-1:-1:-1;;;17072:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17072:67:0;;;;;;;;;;;;;;;47007:1:::1;46996:7;:12;;:29;;;;;47023:2;47012:7;:13;;46996:29;46988:69;;;::::0;;-1:-1:-1;;;46988:69:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;47072:8;:18:::0;46914:188::o;33254:269::-;33320:7;33363;;33352;:18;;33344:73;;;;-1:-1:-1;;;33344:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33432:19;33455:10;:8;:10::i;:::-;33432:33;-1:-1:-1;33487:24:0;:7;33432:33;33487:11;:24::i;:::-;33480:31;;;33254:269;;;;:::o;46268:92::-;46341:7;;46268:92;:::o;30104:91::-;27900:2;30104:91;:::o;31424:230::-;31512:4;31533:83;31542:12;:10;:12::i;:::-;31556:7;31565:50;31604:10;31565:11;:25;31577:12;:10;:12::i;:::-;-1:-1:-1;;;;;31565:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;31565:25:0;;;:34;;;;;;;;;;;:38;:50::i;32353:405::-;32409:14;32426:12;:10;:12::i;:::-;-1:-1:-1;;;;;32462:19:0;;;;;;:11;:19;;;;;;32409:29;;-1:-1:-1;32462:19:0;;32461:20;32453:77;;;;-1:-1:-1;;;32453:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32546:15;32570:19;32581:7;32570:10;:19::i;:::-;-1:-1:-1;;;;;;;;;32622:15:0;;;;;;:7;:15;;;;;;32545:44;;-1:-1:-1;32622:28:0;;:15;-1:-1:-1;32545:44:0;32622:19;:28::i;:::-;-1:-1:-1;;;;;32604:15:0;;;;;;:7;:15;;;;;:46;32675:7;;:20;;32687:7;32675:11;:20::i;:::-;32665:7;:30;32723:10;;:23;;32738:7;32723:14;:23::i;:::-;32710:10;:36;-1:-1:-1;;;32353:405:0:o;28152:46::-;;;-1:-1:-1;;;;;28152:46:0;;:::o;32770:472::-;32860:7;27632:19;32892:7;:18;;32884:62;;;;;-1:-1:-1;;;32884:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;32966:17;32961:270;;33005:15;33029:19;33040:7;33029:10;:19::i;:::-;-1:-1:-1;33004:44:0;;-1:-1:-1;33067:14:0;;-1:-1:-1;;;;;33067:14:0;32961:270;33124:23;33155:19;33166:7;33155:10;:19::i;:::-;-1:-1:-1;33122:52:0;;-1:-1:-1;33193:22:0;;-1:-1:-1;;;;;33193:22:0;28275:38;;;:::o;39770:168::-;17090:12;:10;:12::i;:::-;17080:6;;-1:-1:-1;;;;;17080:6:0;;;:22;;;17072:67;;;;;-1:-1:-1;;;17072:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17072:67:0;;;;;;;;;;;;;;;39828:23:::1;39854:24;39872:4;39854:9;:24::i;:::-;39828:50;;39893:33;39910:15;39893:16;:33::i;:::-;17154:1;39770:168::o:0;35874:131::-;-1:-1:-1;;;;;35966:27:0;35938:4;35966:27;;;:18;:27;;;;;;;;;35874:131::o;46721:181::-;17090:12;:10;:12::i;:::-;17080:6;;-1:-1:-1;;;;;17080:6:0;;;:22;;;17072:67;;;;;-1:-1:-1;;;17072:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17072:67:0;;;;;;;;;;;;;;;46811:1:::1;46801:6;:11;;:27;;;;;46826:2;46816:6;:12;;46801:27;46793:66;;;::::0;;-1:-1:-1;;;46793:66:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;46874:7;:16:::0;46721:181::o;18148:98::-;18225:9;;18148:98;:::o;28356:30::-;;;-1:-1:-1;;;28356:30:0;;;;;:::o;30322:210::-;-1:-1:-1;;;;;30416:20:0;;30388:7;30416:20;;;:11;:20;;;;;;;;30412:49;;;-1:-1:-1;;;;;;30445:16:0;;;;;;:7;:16;;;;;;30438:23;;30412:49;-1:-1:-1;;;;;30503:16:0;;;;;;:7;:16;;;;;;30483:37;;:19;:37::i;17544:160::-;17090:12;:10;:12::i;:::-;17080:6;;-1:-1:-1;;;;;17080:6:0;;;:22;;;17072:67;;;;;-1:-1:-1;;;17072:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17072:67:0;;;;;;;;;;;;;;;17655:1:::1;17639:6:::0;;17618:40:::1;::::0;-1:-1:-1;;;;;17639:6:0;;::::1;::::0;17618:40:::1;::::0;17655:1;;17618:40:::1;17690:1;17673:19:::0;;-1:-1:-1;;;;;;17673:19:0::1;::::0;;17544:160::o;16842:87::-;16880:7;16911:6;-1:-1:-1;;;;;16911:6:0;16842:87;:::o;29997:95::-;30073:7;;;;;;;;;;;;-1:-1:-1;;;30073:7:0;;;;29997:95;:::o;47576:127::-;17090:12;:10;:12::i;:::-;17080:6;;-1:-1:-1;;;;;17080:6:0;;;:22;;;17072:67;;;;;-1:-1:-1;;;17072:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17072:67:0;;;;;;;;;;;;;;;47661:14:::1;:30:::0;47576:127::o;31666:281::-;31759:4;31780:129;31789:12;:10;:12::i;:::-;31803:7;31812:96;31851:15;31812:96;;;;;;;;;;;;;;;;;:11;:25;31824:12;:10;:12::i;:::-;-1:-1:-1;;;;;31812:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;31812:25:0;;;:34;;;;;;;;;;;:96;:38;:96::i;46372:93::-;46445:8;;46372:93;:::o;30544:179::-;30622:4;30643:42;30653:12;:10;:12::i;:::-;30667:9;30678:6;30643:9;:42::i;32089:145::-;17090:12;:10;:12::i;:::-;17080:6;;-1:-1:-1;;;;;17080:6:0;;;:22;;;17072:67;;;;;-1:-1:-1;;;17072:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17072:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;32184:27:0;;;::::1;;::::0;;;:18:::1;:27;::::0;;;;:38;;-1:-1:-1;;32184:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;32089:145::o;33915:541::-;17090:12;:10;:12::i;:::-;17080:6;;-1:-1:-1;;;;;17080:6:0;;;:22;;;17072:67;;;;;-1:-1:-1;;;17072:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17072:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;34007:26:0;::::1;;::::0;;;:17:::1;:26;::::0;;;;;::::1;;33998:66;;;::::0;;-1:-1:-1;;;33998:66:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;34082:9;34077:369;34101:16;:23:::0;34097:27;::::1;34077:369;;;34178:7;-1:-1:-1::0;;;;;34155:30:0::1;:16;34172:1;34155:19;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;34155:19:0::1;:30;34151:281;;;34233:16;34250:23:::0;;-1:-1:-1;;34250:27:0;;;34233:45;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;34211:16:::1;:19:::0;;-1:-1:-1;;;;;34233:45:0;;::::1;::::0;34228:1;;34211:19;::::1;;;;;;::::0;;;::::1;::::0;;;;;;::::1;:67:::0;;-1:-1:-1;;;;;;34211:67:0::1;-1:-1:-1::0;;;;;34211:67:0;;::::1;;::::0;;34302:26;;::::1;::::0;;:17:::1;:26:::0;;;;;;:34;;-1:-1:-1;;34302:34:0::1;::::0;;34360:16:::1;:22:::0;;;::::1;;;;;::::0;;;::::1;::::0;;;;-1:-1:-1;;34360:22:0;;;;;-1:-1:-1;;;;;;34360:22:0::1;::::0;;;;;34406:5:::1;;34151:281;34126:3;;34077:369;;;;33915:541:::0;:::o;28101:40::-;;;-1:-1:-1;;;;;28101:40:0;;:::o;31959:118::-;-1:-1:-1;;;;;32045:20:0;32017:4;32045:20;;;:11;:20;;;;;;;;;31959:118::o;30735:151::-;-1:-1:-1;;;;;30847:18:0;;;30816:7;30847:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;30735:151::o;40130:106::-;17090:12;:10;:12::i;:::-;17080:6;;-1:-1:-1;;;;;17080:6:0;;;:22;;;17072:67;;;;;-1:-1:-1;;;17072:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17072:67:0;;;;;;;;;;;;;;;40203:11:::1;:21:::0;;;::::1;;-1:-1:-1::0;;;40203:21:0::1;-1:-1:-1::0;;;;40203:21:0;;::::1;::::0;;;::::1;::::0;;40130:106::o;34468:475::-;17090:12;:10;:12::i;:::-;17080:6;;-1:-1:-1;;;;;17080:6:0;;;:22;;;17072:67;;;;;-1:-1:-1;;;17072:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17072:67:0;;;;;;;;;;;;;;;34564:42:::1;-1:-1:-1::0;;;;;34553:53:0;::::1;;;34545:100;;;;-1:-1:-1::0;;;34545:100:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;34669:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;34668:21;34660:61;;;::::0;;-1:-1:-1;;;34660:61:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;34739:16:0;::::1;34758:1;34739:16:::0;;;:7:::1;:16;::::0;;;;;:20;34736:116:::1;;-1:-1:-1::0;;;;;34819:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;34799:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;34780:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;34736:116:::1;-1:-1:-1::0;;;;;34866:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;34866:27:0::1;34889:4;34866:27:::0;;::::1;::::0;;;34908:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;34908:23:0::1;::::0;;::::1;::::0;;34468:475::o;17876:260::-;17090:12;:10;:12::i;:::-;17080:6;;-1:-1:-1;;;;;17080:6:0;;;:22;;;17072:67;;;;;-1:-1:-1;;;17072:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17072:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;17969:22:0;::::1;17961:73;;;;-1:-1:-1::0;;;17961:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18075:6;::::0;;18054:38:::1;::::0;-1:-1:-1;;;;;18054:38:0;;::::1;::::0;18075:6;::::1;::::0;18054:38:::1;::::0;::::1;18107:6;:17:::0;;-1:-1:-1;;;;;;18107:17:0::1;-1:-1:-1::0;;;;;18107:17:0;;;::::1;::::0;;;::::1;::::0;;17876:260::o;39950:168::-;17090:12;:10;:12::i;:::-;17080:6;;-1:-1:-1;;;;;17080:6:0;;;:22;;;17072:67;;;;;-1:-1:-1;;;17072:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17072:67:0;;;;;;;;;;;;;;;40037:21:::1;40073:33;40037:21:::0;40073:13:::1;:33::i;46477:102::-:0;46555:12;;46477:102;:::o;46591:118::-;46676:21;46591:118;:::o;34955:518::-;17090:12;:10;:12::i;:::-;17080:6;;-1:-1:-1;;;;;17080:6:0;;;:22;;;17072:67;;;;;-1:-1:-1;;;17072:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;17072:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;35040:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;35032:56;;;::::0;;-1:-1:-1;;;35032:56:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;35108:9;35103:359;35127:9;:16:::0;35123:20;::::1;35103:359;;;35189:7;-1:-1:-1::0;;;;;35173:23:0::1;:9;35183:1;35173:12;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;35173:12:0::1;:23;35169:278;;;35236:9;35246:16:::0;;-1:-1:-1;;35246:20:0;;;35236:31;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;35221:9:::1;:12:::0;;-1:-1:-1;;;;;35236:31:0;;::::1;::::0;35231:1;;35221:12;::::1;;;;;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;35221:46:0::1;-1:-1:-1::0;;;;;35221:46:0;;::::1;;::::0;;35290:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;35333:11:::1;:20:::0;;;;:28;;-1:-1:-1;;35333:28:0::1;::::0;;35384:9:::1;:15:::0;;;::::1;;;35169:278;35145:3;;35103:359;;1299:114:::0;1391:10;1299:114;:::o;36017:357::-;-1:-1:-1;;;;;36114:19:0;;36106:68;;;;-1:-1:-1;;;36106:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;36197:21:0;;36189:68;;;;-1:-1:-1;;;36189:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;36274:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;36330:32;;;;;;;;;;;;;;;;;36017:357;;;:::o;36386:2507::-;-1:-1:-1;;;;;36487:20:0;;36479:70;;;;-1:-1:-1;;;36479:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;36572:23:0;;36564:71;;;;-1:-1:-1;;;36564:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36667:1;36658:6;:10;36650:64;;;;-1:-1:-1;;;36650:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;36738:25:0;;;;;;:17;:25;;;;;;;;36737:26;36729:58;;;;;-1:-1:-1;;;36729:58:0;;;;;;;;;;;;-1:-1:-1;;;36729:58:0;;;;;;;;;;;;;;;36829:10;36811:29;;;;:17;:29;;;;;;;;36810:30;36802:62;;;;;-1:-1:-1;;;36802:62:0;;;;;;;;;;;;-1:-1:-1;;;36802:62:0;;;;;;;;;;;;;;;36906:9;36888:28;;;;:17;:28;;;;;;;;36887:29;36879:61;;;;;-1:-1:-1;;;36879:61:0;;;;;;;;;;;;-1:-1:-1;;;36879:61:0;;;;;;;;;;;;;;;36968:7;:5;:7::i;:::-;-1:-1:-1;;;;;36958:17:0;:6;-1:-1:-1;;;;;36958:17:0;;;:41;;;;;36992:7;:5;:7::i;:::-;-1:-1:-1;;;;;36979:20:0;:9;-1:-1:-1;;;;;36979:20:0;;;36958:41;36955:156;;;37038:12;;37028:6;:22;;37020:75;;;;-1:-1:-1;;;37020:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37138:7;:5;:7::i;:::-;-1:-1:-1;;;;;37128:17:0;:6;-1:-1:-1;;;;;37128:17:0;;;:41;;;;;37162:7;:5;:7::i;:::-;-1:-1:-1;;;;;37149:20:0;:9;-1:-1:-1;;;;;37149:20:0;;;37128:41;:71;;;;;37186:13;-1:-1:-1;;;;;37173:26:0;:9;-1:-1:-1;;;;;37173:26:0;;;37128:71;:103;;;;-1:-1:-1;;;;;;37203:28:0;;37224:6;37203:28;;37128:103;37125:309;;;37252:29;37284:20;37294:9;37284;:20::i;:::-;37252:52;;37365:14;;37355:6;37331:21;:30;:48;;37323:95;;;;-1:-1:-1;;;37323:95:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37125:309;;37714:28;37745:24;37763:4;37745:9;:24::i;:::-;37714:55;;37813:12;;37789:20;:36;37786:124;;-1:-1:-1;37882:12:0;;37786:124;38026:6;;28515:13;37953:53;;;;-1:-1:-1;;;38026:6:0;;;;38025:7;:22;;;;-1:-1:-1;38036:11:0;;-1:-1:-1;;;38036:11:0;;;;38025:22;:45;;;;;38051:19;38025:45;:72;;;;;38084:13;-1:-1:-1;;;;;38074:23:0;:6;-1:-1:-1;;;;;38074:23:0;;;38025:72;38021:417;;;38189:38;38206:20;38189:16;:38::i;:::-;38277:21;38320:22;;38317:106;;38367:36;38381:21;38367:13;:36::i;:::-;38021:417;;-1:-1:-1;;;;;38646:26:0;;38519:12;38646:26;;;:18;:26;;;;;;38534:4;;38646:26;;;:59;;-1:-1:-1;;;;;;38676:29:0;;;;;;:18;:29;;;;;;;;38646:59;38643:113;;;-1:-1:-1;38735:5:0;38643:113;38834:47;38849:6;38856:9;38866:6;38873:7;38834:14;:47::i;:::-;36386:2507;;;;;;:::o;5826:208::-;5912:7;5952:12;5944:6;;;;5936:29;;;;-1:-1:-1;;;5936:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5992:5:0;;;5826:208::o;45474:175::-;45515:7;45540:15;45557;45576:19;:17;:19::i;:::-;45539:56;;-1:-1:-1;45539:56:0;-1:-1:-1;45617:20:0;45539:56;;45617:11;:20::i;:::-;45610:27;;;;45474:175;:::o;7356:140::-;7414:7;7445:39;7449:1;7452;7445:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;7438:46;7356:140;-1:-1:-1;;;7356:140:0:o;4829:197::-;4887:7;4923:5;;;4951:6;;;;4943:46;;;;;-1:-1:-1;;;4943:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;44167:467;44226:7;44235;44244;44253;44262;44271;44292:23;44317:12;44331:13;44348:39;44360:7;44369;;44378:8;;44348:11;:39::i;:::-;44291:96;;;;;;44398:19;44420:10;:8;:10::i;:::-;44398:32;;44442:15;44459:23;44484:12;44500:46;44512:7;44521:4;44527:5;44534:11;44500;:46::i;:::-;44441:105;;-1:-1:-1;44441:105:0;-1:-1:-1;44441:105:0;-1:-1:-1;44597:15:0;;-1:-1:-1;44614:4:0;;-1:-1:-1;44620:5:0;;-1:-1:-1;;;;;44167:467:0;;;;;;;:::o;5344:144::-;5402:7;5433:43;5437:1;5440;5433:43;;;;;;;;;;;;;;;;;:3;:43::i;38905:656::-;28879:6;:13;;-1:-1:-1;;;;28879:13:0;-1:-1:-1;;;28879:13:0;;;39074:16:::1;::::0;;39088:1:::1;39074:16:::0;;;39050:21:::1;39074:16:::0;;::::1;::::0;;39050:21;39074:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;39074:16:0::1;39050:40;;39123:4;39105;39110:1;39105:7;;;;;;;;;;;;;:23;-1:-1:-1::0;;;;;39105:23:0::1;;;-1:-1:-1::0;;;;;39105:23:0::1;;;::::0;::::1;39153:15;-1:-1:-1::0;;;;;39153:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;39153:22:0;39143:7;;:4;;39148:1:::1;::::0;39143:7;::::1;;;;;;;;;;:32;-1:-1:-1::0;;;;;39143:32:0::1;;;-1:-1:-1::0;;;;;39143:32:0::1;;;::::0;::::1;39192:62;39209:4;39224:15;39242:11;39192:8;:62::i;:::-;39301:15;-1:-1:-1::0;;;;;39301:66:0::1;;39386:11;39416:1;39464:4;39495;39519:15;39301:248;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;39301:248:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;28923:6:0;:14;;-1:-1:-1;;;;28923:14:0;;;-1:-1:-1;;;;38905:656:0:o;39573:185::-;39635:17;;-1:-1:-1;;;;;39635:17:0;:41;39662:13;:6;39673:1;39662:10;:13::i;:::-;39635:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;39691:23:0;;-1:-1:-1;;;;;39691:23:0;:55;39724:21;39743:1;39724:14;:6;39735:2;39724:10;:14::i;:::-;:18;;:21::i;:::-;39691:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40248:883;40364:7;40360:44;;40390:14;:12;:14::i;:::-;-1:-1:-1;;;;;40425:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;40449:22:0;;;;;;:11;:22;;;;;;;;40448:23;40425:46;40421:637;;;40492:48;40514:6;40522:9;40533:6;40492:21;:48::i;:::-;40421:637;;;-1:-1:-1;;;;;40567:19:0;;;;;;:11;:19;;;;;;;;40566:20;:46;;;;-1:-1:-1;;;;;;40590:22:0;;;;;;:11;:22;;;;;;;;40566:46;40562:496;;;40633:46;40653:6;40661:9;40672:6;40633:19;:46::i;40562:496::-;-1:-1:-1;;;;;40706:19:0;;;;;;:11;:19;;;;;;;;40705:20;:47;;;;-1:-1:-1;;;;;;40730:22:0;;;;;;:11;:22;;;;;;;;40729:23;40705:47;40701:357;;;40773:44;40791:6;40799:9;40810:6;40773:17;:44::i;40701:357::-;-1:-1:-1;;;;;40843:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;40866:22:0;;;;;;:11;:22;;;;;;;;40843:45;40839:219;;;40909:48;40931:6;40939:9;40950:6;40909:21;:48::i;40839:219::-;40998:44;41016:6;41024:9;41035:6;40998:17;:44::i;:::-;41078:7;41074:45;;41104:15;:13;:15::i;:::-;40248:883;;;;:::o;45661:595::-;45762:7;;45711;;;;27632:19;45711:7;45824:305;45848:9;:16;45844:20;;45824:305;;;45918:7;45894;:21;45902:9;45912:1;45902:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;45902:12:0;45894:21;;;;;;;;;;;;;:31;;:66;;;45953:7;45929;:21;45937:9;45947:1;45937:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;45937:12:0;45929:21;;;;;;;;;;;;;:31;45894:66;45890:97;;;45970:7;;27632:19;45962:25;;;;;;;;;45890:97;46016:34;46028:7;:21;46036:9;46046:1;46036:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;46036:12:0;46028:21;;;;;;;;;;;;;46016:7;;:11;:34::i;:::-;46006:44;;46079:34;46091:7;:21;46099:9;46109:1;46099:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;46099:12:0;46091:21;;;;;;;;;;;;;46079:7;;:11;:34::i;:::-;46069:44;-1:-1:-1;45866:3:0;;45824:305;;;-1:-1:-1;46157:7:0;;:20;;27632:19;46157:11;:20::i;:::-;46147:7;:30;46143:61;;;46187:7;;27632:19;46179:25;;;;;;;;46143:61;46227:7;;-1:-1:-1;46236:7:0;-1:-1:-1;45661:595:0;;;:::o;8033:298::-;8119:7;8158:12;8151:5;8143:28;;;;-1:-1:-1;;;8143:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8186:9;8202:1;8198;:5;;;;;;;8033:298;-1:-1:-1;;;;;8033:298:0:o;44646:371::-;44739:7;;;;44796:28;44820:3;44796:19;:7;44808:6;44796:11;:19::i;:::-;:23;;:28::i;:::-;44781:43;-1:-1:-1;44839:13:0;44855:29;44880:3;44855:20;:7;44867;44855:11;:20::i;:29::-;44839:45;-1:-1:-1;44899:23:0;44925:28;44839:45;44925:17;:7;44937:4;44925:11;:17::i;:::-;:21;;:28::i;:::-;44899:54;44993:4;;-1:-1:-1;44999:5:0;;-1:-1:-1;44646:371:0;;-1:-1:-1;;;;;44646:371:0:o;45029:433::-;45139:7;;;;45199:24;:7;45211:11;45199;:24::i;:::-;45181:42;-1:-1:-1;45238:12:0;45253:21;:4;45262:11;45253:8;:21::i;:::-;45238:36;-1:-1:-1;45289:13:0;45305:22;:5;45315:11;45305:9;:22::i;:::-;45289:38;-1:-1:-1;45342:23:0;45368:28;45289:38;45368:17;:7;45380:4;45368:11;:17::i;:28::-;45419:7;;;;-1:-1:-1;45445:4:0;;-1:-1:-1;45029:433:0;;-1:-1:-1;;;;;;;45029:433:0:o;6328:511::-;6386:7;6647:6;6643:55;;-1:-1:-1;6681:1:0;6674:8;;6643:55;6726:5;;;6730:1;6726;:5;:1;6754:5;;;;;:10;6746:56;;;;-1:-1:-1;;;6746:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35485:238;35535:7;;:12;:29;;;;-1:-1:-1;35551:8:0;;:13;35535:29;35532:41;;;35566:7;;35532:41;35607:7;;;35589:15;:25;35648:8;;;35629:16;:27;-1:-1:-1;35673:11:0;;;;35699:12;35485:238;:::o;42274:580::-;42381:15;42398:23;42423:12;42437:23;42462:12;42476:13;42493:19;42504:7;42493:10;:19::i;:::-;-1:-1:-1;;;;;42545:15:0;;;;;;:7;:15;;;;;;42380:132;;-1:-1:-1;42380:132:0;;-1:-1:-1;42380:132:0;;-1:-1:-1;42380:132:0;-1:-1:-1;42380:132:0;-1:-1:-1;42380:132:0;-1:-1:-1;42545:28:0;;42565:7;42545:19;:28::i;:::-;-1:-1:-1;;;;;42527:15:0;;;;;;:7;:15;;;;;;;;:46;;;;42606:7;:15;;;;:28;;42626:7;42606:19;:28::i;:::-;-1:-1:-1;;;;;42588:15:0;;;;;;;:7;:15;;;;;;:46;;;;42670:18;;;;;;;:39;;42693:15;42670:22;:39::i;:::-;-1:-1:-1;;;;;42649:18:0;;;;;;:7;:18;;;;;:60;42724:16;42734:5;42724:9;:16::i;:::-;42755:23;42767:4;42773;42755:11;:23::i;:::-;42815:9;-1:-1:-1;;;;;42798:44:0;42807:6;-1:-1:-1;;;;;42798:44:0;;42826:15;42798:44;;;;;;;;;;;;;;;;;;42274:580;;;;;;;;;:::o;41670:592::-;41775:15;41792:23;41817:12;41831:23;41856:12;41870:13;41887:19;41898:7;41887:10;:19::i;:::-;-1:-1:-1;;;;;41939:15:0;;;;;;:7;:15;;;;;;41774:132;;-1:-1:-1;41774:132:0;;-1:-1:-1;41774:132:0;;-1:-1:-1;41774:132:0;-1:-1:-1;41774:132:0;-1:-1:-1;41774:132:0;-1:-1:-1;41939:28:0;;41774:132;41939:19;:28::i;:::-;-1:-1:-1;;;;;41921:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;42003:18;;;;;:7;:18;;;;;:39;;42026:15;42003:22;:39::i;:::-;-1:-1:-1;;;;;41982:18:0;;;;;;:7;:18;;;;;;;;:60;;;;42078:7;:18;;;;:39;;42101:15;42078:22;:39::i;41143:515::-;41246:15;41263:23;41288:12;41302:23;41327:12;41341:13;41358:19;41369:7;41358:10;:19::i;:::-;-1:-1:-1;;;;;41410:15:0;;;;;;:7;:15;;;;;;41245:132;;-1:-1:-1;41245:132:0;;-1:-1:-1;41245:132:0;;-1:-1:-1;41245:132:0;-1:-1:-1;41245:132:0;-1:-1:-1;41245:132:0;-1:-1:-1;41410:28:0;;41245:132;41410:19;:28::i;42866:655::-;42973:15;42990:23;43015:12;43029:23;43054:12;43068:13;43085:19;43096:7;43085:10;:19::i;:::-;-1:-1:-1;;;;;43137:15:0;;;;;;:7;:15;;;;;;42972:132;;-1:-1:-1;42972:132:0;;-1:-1:-1;42972:132:0;;-1:-1:-1;42972:132:0;-1:-1:-1;42972:132:0;-1:-1:-1;42972:132:0;-1:-1:-1;43137:28:0;;43157:7;43137:19;:28::i;:::-;-1:-1:-1;;;;;43119:15:0;;;;;;:7;:15;;;;;;;;:46;;;;43198:7;:15;;;;:28;;43218:7;43198:19;:28::i;35735:127::-;35793:15;;35783:7;:25;35834:16;;35823:8;:27;35735:127::o;43533:349::-;43590:19;43613:10;:8;:10::i;:::-;43590:33;-1:-1:-1;43638:13:0;43654:22;:5;43590:33;43654:9;:22::i;:::-;43732:4;43716:22;;;;:7;:22;;;;;;43638:38;;-1:-1:-1;43716:33:0;;43638:38;43716:26;:33::i;:::-;43707:4;43691:22;;;;:7;:22;;;;;;;;:58;;;;43767:11;:26;;;;;;43764:106;;;43853:4;43837:22;;;;:7;:22;;;;;;:33;;43864:5;43837:26;:33::i;:::-;43828:4;43812:22;;;;:7;:22;;;;;:58;43764:106;43533:349;;;:::o;43894:159::-;43976:7;;:17;;43988:4;43976:11;:17::i;:::-;43966:7;:27;44021:10;;:20;;44036:4;44021:14;:20::i;:::-;44008:10;:33;-1:-1:-1;;43894:159:0:o
Swarm Source
ipfs://448a3b593393f393eb13bb696af19992e0ffeff4cbc982619b91cb5248e8c0db
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.