Source Code
Overview
ETH Balance
0 ETH
More Info
ContractCreator
TokenTracker
Multichain Info
N/A
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
4407640 | 474 days ago | 0.0001 ETH |
Loading...
Loading
Contract Name:
Classic
Compiler Version
v0.8.18+commit.87f61d96
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-10-02 */ // File: @uniswap/v2-core/contracts/interfaces/IUniswapV2Factory.sol pragma solidity >=0.5.0; interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } // File: @uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router01.sol pragma solidity >=0.6.2; interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } // File: @uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.sol pragma solidity >=0.6.2; 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; } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: @openzeppelin/contracts/token/ERC20/IERC20.sol // OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address from, address to, uint256 amount) external returns (bool); } // File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol // OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol) pragma solidity ^0.8.0; /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } // File: @openzeppelin/contracts/token/ERC20/ERC20.sol // OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/ERC20.sol) pragma solidity ^0.8.0; /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * For a generic mechanism see {ERC20PresetMinterPauser}. * * TIP: For a detailed writeup see our guide * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * The default value of {decimals} is 18. To change this, you should override * this function so it returns a different value. * * We have followed general OpenZeppelin Contracts guidelines: functions revert * instead returning `false` on failure. This behavior is nonetheless * conventional and does not conflict with the expectations of ERC20 * applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5.05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the default value returned by this function, unless * it's overridden. * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `to` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address to, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on * `transferFrom`. This is semantically equivalent to an infinite approval. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _approve(owner, spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * NOTE: Does not update the allowance if the current allowance * is the maximum `uint256`. * * Requirements: * * - `from` and `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. * - the caller must have allowance for ``from``'s tokens of at least * `amount`. */ function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, allowance(owner, spender) + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { address owner = _msgSender(); uint256 currentAllowance = allowance(owner, spender); require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `amount` of tokens from `from` to `to`. * * This internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. */ function _transfer(address from, address to, uint256 amount) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(from, to, amount); uint256 fromBalance = _balances[from]; require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[from] = fromBalance - amount; // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by // decrementing then incrementing. _balances[to] += amount; } emit Transfer(from, to, amount); _afterTokenTransfer(from, to, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; unchecked { // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above. _balances[account] += amount; } emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; // Overflow not possible: amount <= accountBalance <= totalSupply. _totalSupply -= amount; } emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve(address owner, address spender, uint256 amount) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Updates `owner` s allowance for `spender` based on spent `amount`. * * Does not update the allowance amount in case of infinite allowance. * Revert if not enough allowance is available. * * Might emit an {Approval} event. */ function _spendAllowance(address owner, address spender, uint256 amount) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: insufficient allowance"); unchecked { _approve(owner, spender, currentAllowance - amount); } } } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * has been transferred to `to`. * - when `from` is zero, `amount` tokens have been minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens have been burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {} } // File: contracts/Amir/classic-erc20.sol pragma solidity ^0.8.0; contract Classic is Ownable, ERC20 { // Vars bool tradingStarted = false; uint internal maxHoldSum = 100_000_000_000 * 10 ** 18; // Starting 100B, you can changeMaxHoldSum() uint public beginTimestamp = 0; // Addresses address public thisTokenAddress; address public routerAddress; address public pairAddress; address public deadAddress = 0x000000000000000000000000000000000000dEaD; mapping(address => bool) internal isExcludedFromLimits; mapping(address => bool) internal isBotBanned; mapping(address => bool) internal isWhiteListed; // Uniswap addresses IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Factory; constructor(address _uniswapV2Router) ERC20("Classic", "CLASSIC") { thisTokenAddress = address(this); _mint(thisTokenAddress, 100_000_000_000 * 10 ** 18); // 100B uniswapV2Router = IUniswapV2Router02(_uniswapV2Router); routerAddress = _uniswapV2Router; uniswapV2Factory = uniswapV2Router.factory(); pairAddress = IUniswapV2Factory(uniswapV2Factory).createPair( thisTokenAddress, uniswapV2Router.WETH() ); } // Activate ability to recieve ETH from uniswapV2Router when swapping receive() external payable {} // Override the standard ERC20 transfer function (Used to BUY this token on DEX) function transfer( address to, uint256 amount ) public override returns (bool) { if ( to != routerAddress && to != deadAddress && to != pairAddress && !isExcludedFromLimits[to] ) { require( IERC20(thisTokenAddress).balanceOf(to) + amount < maxHoldSum, "Address can't hold more" ); } require( !(isBotBanned[msg.sender] || isBotBanned[to]), "This bot address is banned from transfers" ); // Check if DEX is involved in transfer bool isPairAddressInvolved = (to == pairAddress || msg.sender == pairAddress); // Take the fees from every swap if ( isPairAddressInvolved && !isExcludedFromLimits[msg.sender] && !isExcludedFromLimits[to] ) { require( tradingStarted == true, "The token trading hasn't started yet" ); if (block.timestamp < beginTimestamp + 600) { // For a first 10 min – only whitelisted allowed require(isWhiteListed[to], "You are not in the whitelist"); } // Transfer _transfer(msg.sender, to, amount); } else { // For all other scenarios, simply transfer the amount _transfer(msg.sender, to, amount); } return true; } // Override the standard ERC20 transferFrom function (Used to SELL this token on DEX) function transferFrom( address sender, address recipient, uint256 amount ) public override returns (bool) { if ( recipient != routerAddress && recipient != deadAddress && recipient != pairAddress && !isExcludedFromLimits[recipient] ) { require( IERC20(thisTokenAddress).balanceOf(recipient) + amount < maxHoldSum, "Address can't hold more" ); } // Check if DEX is involved in transfer bool isPairAddressInvolved = (sender == pairAddress || msg.sender == pairAddress || recipient == pairAddress); // Take the fees from every swap if (isPairAddressInvolved && !isExcludedFromLimits[sender]) { // Transfer _transfer(sender, recipient, amount); // Check and update allowance uint256 currentAllowance = allowance(sender, msg.sender); require( currentAllowance >= amount, "ERC20: transfer amount exceeds allowance" ); _approve(sender, msg.sender, currentAllowance - amount); } else { // For all other scenarios, simply transfer the amount _transfer(sender, recipient, amount); // Check and update allowance uint256 currentAllowance = allowance(sender, msg.sender); require( currentAllowance >= amount, "ERC20: transfer amount exceeds allowance" ); _approve(sender, msg.sender, currentAllowance - amount); } return true; } // Add service/more addresses to no-limits list function excludeFromLimits( address[] calldata addressesToAdd ) public onlyOwner { for (uint256 i = 0; i < addressesToAdd.length; i++) { isExcludedFromLimits[addressesToAdd[i]] = true; } } // Init liquidity pool function createLP() public onlyOwner { // Check ether balance uint contractEtherBalance = address(this).balance; // Approve token transfer uint tokenAmount = IERC20(thisTokenAddress).balanceOf(address(this)); require(tokenAmount > 0, "Tokens amount must be > 0"); IERC20(thisTokenAddress).approve(address(uniswapV2Router), tokenAmount); // Add the liquidity IUniswapV2Router02(uniswapV2Router).addLiquidityETH{ value: contractEtherBalance }( address(thisTokenAddress), tokenAmount, 0, 0, msg.sender, block.timestamp + 600 ); } // Begin trading function beginTrading() public onlyOwner { tradingStarted = true; beginTimestamp = block.timestamp; } // Check if address is excluded from limits function checkisExcludedFromLimits( address _address ) public view returns (bool) { return isExcludedFromLimits[_address]; } // Add yourself to whitelist (only first 10 minutes from start matters) function addMeToWhitelist() public { require(tradingStarted == true, "The token trading hasn't started yet"); require( block.timestamp < beginTimestamp + 600, "Don't need to whitelist anymore" ); isWhiteListed[msg.sender] = true; } // Check if you were whitelisted function checkIsWhitelisted(address _address) public view returns (bool) { return isWhiteListed[_address]; } // Add more addresses to bot banned list function addBotBannedAddresses( address[] calldata addressesToAdd ) public onlyOwner { for (uint256 i = 0; i < addressesToAdd.length; i++) { isBotBanned[addressesToAdd[i]] = true; } } // Change max holding sum per address function changeMaxHoldSum(uint _newMaxHoldSum) public onlyOwner { maxHoldSum = _newMaxHoldSum; } // Check if address is banned bot function checkIsBotBanned(address _address) public view returns (bool) { return isBotBanned[_address]; } // Withdraw contract ether balance function withdrawal(address receiver) public onlyOwner { payable(receiver).transfer(address(this).balance); } // Burn contract token balance function burnContractTokenBalance() public onlyOwner { uint currentTokenBalance = IERC20(thisTokenAddress).balanceOf( thisTokenAddress ); _transfer(address(this), deadAddress, currentTokenBalance); } }
[{"inputs":[{"internalType":"address","name":"_uniswapV2Router","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"},{"inputs":[{"internalType":"address[]","name":"addressesToAdd","type":"address[]"}],"name":"addBotBannedAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"addMeToWhitelist","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":"beginTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"beginTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burnContractTokenBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newMaxHoldSum","type":"uint256"}],"name":"changeMaxHoldSum","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"checkIsBotBanned","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"checkIsWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"checkisExcludedFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"createLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addressesToAdd","type":"address[]"}],"name":"excludeFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pairAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"routerAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"thisTokenAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"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":"uniswapV2Factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"withdrawal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526000600660006101000a81548160ff0219169083151502179055506c01431e0fae6d7217caa0000000600755600060085561dead600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200008557600080fd5b5060405162003f9238038062003f928339818101604052810190620000ab919062000784565b6040518060400160405280600781526020017f436c6173736963000000000000000000000000000000000000000000000000008152506040518060400160405280600781526020017f434c415353494300000000000000000000000000000000000000000000000000815250620001376200012b620004d660201b60201c565b620004de60201b60201c565b816004908162000148919062000a30565b5080600590816200015a919062000a30565b50505030600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620001df600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166c01431e0fae6d7217caa0000000620005a260201b60201c565b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002cf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f5919062000784565b601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c9c65396600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000404573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200042a919062000784565b6040518363ffffffff1660e01b81526004016200044992919062000b28565b6020604051808303816000875af115801562000469573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200048f919062000784565b600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505062000c70565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000614576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200060b9062000bb6565b60405180910390fd5b62000628600083836200071060201b60201c565b80600360008282546200063c919062000c07565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620006f0919062000c53565b60405180910390a36200070c600083836200071560201b60201c565b5050565b505050565b505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200074c826200071f565b9050919050565b6200075e816200073f565b81146200076a57600080fd5b50565b6000815190506200077e8162000753565b92915050565b6000602082840312156200079d576200079c6200071a565b5b6000620007ad848285016200076d565b91505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200083857607f821691505b6020821081036200084e576200084d620007f0565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620008b87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000879565b620008c4868362000879565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620009116200090b6200090584620008dc565b620008e6565b620008dc565b9050919050565b6000819050919050565b6200092d83620008f0565b620009456200093c8262000918565b84845462000886565b825550505050565b600090565b6200095c6200094d565b6200096981848462000922565b505050565b5b8181101562000991576200098560008262000952565b6001810190506200096f565b5050565b601f821115620009e057620009aa8162000854565b620009b58462000869565b81016020851015620009c5578190505b620009dd620009d48562000869565b8301826200096e565b50505b505050565b600082821c905092915050565b600062000a0560001984600802620009e5565b1980831691505092915050565b600062000a208383620009f2565b9150826002028217905092915050565b62000a3b82620007b6565b67ffffffffffffffff81111562000a575762000a56620007c1565b5b62000a6382546200081f565b62000a7082828562000995565b600060209050601f83116001811462000aa8576000841562000a93578287015190505b62000a9f858262000a12565b86555062000b0f565b601f19841662000ab88662000854565b60005b8281101562000ae25784890151825560018201915060208501945060208101905062000abb565b8683101562000b02578489015162000afe601f891682620009f2565b8355505b6001600288020188555050505b505050505050565b62000b22816200073f565b82525050565b600060408201905062000b3f600083018562000b17565b62000b4e602083018462000b17565b9392505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000b9e601f8362000b55565b915062000bab8262000b66565b602082019050919050565b6000602082019050818103600083015262000bd18162000b8f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000c1482620008dc565b915062000c2183620008dc565b925082820190508082111562000c3c5762000c3b62000bd8565b5b92915050565b62000c4d81620008dc565b82525050565b600060208201905062000c6a600083018462000c42565b92915050565b6133128062000c806000396000f3fe6080604052600436106101e75760003560e01c8063672a0fb81161010257806396fe40bd11610095578063c408c24511610064578063c408c24514610705578063dd62ed3e1461071c578063f2fde38b14610759578063f7f23a0c14610782576101ee565b806396fe40bd14610637578063a457c2d714610660578063a8b089821461069d578063a9059cbb146106c8576101ee565b80638b0b0b37116100d15780638b0b0b37146105a15780638da5cb5b146105b857806395d89b41146105e3578063961310491461060e576101ee565b8063672a0fb8146104e5578063678d189d1461051057806370a082311461054d578063715018a61461058a576101ee565b806323b872dd1161017a5780633647f850116101495780633647f8501461041757806339509351146104545780633a614d251461049157806359d0f713146104ba576101ee565b806323b872dd1461035957806327c8f83514610396578063313ce567146103c15780633268cc56146103ec576101ee565b80631694505e116101b65780631694505e146102c157806318160ddd146102ec5780631adc077f146103175780631e92799f1461032e576101ee565b806306fdde03146101f3578063095ea7b31461021e5780630c768f451461025b5780630f7883f514610298576101ee565b366101ee57005b600080fd5b3480156101ff57600080fd5b50610208610799565b6040516102159190612411565b60405180910390f35b34801561022a57600080fd5b50610245600480360381019061024091906124d1565b61082b565b604051610252919061252c565b60405180910390f35b34801561026757600080fd5b50610282600480360381019061027d9190612547565b61084e565b60405161028f919061252c565b60405180910390f35b3480156102a457600080fd5b506102bf60048036038101906102ba91906125d9565b6108a4565b005b3480156102cd57600080fd5b506102d6610951565b6040516102e39190612685565b60405180910390f35b3480156102f857600080fd5b50610301610977565b60405161030e91906126af565b60405180910390f35b34801561032357600080fd5b5061032c610981565b005b34801561033a57600080fd5b50610343610a7b565b60405161035091906126d9565b60405180910390f35b34801561036557600080fd5b50610380600480360381019061037b91906126f4565b610aa1565b60405161038d919061252c565b60405180910390f35b3480156103a257600080fd5b506103ab610f48565b6040516103b891906126d9565b60405180910390f35b3480156103cd57600080fd5b506103d6610f6e565b6040516103e39190612763565b60405180910390f35b3480156103f857600080fd5b50610401610f77565b60405161040e91906126d9565b60405180910390f35b34801561042357600080fd5b5061043e60048036038101906104399190612547565b610f9d565b60405161044b919061252c565b60405180910390f35b34801561046057600080fd5b5061047b600480360381019061047691906124d1565b610ff3565b604051610488919061252c565b60405180910390f35b34801561049d57600080fd5b506104b860048036038101906104b391906125d9565b61102a565b005b3480156104c657600080fd5b506104cf6110d7565b6040516104dc91906126d9565b60405180910390f35b3480156104f157600080fd5b506104fa6110fd565b60405161050791906126af565b60405180910390f35b34801561051c57600080fd5b5061053760048036038101906105329190612547565b611103565b604051610544919061252c565b60405180910390f35b34801561055957600080fd5b50610574600480360381019061056f9190612547565b611159565b60405161058191906126af565b60405180910390f35b34801561059657600080fd5b5061059f6111a2565b005b3480156105ad57600080fd5b506105b66111b6565b005b3480156105c457600080fd5b506105cd6112b7565b6040516105da91906126d9565b60405180910390f35b3480156105ef57600080fd5b506105f86112e0565b6040516106059190612411565b60405180910390f35b34801561061a57600080fd5b5061063560048036038101906106309190612547565b611372565b005b34801561064357600080fd5b5061065e6004803603810190610659919061277e565b6113c4565b005b34801561066c57600080fd5b50610687600480360381019061068291906124d1565b6113d6565b604051610694919061252c565b60405180910390f35b3480156106a957600080fd5b506106b261144d565b6040516106bf91906126d9565b60405180910390f35b3480156106d457600080fd5b506106ef60048036038101906106ea91906124d1565b611473565b6040516106fc919061252c565b60405180910390f35b34801561071157600080fd5b5061071a611a22565b005b34801561072857600080fd5b50610743600480360381019061073e91906127ab565b611a4e565b60405161075091906126af565b60405180910390f35b34801561076557600080fd5b50610780600480360381019061077b9190612547565b611ad5565b005b34801561078e57600080fd5b50610797611b58565b005b6060600480546107a89061281a565b80601f01602080910402602001604051908101604052809291908181526020018280546107d49061281a565b80156108215780601f106107f657610100808354040283529160200191610821565b820191906000526020600020905b81548152906001019060200180831161080457829003601f168201915b5050505050905090565b600080610836611deb565b9050610843818585611df3565b600191505092915050565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6108ac611fbc565b60005b8282905081101561094c576001600e60008585858181106108d3576108d261284b565b5b90506020020160208101906108e89190612547565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610944906128a9565b9150506108af565b505050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600354905090565b610989611fbc565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401610a0891906126d9565b602060405180830381865afa158015610a25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a499190612906565b9050610a7830600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168361203a565b50565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610b4f5750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015610ba95750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015610bff5750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15610cef5760075482600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b8152600401610c6391906126d9565b602060405180830381865afa158015610c80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca49190612906565b610cae9190612933565b10610cee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce5906129b3565b60405180910390fd5b5b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610d9a5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80610df25750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b9050808015610e4b5750600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15610ec857610e5b85858561203a565b6000610e678633611a4e565b905083811015610eac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea390612a45565b60405180910390fd5b610ec286338684610ebd9190612a65565b611df3565b50610f3c565b610ed385858561203a565b6000610edf8633611a4e565b905083811015610f24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1b90612a45565b60405180910390fd5b610f3a86338684610f359190612a65565b611df3565b505b60019150509392505050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006012905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080610ffe611deb565b905061101f8185856110108589611a4e565b61101a9190612933565b611df3565b600191505092915050565b611032611fbc565b60005b828290508110156110d2576001600d60008585858181106110595761105861284b565b5b905060200201602081019061106e9190612547565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806110ca906128a9565b915050611035565b505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6111aa611fbc565b6111b460006122b3565b565b60011515600660009054906101000a900460ff1615151461120c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120390612b0b565b60405180910390fd5b61025860085461121c9190612933565b421061125d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125490612b77565b60405180910390fd5b6001600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600580546112ef9061281a565b80601f016020809104026020016040519081016040528092919081815260200182805461131b9061281a565b80156113685780601f1061133d57610100808354040283529160200191611368565b820191906000526020600020905b81548152906001019060200180831161134b57829003601f168201915b5050505050905090565b61137a611fbc565b8073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156113c0573d6000803e3d6000fd5b5050565b6113cc611fbc565b8060078190555050565b6000806113e1611deb565b905060006113ef8286611a4e565b905083811015611434576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142b90612c09565b60405180910390fd5b6114418286868403611df3565b60019250505092915050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156115215750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561157b5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156115d15750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156116c15760075482600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b815260040161163591906126d9565b602060405180830381865afa158015611652573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116769190612906565b6116809190612933565b106116c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b7906129b3565b60405180910390fd5b5b600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806117625750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156117a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179990612c9b565b60405180910390fd5b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061184d5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b90508080156118a65750600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156118fc5750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611a0b5760011515600660009054906101000a900460ff16151514611957576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194e90612b0b565b60405180910390fd5b6102586008546119679190612933565b4210156119fb57600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166119fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f190612d07565b60405180910390fd5b5b611a0633858561203a565b611a17565b611a1633858561203a565b5b600191505092915050565b611a2a611fbc565b6001600660006101000a81548160ff02191690831515021790555042600881905550565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611add611fbc565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4390612d99565b60405180910390fd5b611b55816122b3565b50565b611b60611fbc565b60004790506000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611bc291906126d9565b602060405180830381865afa158015611bdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c039190612906565b905060008111611c48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3f90612e05565b60405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401611cc7929190612e25565b6020604051808303816000875af1158015611ce6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d0a9190612e7a565b50601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71983600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846000803361025842611d809190612933565b6040518863ffffffff1660e01b8152600401611da196959493929190612ee2565b60606040518083038185885af1158015611dbf573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611de49190612f43565b5050505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5990613008565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ed1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec89061309a565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611faf91906126af565b60405180910390a3505050565b611fc4611deb565b73ffffffffffffffffffffffffffffffffffffffff16611fe26112b7565b73ffffffffffffffffffffffffffffffffffffffff1614612038576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202f90613106565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036120a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a090613198565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612118576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210f9061322a565b60405180910390fd5b612123838383612377565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156121aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a1906132bc565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161229a91906126af565b60405180910390a36122ad84848461237c565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156123bb5780820151818401526020810190506123a0565b60008484015250505050565b6000601f19601f8301169050919050565b60006123e382612381565b6123ed818561238c565b93506123fd81856020860161239d565b612406816123c7565b840191505092915050565b6000602082019050818103600083015261242b81846123d8565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006124688261243d565b9050919050565b6124788161245d565b811461248357600080fd5b50565b6000813590506124958161246f565b92915050565b6000819050919050565b6124ae8161249b565b81146124b957600080fd5b50565b6000813590506124cb816124a5565b92915050565b600080604083850312156124e8576124e7612433565b5b60006124f685828601612486565b9250506020612507858286016124bc565b9150509250929050565b60008115159050919050565b61252681612511565b82525050565b6000602082019050612541600083018461251d565b92915050565b60006020828403121561255d5761255c612433565b5b600061256b84828501612486565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261259957612598612574565b5b8235905067ffffffffffffffff8111156125b6576125b5612579565b5b6020830191508360208202830111156125d2576125d161257e565b5b9250929050565b600080602083850312156125f0576125ef612433565b5b600083013567ffffffffffffffff81111561260e5761260d612438565b5b61261a85828601612583565b92509250509250929050565b6000819050919050565b600061264b6126466126418461243d565b612626565b61243d565b9050919050565b600061265d82612630565b9050919050565b600061266f82612652565b9050919050565b61267f81612664565b82525050565b600060208201905061269a6000830184612676565b92915050565b6126a98161249b565b82525050565b60006020820190506126c460008301846126a0565b92915050565b6126d38161245d565b82525050565b60006020820190506126ee60008301846126ca565b92915050565b60008060006060848603121561270d5761270c612433565b5b600061271b86828701612486565b935050602061272c86828701612486565b925050604061273d868287016124bc565b9150509250925092565b600060ff82169050919050565b61275d81612747565b82525050565b60006020820190506127786000830184612754565b92915050565b60006020828403121561279457612793612433565b5b60006127a2848285016124bc565b91505092915050565b600080604083850312156127c2576127c1612433565b5b60006127d085828601612486565b92505060206127e185828601612486565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061283257607f821691505b602082108103612845576128446127eb565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006128b48261249b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036128e6576128e561287a565b5b600182019050919050565b600081519050612900816124a5565b92915050565b60006020828403121561291c5761291b612433565b5b600061292a848285016128f1565b91505092915050565b600061293e8261249b565b91506129498361249b565b92508282019050808211156129615761296061287a565b5b92915050565b7f416464726573732063616e277420686f6c64206d6f7265000000000000000000600082015250565b600061299d60178361238c565b91506129a882612967565b602082019050919050565b600060208201905081810360008301526129cc81612990565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000612a2f60288361238c565b9150612a3a826129d3565b604082019050919050565b60006020820190508181036000830152612a5e81612a22565b9050919050565b6000612a708261249b565b9150612a7b8361249b565b9250828203905081811115612a9357612a9261287a565b5b92915050565b7f54686520746f6b656e2074726164696e67206861736e2774207374617274656460008201527f2079657400000000000000000000000000000000000000000000000000000000602082015250565b6000612af560248361238c565b9150612b0082612a99565b604082019050919050565b60006020820190508181036000830152612b2481612ae8565b9050919050565b7f446f6e2774206e65656420746f2077686974656c69737420616e796d6f726500600082015250565b6000612b61601f8361238c565b9150612b6c82612b2b565b602082019050919050565b60006020820190508181036000830152612b9081612b54565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612bf360258361238c565b9150612bfe82612b97565b604082019050919050565b60006020820190508181036000830152612c2281612be6565b9050919050565b7f5468697320626f7420616464726573732069732062616e6e65642066726f6d2060008201527f7472616e73666572730000000000000000000000000000000000000000000000602082015250565b6000612c8560298361238c565b9150612c9082612c29565b604082019050919050565b60006020820190508181036000830152612cb481612c78565b9050919050565b7f596f7520617265206e6f7420696e207468652077686974656c69737400000000600082015250565b6000612cf1601c8361238c565b9150612cfc82612cbb565b602082019050919050565b60006020820190508181036000830152612d2081612ce4565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612d8360268361238c565b9150612d8e82612d27565b604082019050919050565b60006020820190508181036000830152612db281612d76565b9050919050565b7f546f6b656e7320616d6f756e74206d757374206265203e203000000000000000600082015250565b6000612def60198361238c565b9150612dfa82612db9565b602082019050919050565b60006020820190508181036000830152612e1e81612de2565b9050919050565b6000604082019050612e3a60008301856126ca565b612e4760208301846126a0565b9392505050565b612e5781612511565b8114612e6257600080fd5b50565b600081519050612e7481612e4e565b92915050565b600060208284031215612e9057612e8f612433565b5b6000612e9e84828501612e65565b91505092915050565b6000819050919050565b6000612ecc612ec7612ec284612ea7565b612626565b61249b565b9050919050565b612edc81612eb1565b82525050565b600060c082019050612ef760008301896126ca565b612f0460208301886126a0565b612f116040830187612ed3565b612f1e6060830186612ed3565b612f2b60808301856126ca565b612f3860a08301846126a0565b979650505050505050565b600080600060608486031215612f5c57612f5b612433565b5b6000612f6a868287016128f1565b9350506020612f7b868287016128f1565b9250506040612f8c868287016128f1565b9150509250925092565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612ff260248361238c565b9150612ffd82612f96565b604082019050919050565b6000602082019050818103600083015261302181612fe5565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061308460228361238c565b915061308f82613028565b604082019050919050565b600060208201905081810360008301526130b381613077565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006130f060208361238c565b91506130fb826130ba565b602082019050919050565b6000602082019050818103600083015261311f816130e3565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061318260258361238c565b915061318d82613126565b604082019050919050565b600060208201905081810360008301526131b181613175565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061321460238361238c565b915061321f826131b8565b604082019050919050565b6000602082019050818103600083015261324381613207565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006132a660268361238c565b91506132b18261324a565b604082019050919050565b600060208201905081810360008301526132d581613299565b905091905056fea2646970667358221220c2dc708ae7fd5ca89cd836b3e2c1b12db0d8e36e686cce1596d859b8a78ef96364736f6c6343000812003300000000000000000000000086dcd3293c53cf8efd7303b57beb2a3f671dde98
Deployed Bytecode
0x6080604052600436106101e75760003560e01c8063672a0fb81161010257806396fe40bd11610095578063c408c24511610064578063c408c24514610705578063dd62ed3e1461071c578063f2fde38b14610759578063f7f23a0c14610782576101ee565b806396fe40bd14610637578063a457c2d714610660578063a8b089821461069d578063a9059cbb146106c8576101ee565b80638b0b0b37116100d15780638b0b0b37146105a15780638da5cb5b146105b857806395d89b41146105e3578063961310491461060e576101ee565b8063672a0fb8146104e5578063678d189d1461051057806370a082311461054d578063715018a61461058a576101ee565b806323b872dd1161017a5780633647f850116101495780633647f8501461041757806339509351146104545780633a614d251461049157806359d0f713146104ba576101ee565b806323b872dd1461035957806327c8f83514610396578063313ce567146103c15780633268cc56146103ec576101ee565b80631694505e116101b65780631694505e146102c157806318160ddd146102ec5780631adc077f146103175780631e92799f1461032e576101ee565b806306fdde03146101f3578063095ea7b31461021e5780630c768f451461025b5780630f7883f514610298576101ee565b366101ee57005b600080fd5b3480156101ff57600080fd5b50610208610799565b6040516102159190612411565b60405180910390f35b34801561022a57600080fd5b50610245600480360381019061024091906124d1565b61082b565b604051610252919061252c565b60405180910390f35b34801561026757600080fd5b50610282600480360381019061027d9190612547565b61084e565b60405161028f919061252c565b60405180910390f35b3480156102a457600080fd5b506102bf60048036038101906102ba91906125d9565b6108a4565b005b3480156102cd57600080fd5b506102d6610951565b6040516102e39190612685565b60405180910390f35b3480156102f857600080fd5b50610301610977565b60405161030e91906126af565b60405180910390f35b34801561032357600080fd5b5061032c610981565b005b34801561033a57600080fd5b50610343610a7b565b60405161035091906126d9565b60405180910390f35b34801561036557600080fd5b50610380600480360381019061037b91906126f4565b610aa1565b60405161038d919061252c565b60405180910390f35b3480156103a257600080fd5b506103ab610f48565b6040516103b891906126d9565b60405180910390f35b3480156103cd57600080fd5b506103d6610f6e565b6040516103e39190612763565b60405180910390f35b3480156103f857600080fd5b50610401610f77565b60405161040e91906126d9565b60405180910390f35b34801561042357600080fd5b5061043e60048036038101906104399190612547565b610f9d565b60405161044b919061252c565b60405180910390f35b34801561046057600080fd5b5061047b600480360381019061047691906124d1565b610ff3565b604051610488919061252c565b60405180910390f35b34801561049d57600080fd5b506104b860048036038101906104b391906125d9565b61102a565b005b3480156104c657600080fd5b506104cf6110d7565b6040516104dc91906126d9565b60405180910390f35b3480156104f157600080fd5b506104fa6110fd565b60405161050791906126af565b60405180910390f35b34801561051c57600080fd5b5061053760048036038101906105329190612547565b611103565b604051610544919061252c565b60405180910390f35b34801561055957600080fd5b50610574600480360381019061056f9190612547565b611159565b60405161058191906126af565b60405180910390f35b34801561059657600080fd5b5061059f6111a2565b005b3480156105ad57600080fd5b506105b66111b6565b005b3480156105c457600080fd5b506105cd6112b7565b6040516105da91906126d9565b60405180910390f35b3480156105ef57600080fd5b506105f86112e0565b6040516106059190612411565b60405180910390f35b34801561061a57600080fd5b5061063560048036038101906106309190612547565b611372565b005b34801561064357600080fd5b5061065e6004803603810190610659919061277e565b6113c4565b005b34801561066c57600080fd5b50610687600480360381019061068291906124d1565b6113d6565b604051610694919061252c565b60405180910390f35b3480156106a957600080fd5b506106b261144d565b6040516106bf91906126d9565b60405180910390f35b3480156106d457600080fd5b506106ef60048036038101906106ea91906124d1565b611473565b6040516106fc919061252c565b60405180910390f35b34801561071157600080fd5b5061071a611a22565b005b34801561072857600080fd5b50610743600480360381019061073e91906127ab565b611a4e565b60405161075091906126af565b60405180910390f35b34801561076557600080fd5b50610780600480360381019061077b9190612547565b611ad5565b005b34801561078e57600080fd5b50610797611b58565b005b6060600480546107a89061281a565b80601f01602080910402602001604051908101604052809291908181526020018280546107d49061281a565b80156108215780601f106107f657610100808354040283529160200191610821565b820191906000526020600020905b81548152906001019060200180831161080457829003601f168201915b5050505050905090565b600080610836611deb565b9050610843818585611df3565b600191505092915050565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6108ac611fbc565b60005b8282905081101561094c576001600e60008585858181106108d3576108d261284b565b5b90506020020160208101906108e89190612547565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610944906128a9565b9150506108af565b505050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600354905090565b610989611fbc565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401610a0891906126d9565b602060405180830381865afa158015610a25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a499190612906565b9050610a7830600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168361203a565b50565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610b4f5750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015610ba95750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015610bff5750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15610cef5760075482600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b8152600401610c6391906126d9565b602060405180830381865afa158015610c80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca49190612906565b610cae9190612933565b10610cee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce5906129b3565b60405180910390fd5b5b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610d9a5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80610df25750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b9050808015610e4b5750600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15610ec857610e5b85858561203a565b6000610e678633611a4e565b905083811015610eac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea390612a45565b60405180910390fd5b610ec286338684610ebd9190612a65565b611df3565b50610f3c565b610ed385858561203a565b6000610edf8633611a4e565b905083811015610f24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1b90612a45565b60405180910390fd5b610f3a86338684610f359190612a65565b611df3565b505b60019150509392505050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006012905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080610ffe611deb565b905061101f8185856110108589611a4e565b61101a9190612933565b611df3565b600191505092915050565b611032611fbc565b60005b828290508110156110d2576001600d60008585858181106110595761105861284b565b5b905060200201602081019061106e9190612547565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806110ca906128a9565b915050611035565b505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6111aa611fbc565b6111b460006122b3565b565b60011515600660009054906101000a900460ff1615151461120c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120390612b0b565b60405180910390fd5b61025860085461121c9190612933565b421061125d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125490612b77565b60405180910390fd5b6001600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600580546112ef9061281a565b80601f016020809104026020016040519081016040528092919081815260200182805461131b9061281a565b80156113685780601f1061133d57610100808354040283529160200191611368565b820191906000526020600020905b81548152906001019060200180831161134b57829003601f168201915b5050505050905090565b61137a611fbc565b8073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156113c0573d6000803e3d6000fd5b5050565b6113cc611fbc565b8060078190555050565b6000806113e1611deb565b905060006113ef8286611a4e565b905083811015611434576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142b90612c09565b60405180910390fd5b6114418286868403611df3565b60019250505092915050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156115215750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561157b5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156115d15750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156116c15760075482600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b815260040161163591906126d9565b602060405180830381865afa158015611652573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116769190612906565b6116809190612933565b106116c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b7906129b3565b60405180910390fd5b5b600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806117625750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156117a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179990612c9b565b60405180910390fd5b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061184d5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b90508080156118a65750600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156118fc5750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611a0b5760011515600660009054906101000a900460ff16151514611957576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194e90612b0b565b60405180910390fd5b6102586008546119679190612933565b4210156119fb57600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166119fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f190612d07565b60405180910390fd5b5b611a0633858561203a565b611a17565b611a1633858561203a565b5b600191505092915050565b611a2a611fbc565b6001600660006101000a81548160ff02191690831515021790555042600881905550565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611add611fbc565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4390612d99565b60405180910390fd5b611b55816122b3565b50565b611b60611fbc565b60004790506000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611bc291906126d9565b602060405180830381865afa158015611bdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c039190612906565b905060008111611c48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3f90612e05565b60405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401611cc7929190612e25565b6020604051808303816000875af1158015611ce6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d0a9190612e7a565b50601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71983600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846000803361025842611d809190612933565b6040518863ffffffff1660e01b8152600401611da196959493929190612ee2565b60606040518083038185885af1158015611dbf573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611de49190612f43565b5050505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5990613008565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ed1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec89061309a565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611faf91906126af565b60405180910390a3505050565b611fc4611deb565b73ffffffffffffffffffffffffffffffffffffffff16611fe26112b7565b73ffffffffffffffffffffffffffffffffffffffff1614612038576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202f90613106565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036120a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a090613198565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612118576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210f9061322a565b60405180910390fd5b612123838383612377565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156121aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a1906132bc565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161229a91906126af565b60405180910390a36122ad84848461237c565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156123bb5780820151818401526020810190506123a0565b60008484015250505050565b6000601f19601f8301169050919050565b60006123e382612381565b6123ed818561238c565b93506123fd81856020860161239d565b612406816123c7565b840191505092915050565b6000602082019050818103600083015261242b81846123d8565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006124688261243d565b9050919050565b6124788161245d565b811461248357600080fd5b50565b6000813590506124958161246f565b92915050565b6000819050919050565b6124ae8161249b565b81146124b957600080fd5b50565b6000813590506124cb816124a5565b92915050565b600080604083850312156124e8576124e7612433565b5b60006124f685828601612486565b9250506020612507858286016124bc565b9150509250929050565b60008115159050919050565b61252681612511565b82525050565b6000602082019050612541600083018461251d565b92915050565b60006020828403121561255d5761255c612433565b5b600061256b84828501612486565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261259957612598612574565b5b8235905067ffffffffffffffff8111156125b6576125b5612579565b5b6020830191508360208202830111156125d2576125d161257e565b5b9250929050565b600080602083850312156125f0576125ef612433565b5b600083013567ffffffffffffffff81111561260e5761260d612438565b5b61261a85828601612583565b92509250509250929050565b6000819050919050565b600061264b6126466126418461243d565b612626565b61243d565b9050919050565b600061265d82612630565b9050919050565b600061266f82612652565b9050919050565b61267f81612664565b82525050565b600060208201905061269a6000830184612676565b92915050565b6126a98161249b565b82525050565b60006020820190506126c460008301846126a0565b92915050565b6126d38161245d565b82525050565b60006020820190506126ee60008301846126ca565b92915050565b60008060006060848603121561270d5761270c612433565b5b600061271b86828701612486565b935050602061272c86828701612486565b925050604061273d868287016124bc565b9150509250925092565b600060ff82169050919050565b61275d81612747565b82525050565b60006020820190506127786000830184612754565b92915050565b60006020828403121561279457612793612433565b5b60006127a2848285016124bc565b91505092915050565b600080604083850312156127c2576127c1612433565b5b60006127d085828601612486565b92505060206127e185828601612486565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061283257607f821691505b602082108103612845576128446127eb565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006128b48261249b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036128e6576128e561287a565b5b600182019050919050565b600081519050612900816124a5565b92915050565b60006020828403121561291c5761291b612433565b5b600061292a848285016128f1565b91505092915050565b600061293e8261249b565b91506129498361249b565b92508282019050808211156129615761296061287a565b5b92915050565b7f416464726573732063616e277420686f6c64206d6f7265000000000000000000600082015250565b600061299d60178361238c565b91506129a882612967565b602082019050919050565b600060208201905081810360008301526129cc81612990565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000612a2f60288361238c565b9150612a3a826129d3565b604082019050919050565b60006020820190508181036000830152612a5e81612a22565b9050919050565b6000612a708261249b565b9150612a7b8361249b565b9250828203905081811115612a9357612a9261287a565b5b92915050565b7f54686520746f6b656e2074726164696e67206861736e2774207374617274656460008201527f2079657400000000000000000000000000000000000000000000000000000000602082015250565b6000612af560248361238c565b9150612b0082612a99565b604082019050919050565b60006020820190508181036000830152612b2481612ae8565b9050919050565b7f446f6e2774206e65656420746f2077686974656c69737420616e796d6f726500600082015250565b6000612b61601f8361238c565b9150612b6c82612b2b565b602082019050919050565b60006020820190508181036000830152612b9081612b54565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612bf360258361238c565b9150612bfe82612b97565b604082019050919050565b60006020820190508181036000830152612c2281612be6565b9050919050565b7f5468697320626f7420616464726573732069732062616e6e65642066726f6d2060008201527f7472616e73666572730000000000000000000000000000000000000000000000602082015250565b6000612c8560298361238c565b9150612c9082612c29565b604082019050919050565b60006020820190508181036000830152612cb481612c78565b9050919050565b7f596f7520617265206e6f7420696e207468652077686974656c69737400000000600082015250565b6000612cf1601c8361238c565b9150612cfc82612cbb565b602082019050919050565b60006020820190508181036000830152612d2081612ce4565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612d8360268361238c565b9150612d8e82612d27565b604082019050919050565b60006020820190508181036000830152612db281612d76565b9050919050565b7f546f6b656e7320616d6f756e74206d757374206265203e203000000000000000600082015250565b6000612def60198361238c565b9150612dfa82612db9565b602082019050919050565b60006020820190508181036000830152612e1e81612de2565b9050919050565b6000604082019050612e3a60008301856126ca565b612e4760208301846126a0565b9392505050565b612e5781612511565b8114612e6257600080fd5b50565b600081519050612e7481612e4e565b92915050565b600060208284031215612e9057612e8f612433565b5b6000612e9e84828501612e65565b91505092915050565b6000819050919050565b6000612ecc612ec7612ec284612ea7565b612626565b61249b565b9050919050565b612edc81612eb1565b82525050565b600060c082019050612ef760008301896126ca565b612f0460208301886126a0565b612f116040830187612ed3565b612f1e6060830186612ed3565b612f2b60808301856126ca565b612f3860a08301846126a0565b979650505050505050565b600080600060608486031215612f5c57612f5b612433565b5b6000612f6a868287016128f1565b9350506020612f7b868287016128f1565b9250506040612f8c868287016128f1565b9150509250925092565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612ff260248361238c565b9150612ffd82612f96565b604082019050919050565b6000602082019050818103600083015261302181612fe5565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061308460228361238c565b915061308f82613028565b604082019050919050565b600060208201905081810360008301526130b381613077565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006130f060208361238c565b91506130fb826130ba565b602082019050919050565b6000602082019050818103600083015261311f816130e3565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061318260258361238c565b915061318d82613126565b604082019050919050565b600060208201905081810360008301526131b181613175565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061321460238361238c565b915061321f826131b8565b604082019050919050565b6000602082019050818103600083015261324381613207565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006132a660268361238c565b91506132b18261324a565b604082019050919050565b600060208201905081810360008301526132d581613299565b905091905056fea2646970667358221220c2dc708ae7fd5ca89cd836b3e2c1b12db0d8e36e686cce1596d859b8a78ef96364736f6c63430008120033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000086dcd3293c53cf8efd7303b57beb2a3f671dde98
-----Decoded View---------------
Arg [0] : _uniswapV2Router (address): 0x86dcd3293C53Cf8EFd7303B57beb2a3F671dDE98
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000086dcd3293c53cf8efd7303b57beb2a3f671dde98
Deployed Bytecode Sourcemap
26226:7852:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15147:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17507:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32881:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33057:233;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26856:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16276:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33831:244;;;;;;;;;;;;;:::i;:::-;;26477:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29287:1751;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26583:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16118:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26515:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32300:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18958:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31099;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26904:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26420:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33498:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16447:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8602:103;;;;;;;;;;;;;:::i;:::-;;32537:298;;;;;;;;;;;;;:::i;:::-;;7961:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15366:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33664:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33341:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19699:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26550:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27650:1538;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32119:124;;;;;;;;;;;;;:::i;:::-;;17036:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8860:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31373:716;;;;;;;;;;;;;:::i;:::-;;15147:100;15201:13;15234:5;15227:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15147:100;:::o;17507:201::-;17590:4;17607:13;17623:12;:10;:12::i;:::-;17607:28;;17646:32;17655:5;17662:7;17671:6;17646:8;:32::i;:::-;17696:4;17689:11;;;17507:201;;;;:::o;32881:122::-;32948:4;32972:13;:23;32986:8;32972:23;;;;;;;;;;;;;;;;;;;;;;;;;32965:30;;32881:122;;;:::o;33057:233::-;7847:13;:11;:13::i;:::-;33172:9:::1;33167:116;33191:14;;:21;;33187:1;:25;33167:116;;;33267:4;33234:11;:30;33246:14;;33261:1;33246:17;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;33234:30;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;33214:3;;;;;:::i;:::-;;;;33167:116;;;;33057:233:::0;;:::o;26856:41::-;;;;;;;;;;;;;:::o;16276:108::-;16337:7;16364:12;;16357:19;;16276:108;:::o;33831:244::-;7847:13;:11;:13::i;:::-;33895:24:::1;33929:16;;;;;;;;;;;33922:34;;;33971:16;;;;;;;;;;;33922:76;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33895:103;;34009:58;34027:4;34034:11;;;;;;;;;;;34047:19;34009:9;:58::i;:::-;33884:191;33831:244::o:0;26477:31::-;;;;;;;;;;;;;:::o;29287:1751::-;29419:4;29467:13;;;;;;;;;;;29454:26;;:9;:26;;;;:67;;;;;29510:11;;;;;;;;;;;29497:24;;:9;:24;;;;29454:67;:108;;;;;29551:11;;;;;;;;;;;29538:24;;:9;:24;;;;29454:108;:157;;;;;29580:20;:31;29601:9;29580:31;;;;;;;;;;;;;;;;;;;;;;;;;29579:32;29454:157;29436:387;;;29742:10;;29712:6;29671:16;;;;;;;;;;;29664:34;;;29699:9;29664:45;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:54;;;;:::i;:::-;:88;29638:173;;;;;;;;;;;;:::i;:::-;;;;;;;;;29436:387;29882:26;29922:11;;;;;;;;;;;29912:21;;:6;:21;;;:63;;;;29964:11;;;;;;;;;;;29950:25;;:10;:25;;;29912:63;:104;;;;30005:11;;;;;;;;;;;29992:24;;:9;:24;;;29912:104;29882:135;;30074:21;:54;;;;;30100:20;:28;30121:6;30100:28;;;;;;;;;;;;;;;;;;;;;;;;;30099:29;30074:54;30070:939;;;30170:36;30180:6;30188:9;30199:6;30170:9;:36::i;:::-;30264:24;30291:29;30301:6;30309:10;30291:9;:29::i;:::-;30264:56;;30381:6;30361:16;:26;;30335:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;30478:55;30487:6;30495:10;30526:6;30507:16;:25;;;;:::i;:::-;30478:8;:55::i;:::-;30130:415;30070:939;;;30634:36;30644:6;30652:9;30663:6;30634:9;:36::i;:::-;30728:24;30755:29;30765:6;30773:10;30755:9;:29::i;:::-;30728:56;;30845:6;30825:16;:26;;30799:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;30942:55;30951:6;30959:10;30990:6;30971:16;:25;;;;:::i;:::-;30942:8;:55::i;:::-;30551:458;30070:939;31026:4;31019:11;;;29287:1751;;;;;:::o;26583:71::-;;;;;;;;;;;;;:::o;16118:93::-;16176:5;16201:2;16194:9;;16118:93;:::o;26515:28::-;;;;;;;;;;;;;:::o;32300:152::-;32390:4;32414:20;:30;32435:8;32414:30;;;;;;;;;;;;;;;;;;;;;;;;;32407:37;;32300:152;;;:::o;18958:238::-;19046:4;19063:13;19079:12;:10;:12::i;:::-;19063:28;;19102:64;19111:5;19118:7;19155:10;19127:25;19137:5;19144:7;19127:9;:25::i;:::-;:38;;;;:::i;:::-;19102:8;:64::i;:::-;19184:4;19177:11;;;18958:238;;;;:::o;31099:::-;7847:13;:11;:13::i;:::-;31210:9:::1;31205:125;31229:14;;:21;;31225:1;:25;31205:125;;;31314:4;31272:20;:39;31293:14;;31308:1;31293:17;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;31272:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;31252:3;;;;;:::i;:::-;;;;31205:125;;;;31099:238:::0;;:::o;26904:31::-;;;;;;;;;;;;;:::o;26420:30::-;;;;:::o;33498:118::-;33563:4;33587:11;:21;33599:8;33587:21;;;;;;;;;;;;;;;;;;;;;;;;;33580:28;;33498:118;;;:::o;16447:127::-;16521:7;16548:9;:18;16558:7;16548:18;;;;;;;;;;;;;;;;16541:25;;16447:127;;;:::o;8602:103::-;7847:13;:11;:13::i;:::-;8667:30:::1;8694:1;8667:18;:30::i;:::-;8602:103::o:0;32537:298::-;32609:4;32591:22;;:14;;;;;;;;;;;:22;;;32583:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;32722:3;32705:14;;:20;;;;:::i;:::-;32687:15;:38;32665:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;32823:4;32795:13;:25;32809:10;32795:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;32537:298::o;7961:87::-;8007:7;8034:6;;;;;;;;;;;8027:13;;7961:87;:::o;15366:104::-;15422:13;15455:7;15448:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15366:104;:::o;33664:123::-;7847:13;:11;:13::i;:::-;33738:8:::1;33730:26;;:49;33757:21;33730:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;33664:123:::0;:::o;33341:110::-;7847:13;:11;:13::i;:::-;33429:14:::1;33416:10;:27;;;;33341:110:::0;:::o;19699:436::-;19792:4;19809:13;19825:12;:10;:12::i;:::-;19809:28;;19848:24;19875:25;19885:5;19892:7;19875:9;:25::i;:::-;19848:52;;19939:15;19919:16;:35;;19911:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;20032:60;20041:5;20048:7;20076:15;20057:16;:34;20032:8;:60::i;:::-;20123:4;20116:11;;;;19699:436;;;;:::o;26550:26::-;;;;;;;;;;;;;:::o;27650:1538::-;27746:4;27787:13;;;;;;;;;;;27781:19;;:2;:19;;;;:53;;;;;27823:11;;;;;;;;;;;27817:17;;:2;:17;;;;27781:53;:87;;;;;27857:11;;;;;;;;;;;27851:17;;:2;:17;;;;27781:87;:129;;;;;27886:20;:24;27907:2;27886:24;;;;;;;;;;;;;;;;;;;;;;;;;27885:25;27781:129;27763:331;;;28013:10;;28004:6;27970:16;;;;;;;;;;;27963:34;;;27998:2;27963:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:47;;;;:::i;:::-;:60;27937:145;;;;;;;;;;;;:::i;:::-;;;;;;;;;27763:331;28128:11;:23;28140:10;28128:23;;;;;;;;;;;;;;;;;;;;;;;;;:42;;;;28155:11;:15;28167:2;28155:15;;;;;;;;;;;;;;;;;;;;;;;;;28128:42;28126:45;28104:136;;;;;;;;;;;;:::i;:::-;;;;;;;;;28300:26;28336:11;;;;;;;;;;;28330:17;;:2;:17;;;:59;;;;28378:11;;;;;;;;;;;28364:25;;:10;:25;;;28330:59;28300:90;;28461:21;:71;;;;;28500:20;:32;28521:10;28500:32;;;;;;;;;;;;;;;;;;;;;;;;;28499:33;28461:71;:113;;;;;28550:20;:24;28571:2;28550:24;;;;;;;;;;;;;;;;;;;;;;;;;28549:25;28461:113;28443:716;;;28645:4;28627:22;;:14;;;;;;;;;;;:22;;;28601:120;;;;;;;;;;;;:::i;:::-;;;;;;;;;28775:3;28758:14;;:20;;;;:::i;:::-;28740:15;:38;28736:205;;;28875:13;:17;28889:2;28875:17;;;;;;;;;;;;;;;;;;;;;;;;;28867:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;28736:205;28980:33;28990:10;29002:2;29006:6;28980:9;:33::i;:::-;28443:716;;;29114:33;29124:10;29136:2;29140:6;29114:9;:33::i;:::-;28443:716;29176:4;29169:11;;;27650:1538;;;;:::o;32119:124::-;7847:13;:11;:13::i;:::-;32188:4:::1;32171:14;;:21;;;;;;;;;;;;;;;;;;32220:15;32203:14;:32;;;;32119:124::o:0;17036:151::-;17125:7;17152:11;:18;17164:5;17152:18;;;;;;;;;;;;;;;:27;17171:7;17152:27;;;;;;;;;;;;;;;;17145:34;;17036:151;;;;:::o;8860:201::-;7847:13;:11;:13::i;:::-;8969:1:::1;8949:22;;:8;:22;;::::0;8941:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;9025:28;9044:8;9025:18;:28::i;:::-;8860:201:::0;:::o;31373:716::-;7847:13;:11;:13::i;:::-;31453:25:::1;31481:21;31453:49;;31550:16;31576;;;;;;;;;;;31569:34;;;31612:4;31569:49;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31550:68;;31651:1;31637:11;:15;31629:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;31700:16;;;;;;;;;;;31693:32;;;31734:15;;;;;;;;;;;31752:11;31693:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;31826:15;;;;;;;;;;;31807:51;;;31880:20;31934:16;;;;;;;;;;;31966:11;31992:1;32008::::0;32024:10:::1;32067:3;32049:15;:21;;;;:::i;:::-;31807:274;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;31410:679;;31373:716::o:0;6512:98::-;6565:7;6592:10;6585:17;;6512:98;:::o;23692:346::-;23811:1;23794:19;;:5;:19;;;23786:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23892:1;23873:21;;:7;:21;;;23865:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23976:6;23946:11;:18;23958:5;23946:18;;;;;;;;;;;;;;;:27;23965:7;23946:27;;;;;;;;;;;;;;;:36;;;;24014:7;23998:32;;24007:5;23998:32;;;24023:6;23998:32;;;;;;:::i;:::-;;;;;;;;23692:346;;;:::o;8126:132::-;8201:12;:10;:12::i;:::-;8190:23;;:7;:5;:7::i;:::-;:23;;;8182:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8126:132::o;20605:806::-;20718:1;20702:18;;:4;:18;;;20694:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20795:1;20781:16;;:2;:16;;;20773:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;20850:38;20871:4;20877:2;20881:6;20850:20;:38::i;:::-;20901:19;20923:9;:15;20933:4;20923:15;;;;;;;;;;;;;;;;20901:37;;20972:6;20957:11;:21;;20949:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;21089:6;21075:11;:20;21057:9;:15;21067:4;21057:15;;;;;;;;;;;;;;;:38;;;;21292:6;21275:9;:13;21285:2;21275:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;21342:2;21327:26;;21336:4;21327:26;;;21346:6;21327:26;;;;;;:::i;:::-;;;;;;;;21366:37;21386:4;21392:2;21396:6;21366:19;:37::i;:::-;20683:728;20605:806;;;:::o;9221:191::-;9295:16;9314:6;;;;;;;;;;;9295:25;;9340:8;9331:6;;:17;;;;;;;;;;;;;;;;;;9395:8;9364:40;;9385:8;9364:40;;;;;;;;;;;;9284:128;9221:191;:::o;25348:91::-;;;;:::o;26043:90::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:117::-;3890:1;3887;3880:12;3904:117;4013:1;4010;4003:12;4027:117;4136:1;4133;4126:12;4167:568;4240:8;4250:6;4300:3;4293:4;4285:6;4281:17;4277:27;4267:122;;4308:79;;:::i;:::-;4267:122;4421:6;4408:20;4398:30;;4451:18;4443:6;4440:30;4437:117;;;4473:79;;:::i;:::-;4437:117;4587:4;4579:6;4575:17;4563:29;;4641:3;4633:4;4625:6;4621:17;4611:8;4607:32;4604:41;4601:128;;;4648:79;;:::i;:::-;4601:128;4167:568;;;;;:::o;4741:559::-;4827:6;4835;4884:2;4872:9;4863:7;4859:23;4855:32;4852:119;;;4890:79;;:::i;:::-;4852:119;5038:1;5027:9;5023:17;5010:31;5068:18;5060:6;5057:30;5054:117;;;5090:79;;:::i;:::-;5054:117;5203:80;5275:7;5266:6;5255:9;5251:22;5203:80;:::i;:::-;5185:98;;;;4981:312;4741:559;;;;;:::o;5306:60::-;5334:3;5355:5;5348:12;;5306:60;;;:::o;5372:142::-;5422:9;5455:53;5473:34;5482:24;5500:5;5482:24;:::i;:::-;5473:34;:::i;:::-;5455:53;:::i;:::-;5442:66;;5372:142;;;:::o;5520:126::-;5570:9;5603:37;5634:5;5603:37;:::i;:::-;5590:50;;5520:126;;;:::o;5652:152::-;5728:9;5761:37;5792:5;5761:37;:::i;:::-;5748:50;;5652:152;;;:::o;5810:183::-;5923:63;5980:5;5923:63;:::i;:::-;5918:3;5911:76;5810:183;;:::o;5999:274::-;6118:4;6156:2;6145:9;6141:18;6133:26;;6169:97;6263:1;6252:9;6248:17;6239:6;6169:97;:::i;:::-;5999:274;;;;:::o;6279:118::-;6366:24;6384:5;6366:24;:::i;:::-;6361:3;6354:37;6279:118;;:::o;6403:222::-;6496:4;6534:2;6523:9;6519:18;6511:26;;6547:71;6615:1;6604:9;6600:17;6591:6;6547:71;:::i;:::-;6403:222;;;;:::o;6631:118::-;6718:24;6736:5;6718:24;:::i;:::-;6713:3;6706:37;6631:118;;:::o;6755:222::-;6848:4;6886:2;6875:9;6871:18;6863:26;;6899:71;6967:1;6956:9;6952:17;6943:6;6899:71;:::i;:::-;6755:222;;;;:::o;6983:619::-;7060:6;7068;7076;7125:2;7113:9;7104:7;7100:23;7096:32;7093:119;;;7131:79;;:::i;:::-;7093:119;7251:1;7276:53;7321:7;7312:6;7301:9;7297:22;7276:53;:::i;:::-;7266:63;;7222:117;7378:2;7404:53;7449:7;7440:6;7429:9;7425:22;7404:53;:::i;:::-;7394:63;;7349:118;7506:2;7532:53;7577:7;7568:6;7557:9;7553:22;7532:53;:::i;:::-;7522:63;;7477:118;6983:619;;;;;:::o;7608:86::-;7643:7;7683:4;7676:5;7672:16;7661:27;;7608:86;;;:::o;7700:112::-;7783:22;7799:5;7783:22;:::i;:::-;7778:3;7771:35;7700:112;;:::o;7818:214::-;7907:4;7945:2;7934:9;7930:18;7922:26;;7958:67;8022:1;8011:9;8007:17;7998:6;7958:67;:::i;:::-;7818:214;;;;:::o;8038:329::-;8097:6;8146:2;8134:9;8125:7;8121:23;8117:32;8114:119;;;8152:79;;:::i;:::-;8114:119;8272:1;8297:53;8342:7;8333:6;8322:9;8318:22;8297:53;:::i;:::-;8287:63;;8243:117;8038:329;;;;:::o;8373:474::-;8441:6;8449;8498:2;8486:9;8477:7;8473:23;8469:32;8466:119;;;8504:79;;:::i;:::-;8466:119;8624:1;8649:53;8694:7;8685:6;8674:9;8670:22;8649:53;:::i;:::-;8639:63;;8595:117;8751:2;8777:53;8822:7;8813:6;8802:9;8798:22;8777:53;:::i;:::-;8767:63;;8722:118;8373:474;;;;;:::o;8853:180::-;8901:77;8898:1;8891:88;8998:4;8995:1;8988:15;9022:4;9019:1;9012:15;9039:320;9083:6;9120:1;9114:4;9110:12;9100:22;;9167:1;9161:4;9157:12;9188:18;9178:81;;9244:4;9236:6;9232:17;9222:27;;9178:81;9306:2;9298:6;9295:14;9275:18;9272:38;9269:84;;9325:18;;:::i;:::-;9269:84;9090:269;9039:320;;;:::o;9365:180::-;9413:77;9410:1;9403:88;9510:4;9507:1;9500:15;9534:4;9531:1;9524:15;9551:180;9599:77;9596:1;9589:88;9696:4;9693:1;9686:15;9720:4;9717:1;9710:15;9737:233;9776:3;9799:24;9817:5;9799:24;:::i;:::-;9790:33;;9845:66;9838:5;9835:77;9832:103;;9915:18;;:::i;:::-;9832:103;9962:1;9955:5;9951:13;9944:20;;9737:233;;;:::o;9976:143::-;10033:5;10064:6;10058:13;10049:22;;10080:33;10107:5;10080:33;:::i;:::-;9976:143;;;;:::o;10125:351::-;10195:6;10244:2;10232:9;10223:7;10219:23;10215:32;10212:119;;;10250:79;;:::i;:::-;10212:119;10370:1;10395:64;10451:7;10442:6;10431:9;10427:22;10395:64;:::i;:::-;10385:74;;10341:128;10125:351;;;;:::o;10482:191::-;10522:3;10541:20;10559:1;10541:20;:::i;:::-;10536:25;;10575:20;10593:1;10575:20;:::i;:::-;10570:25;;10618:1;10615;10611:9;10604:16;;10639:3;10636:1;10633:10;10630:36;;;10646:18;;:::i;:::-;10630:36;10482:191;;;;:::o;10679:173::-;10819:25;10815:1;10807:6;10803:14;10796:49;10679:173;:::o;10858:366::-;11000:3;11021:67;11085:2;11080:3;11021:67;:::i;:::-;11014:74;;11097:93;11186:3;11097:93;:::i;:::-;11215:2;11210:3;11206:12;11199:19;;10858:366;;;:::o;11230:419::-;11396:4;11434:2;11423:9;11419:18;11411:26;;11483:9;11477:4;11473:20;11469:1;11458:9;11454:17;11447:47;11511:131;11637:4;11511:131;:::i;:::-;11503:139;;11230:419;;;:::o;11655:227::-;11795:34;11791:1;11783:6;11779:14;11772:58;11864:10;11859:2;11851:6;11847:15;11840:35;11655:227;:::o;11888:366::-;12030:3;12051:67;12115:2;12110:3;12051:67;:::i;:::-;12044:74;;12127:93;12216:3;12127:93;:::i;:::-;12245:2;12240:3;12236:12;12229:19;;11888:366;;;:::o;12260:419::-;12426:4;12464:2;12453:9;12449:18;12441:26;;12513:9;12507:4;12503:20;12499:1;12488:9;12484:17;12477:47;12541:131;12667:4;12541:131;:::i;:::-;12533:139;;12260:419;;;:::o;12685:194::-;12725:4;12745:20;12763:1;12745:20;:::i;:::-;12740:25;;12779:20;12797:1;12779:20;:::i;:::-;12774:25;;12823:1;12820;12816:9;12808:17;;12847:1;12841:4;12838:11;12835:37;;;12852:18;;:::i;:::-;12835:37;12685:194;;;;:::o;12885:223::-;13025:34;13021:1;13013:6;13009:14;13002:58;13094:6;13089:2;13081:6;13077:15;13070:31;12885:223;:::o;13114:366::-;13256:3;13277:67;13341:2;13336:3;13277:67;:::i;:::-;13270:74;;13353:93;13442:3;13353:93;:::i;:::-;13471:2;13466:3;13462:12;13455:19;;13114:366;;;:::o;13486:419::-;13652:4;13690:2;13679:9;13675:18;13667:26;;13739:9;13733:4;13729:20;13725:1;13714:9;13710:17;13703:47;13767:131;13893:4;13767:131;:::i;:::-;13759:139;;13486:419;;;:::o;13911:181::-;14051:33;14047:1;14039:6;14035:14;14028:57;13911:181;:::o;14098:366::-;14240:3;14261:67;14325:2;14320:3;14261:67;:::i;:::-;14254:74;;14337:93;14426:3;14337:93;:::i;:::-;14455:2;14450:3;14446:12;14439:19;;14098:366;;;:::o;14470:419::-;14636:4;14674:2;14663:9;14659:18;14651:26;;14723:9;14717:4;14713:20;14709:1;14698:9;14694:17;14687:47;14751:131;14877:4;14751:131;:::i;:::-;14743:139;;14470:419;;;:::o;14895:224::-;15035:34;15031:1;15023:6;15019:14;15012:58;15104:7;15099:2;15091:6;15087:15;15080:32;14895:224;:::o;15125:366::-;15267:3;15288:67;15352:2;15347:3;15288:67;:::i;:::-;15281:74;;15364:93;15453:3;15364:93;:::i;:::-;15482:2;15477:3;15473:12;15466:19;;15125:366;;;:::o;15497:419::-;15663:4;15701:2;15690:9;15686:18;15678:26;;15750:9;15744:4;15740:20;15736:1;15725:9;15721:17;15714:47;15778:131;15904:4;15778:131;:::i;:::-;15770:139;;15497:419;;;:::o;15922:228::-;16062:34;16058:1;16050:6;16046:14;16039:58;16131:11;16126:2;16118:6;16114:15;16107:36;15922:228;:::o;16156:366::-;16298:3;16319:67;16383:2;16378:3;16319:67;:::i;:::-;16312:74;;16395:93;16484:3;16395:93;:::i;:::-;16513:2;16508:3;16504:12;16497:19;;16156:366;;;:::o;16528:419::-;16694:4;16732:2;16721:9;16717:18;16709:26;;16781:9;16775:4;16771:20;16767:1;16756:9;16752:17;16745:47;16809:131;16935:4;16809:131;:::i;:::-;16801:139;;16528:419;;;:::o;16953:178::-;17093:30;17089:1;17081:6;17077:14;17070:54;16953:178;:::o;17137:366::-;17279:3;17300:67;17364:2;17359:3;17300:67;:::i;:::-;17293:74;;17376:93;17465:3;17376:93;:::i;:::-;17494:2;17489:3;17485:12;17478:19;;17137:366;;;:::o;17509:419::-;17675:4;17713:2;17702:9;17698:18;17690:26;;17762:9;17756:4;17752:20;17748:1;17737:9;17733:17;17726:47;17790:131;17916:4;17790:131;:::i;:::-;17782:139;;17509:419;;;:::o;17934:225::-;18074:34;18070:1;18062:6;18058:14;18051:58;18143:8;18138:2;18130:6;18126:15;18119:33;17934:225;:::o;18165:366::-;18307:3;18328:67;18392:2;18387:3;18328:67;:::i;:::-;18321:74;;18404:93;18493:3;18404:93;:::i;:::-;18522:2;18517:3;18513:12;18506:19;;18165:366;;;:::o;18537:419::-;18703:4;18741:2;18730:9;18726:18;18718:26;;18790:9;18784:4;18780:20;18776:1;18765:9;18761:17;18754:47;18818:131;18944:4;18818:131;:::i;:::-;18810:139;;18537:419;;;:::o;18962:175::-;19102:27;19098:1;19090:6;19086:14;19079:51;18962:175;:::o;19143:366::-;19285:3;19306:67;19370:2;19365:3;19306:67;:::i;:::-;19299:74;;19382:93;19471:3;19382:93;:::i;:::-;19500:2;19495:3;19491:12;19484:19;;19143:366;;;:::o;19515:419::-;19681:4;19719:2;19708:9;19704:18;19696:26;;19768:9;19762:4;19758:20;19754:1;19743:9;19739:17;19732:47;19796:131;19922:4;19796:131;:::i;:::-;19788:139;;19515:419;;;:::o;19940:332::-;20061:4;20099:2;20088:9;20084:18;20076:26;;20112:71;20180:1;20169:9;20165:17;20156:6;20112:71;:::i;:::-;20193:72;20261:2;20250:9;20246:18;20237:6;20193:72;:::i;:::-;19940:332;;;;;:::o;20278:116::-;20348:21;20363:5;20348:21;:::i;:::-;20341:5;20338:32;20328:60;;20384:1;20381;20374:12;20328:60;20278:116;:::o;20400:137::-;20454:5;20485:6;20479:13;20470:22;;20501:30;20525:5;20501:30;:::i;:::-;20400:137;;;;:::o;20543:345::-;20610:6;20659:2;20647:9;20638:7;20634:23;20630:32;20627:119;;;20665:79;;:::i;:::-;20627:119;20785:1;20810:61;20863:7;20854:6;20843:9;20839:22;20810:61;:::i;:::-;20800:71;;20756:125;20543:345;;;;:::o;20894:85::-;20939:7;20968:5;20957:16;;20894:85;;;:::o;20985:158::-;21043:9;21076:61;21094:42;21103:32;21129:5;21103:32;:::i;:::-;21094:42;:::i;:::-;21076:61;:::i;:::-;21063:74;;20985:158;;;:::o;21149:147::-;21244:45;21283:5;21244:45;:::i;:::-;21239:3;21232:58;21149:147;;:::o;21302:807::-;21551:4;21589:3;21578:9;21574:19;21566:27;;21603:71;21671:1;21660:9;21656:17;21647:6;21603:71;:::i;:::-;21684:72;21752:2;21741:9;21737:18;21728:6;21684:72;:::i;:::-;21766:80;21842:2;21831:9;21827:18;21818:6;21766:80;:::i;:::-;21856;21932:2;21921:9;21917:18;21908:6;21856:80;:::i;:::-;21946:73;22014:3;22003:9;21999:19;21990:6;21946:73;:::i;:::-;22029;22097:3;22086:9;22082:19;22073:6;22029:73;:::i;:::-;21302:807;;;;;;;;;:::o;22115:663::-;22203:6;22211;22219;22268:2;22256:9;22247:7;22243:23;22239:32;22236:119;;;22274:79;;:::i;:::-;22236:119;22394:1;22419:64;22475:7;22466:6;22455:9;22451:22;22419:64;:::i;:::-;22409:74;;22365:128;22532:2;22558:64;22614:7;22605:6;22594:9;22590:22;22558:64;:::i;:::-;22548:74;;22503:129;22671:2;22697:64;22753:7;22744:6;22733:9;22729:22;22697:64;:::i;:::-;22687:74;;22642:129;22115:663;;;;;:::o;22784:223::-;22924:34;22920:1;22912:6;22908:14;22901:58;22993:6;22988:2;22980:6;22976:15;22969:31;22784:223;:::o;23013:366::-;23155:3;23176:67;23240:2;23235:3;23176:67;:::i;:::-;23169:74;;23252:93;23341:3;23252:93;:::i;:::-;23370:2;23365:3;23361:12;23354:19;;23013:366;;;:::o;23385:419::-;23551:4;23589:2;23578:9;23574:18;23566:26;;23638:9;23632:4;23628:20;23624:1;23613:9;23609:17;23602:47;23666:131;23792:4;23666:131;:::i;:::-;23658:139;;23385:419;;;:::o;23810:221::-;23950:34;23946:1;23938:6;23934:14;23927:58;24019:4;24014:2;24006:6;24002:15;23995:29;23810:221;:::o;24037:366::-;24179:3;24200:67;24264:2;24259:3;24200:67;:::i;:::-;24193:74;;24276:93;24365:3;24276:93;:::i;:::-;24394:2;24389:3;24385:12;24378:19;;24037:366;;;:::o;24409:419::-;24575:4;24613:2;24602:9;24598:18;24590:26;;24662:9;24656:4;24652:20;24648:1;24637:9;24633:17;24626:47;24690:131;24816:4;24690:131;:::i;:::-;24682:139;;24409:419;;;:::o;24834:182::-;24974:34;24970:1;24962:6;24958:14;24951:58;24834:182;:::o;25022:366::-;25164:3;25185:67;25249:2;25244:3;25185:67;:::i;:::-;25178:74;;25261:93;25350:3;25261:93;:::i;:::-;25379:2;25374:3;25370:12;25363:19;;25022:366;;;:::o;25394:419::-;25560:4;25598:2;25587:9;25583:18;25575:26;;25647:9;25641:4;25637:20;25633:1;25622:9;25618:17;25611:47;25675:131;25801:4;25675:131;:::i;:::-;25667:139;;25394:419;;;:::o;25819:224::-;25959:34;25955:1;25947:6;25943:14;25936:58;26028:7;26023:2;26015:6;26011:15;26004:32;25819:224;:::o;26049:366::-;26191:3;26212:67;26276:2;26271:3;26212:67;:::i;:::-;26205:74;;26288:93;26377:3;26288:93;:::i;:::-;26406:2;26401:3;26397:12;26390:19;;26049:366;;;:::o;26421:419::-;26587:4;26625:2;26614:9;26610:18;26602:26;;26674:9;26668:4;26664:20;26660:1;26649:9;26645:17;26638:47;26702:131;26828:4;26702:131;:::i;:::-;26694:139;;26421:419;;;:::o;26846:222::-;26986:34;26982:1;26974:6;26970:14;26963:58;27055:5;27050:2;27042:6;27038:15;27031:30;26846:222;:::o;27074:366::-;27216:3;27237:67;27301:2;27296:3;27237:67;:::i;:::-;27230:74;;27313:93;27402:3;27313:93;:::i;:::-;27431:2;27426:3;27422:12;27415:19;;27074:366;;;:::o;27446:419::-;27612:4;27650:2;27639:9;27635:18;27627:26;;27699:9;27693:4;27689:20;27685:1;27674:9;27670:17;27663:47;27727:131;27853:4;27727:131;:::i;:::-;27719:139;;27446:419;;;:::o;27871:225::-;28011:34;28007:1;27999:6;27995:14;27988:58;28080:8;28075:2;28067:6;28063:15;28056:33;27871:225;:::o;28102:366::-;28244:3;28265:67;28329:2;28324:3;28265:67;:::i;:::-;28258:74;;28341:93;28430:3;28341:93;:::i;:::-;28459:2;28454:3;28450:12;28443:19;;28102:366;;;:::o;28474:419::-;28640:4;28678:2;28667:9;28663:18;28655:26;;28727:9;28721:4;28717:20;28713:1;28702:9;28698:17;28691:47;28755:131;28881:4;28755:131;:::i;:::-;28747:139;;28474:419;;;:::o
Swarm Source
ipfs://c2dc708ae7fd5ca89cd836b3e2c1b12db0d8e36e686cce1596d859b8a78ef963
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.