More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 94 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 21427998 | 28 days ago | IN | 0 ETH | 0.00023981 | ||||
Approve | 21427998 | 28 days ago | IN | 0 ETH | 0.00023981 | ||||
Approve | 16797480 | 676 days ago | IN | 0 ETH | 0.00061929 | ||||
Transfer | 14496044 | 1020 days ago | IN | 0 ETH | 0.00312313 | ||||
Approve | 14474103 | 1023 days ago | IN | 0 ETH | 0.00148872 | ||||
Force Swap | 14456017 | 1026 days ago | IN | 0 ETH | 0.00861614 | ||||
Approve | 14453000 | 1027 days ago | IN | 0 ETH | 0.00144306 | ||||
Approve | 14452516 | 1027 days ago | IN | 0 ETH | 0.00188911 | ||||
Force Swap | 14452411 | 1027 days ago | IN | 0 ETH | 0.00473334 | ||||
Transfer | 14452403 | 1027 days ago | IN | 0 ETH | 0.00186764 | ||||
Force Swap | 14452385 | 1027 days ago | IN | 0 ETH | 0.00147772 | ||||
Force Swap | 14452385 | 1027 days ago | IN | 0 ETH | 0.00415074 | ||||
Set Blacklisted | 14452385 | 1027 days ago | IN | 0 ETH | 0.00082198 | ||||
Set Blacklisted | 14452385 | 1027 days ago | IN | 0 ETH | 0.00135713 | ||||
Set Blacklisted | 14452385 | 1027 days ago | IN | 0 ETH | 0.00135681 | ||||
Set Blacklisted | 14452385 | 1027 days ago | IN | 0 ETH | 0.00133326 | ||||
Transfer | 14452206 | 1027 days ago | IN | 0 ETH | 0.00225029 | ||||
Approve | 14452201 | 1027 days ago | IN | 0 ETH | 0.0015785 | ||||
Set Blacklisted | 14452052 | 1027 days ago | IN | 0 ETH | 0.00155019 | ||||
Set Blacklisted | 14452007 | 1027 days ago | IN | 0 ETH | 0.00193205 | ||||
Force Swap | 14451941 | 1027 days ago | IN | 0 ETH | 0.00507425 | ||||
Set Blacklisted | 14451916 | 1027 days ago | IN | 0 ETH | 0.00184565 | ||||
Set Blacklisted | 14451906 | 1027 days ago | IN | 0 ETH | 0.00111506 | ||||
Set Blacklisted | 14451906 | 1027 days ago | IN | 0 ETH | 0.00184103 | ||||
Set Blacklisted | 14451846 | 1027 days ago | IN | 0 ETH | 0.00110352 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
14456017 | 1026 days ago | 0.09736711 ETH | ||||
14456017 | 1026 days ago | 0.09736711 ETH | ||||
14452411 | 1027 days ago | 0.24531136 ETH | ||||
14452411 | 1027 days ago | 0.24531136 ETH | ||||
14452385 | 1027 days ago | 0.28190592 ETH | ||||
14452385 | 1027 days ago | 0.28190592 ETH | ||||
14451941 | 1027 days ago | 0.04997757 ETH | ||||
14451941 | 1027 days ago | 0.04646513 ETH | ||||
14451717 | 1027 days ago | 0.00351243 ETH | ||||
14451717 | 1027 days ago | 0.00876318 ETH | ||||
14451717 | 1027 days ago | 0.00829404 ETH | ||||
14451717 | 1027 days ago | 0.00897784 ETH | ||||
14451717 | 1027 days ago | 0.02603506 ETH | ||||
14451628 | 1027 days ago | 0.34516094 ETH | ||||
14451628 | 1027 days ago | 0.34516094 ETH | ||||
14451618 | 1027 days ago | 0.19284488 ETH | ||||
14451253 | 1027 days ago | 0.19284488 ETH | ||||
14451253 | 1027 days ago | 0.19858451 ETH | ||||
14451253 | 1027 days ago | 0.00487456 ETH | ||||
14451253 | 1027 days ago | 0.01706097 ETH | ||||
14451253 | 1027 days ago | 0.03168467 ETH | ||||
14451253 | 1027 days ago | 0.18883538 ETH | ||||
14451253 | 1027 days ago | 0.19465226 ETH | ||||
14451253 | 1027 days ago | 0.00494045 ETH | ||||
14451253 | 1027 days ago | 0.01729157 ETH |
Loading...
Loading
Contract Name:
GOUDA
Compiler Version
v0.8.12+commit.f00d7308
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-03-15 */ // SPDX-License-Identifier: MIT pragma solidity 0.8.12; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `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); /** * @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); } 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); } 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}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * 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 value {ERC20} uses, unless this function is * 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, _allowances[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 = _allowances[owner][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `amount` of tokens from `sender` to `recipient`. * * 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; } _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; _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; } _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 Spend `amount` form the allowance of `owner` toward `spender`. * * 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 {} } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface 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; } 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 Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _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); } } library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } contract GOUDA is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 private uniswapV2Router; address private uniswapV2Pair; address payable private marketingWallet = payable(0xbf9B9DB9a6eC3D20BCD5C7Fd0a77Aa72Da701878); address payable private devWallet = payable(0xE3d79B166118227D5BB4ED17b7B7e2E23fCAc7C9); address private burnWallet = 0x000000000000000000000000000000000000dEaD; mapping (address => bool) private _isBlacklisted; // Anti-bot and anti-whale mappings and variables mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch // exlcude from fees and max transaction amount mapping (address => bool) private _isExcludedFromFees; mapping (address => bool) private _isExcludedMaxTransactionAmount; // store addresses that a automatic market maker pairs. Any transfer *to* these addresses // could be subject to a maximum transfer amount mapping (address => bool) private automatedMarketMakerPairs; bool public limitsInEffect = true; bool public tradingActive = false; bool private _swapping; bool public transferDelayEnabled = true; uint8 private _marketingFee = 6; uint8 private _liquidityFee = 3 ; uint8 private _devFee = 2; uint8 private _burnFee = 2; uint8 private _sellFee = 1; uint8 constant DECIMALS = 9; uint8 public _penaltyHours = 8; uint256 public maxTransactionAmount; uint256 public swapTokensAtAmount; uint256 public maxWallet; uint256 public _launchTime; uint256 private _tokensForMarketing; uint256 private _tokensForLiquidity; uint256 private _tokensForCharity; uint256 private _tokensForDev; event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event marketingWalletUpdated(address indexed newWallet, address indexed oldWallet); event devWalletUpdated(address indexed newWallet, address indexed oldWallet); event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity); constructor() ERC20("Gouda Token", "GOUDA") { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); excludeFromMaxTransaction(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); excludeFromMaxTransaction(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); uint256 totalSupply = 2e12 * 1e9; maxTransactionAmount = totalSupply / 200; maxWallet = maxTransactionAmount * 4 ; swapTokensAtAmount = maxTransactionAmount / 2; _launchTime = block.timestamp.add(90000); // exclude from paying fees or having max transaction amount excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); /* _mint is an internal function in ERC20.sol that is only called here, and CANNOT be called ever again */ _mint(msg.sender, totalSupply*90/200); _mint(burnWallet, totalSupply/2); _mint(devWallet, totalSupply*5/200); _mint(marketingWallet, totalSupply*5/200); } function decimals() public view virtual override returns (uint8) { return DECIMALS; } // once enabled, can never be turned off function enableTrading() external onlyOwner { tradingActive = true; _launchTime = block.timestamp.add(2); _marketingFee = 7; _liquidityFee = 2; _devFee = 4; _burnFee = 1; } // remove limits after token is stable function removeLimits() external onlyOwner returns (bool) { limitsInEffect = false; return true; } // disable Transfer delay - cannot be reenabled function disableTransferDelay() external onlyOwner returns (bool) { transferDelayEnabled = false; return true; } function changePenaltyTime(uint8 penaltyHours) external onlyOwner returns (bool) { require( penaltyHours < _penaltyHours, "Penalty Hours can not be increased"); _penaltyHours = penaltyHours; return true; } // change the minimum amount of tokens to sell from fees function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool) { require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply."); require(newAmount <= totalSupply() * 5 / 1000, "Swap amount cannot be higher than 0.5% total supply."); swapTokensAtAmount = newAmount; return true; } function updateMaxTxnAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 1 / 1000) / 1e18, "Cannot set maxTransactionAmount lower than 0.1%"); maxTransactionAmount = newNum * 1e18; } function updateMaxWalletAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 5 / 1000)/1e18, "Cannot set maxWallet lower than 0.5%"); maxWallet = newNum * 1e18; } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } function updateFees(uint8 marketingFee, uint8 liquidityFee, uint8 devFee, uint8 penaltyHours) external onlyOwner { require(_marketingFee + _liquidityFee + _devFee + _devFee <= 25, "Must keep fees at 10% or less"); _marketingFee = marketingFee; _liquidityFee = liquidityFee; _devFee = devFee; _penaltyHours = penaltyHours; } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs"); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function updateMarketingWallet(address newWallet) external onlyOwner { emit marketingWalletUpdated(newWallet, marketingWallet); marketingWallet = payable(newWallet); } function updateDevWallet(address newWallet) external onlyOwner { emit devWalletUpdated(newWallet, devWallet); devWallet = payable(newWallet); } function isExcludedFromFees(address account) public view returns(bool) { return _isExcludedFromFees[account]; } function setBlacklisted(address blacklisted_) public onlyOwner { if (blacklisted_ != uniswapV2Pair && blacklisted_ != address(uniswapV2Router)) _isBlacklisted[blacklisted_] = true; } function delBlacklisted(address blacklisted_) public onlyOwner { _isBlacklisted[blacklisted_] = false; } function isSniper(address addr) public view returns (bool) { return _isBlacklisted[addr]; } function isContract(address account) public view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint size; assembly { size := extcodesize(account) } return size > 0; } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); if (amount == 0) { super._transfer(from, to, 0); return; } // Burn baby burn! 🔥 if (!_isExcludedFromFees[from] && !_isExcludedFromFees[to]) { uint256 burnAmount = amount.div(100); //super._transfer(from, burnWallet, burnAmount); _burn(from, burnAmount); amount -= burnAmount; } if (limitsInEffect) { if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !_swapping ) { if (!tradingActive || isContract(to)){ _isBlacklisted[to] = true; } // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch. if (transferDelayEnabled){ if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)){ require(_holderLastTransferTimestamp[tx.origin] + 30 < block.timestamp, "_transfer:: Transfer Delay enabled. Only one purchase per block allowed."); if ( _holderLastTransferTimestamp[tx.origin] == 0 ) _holderLastTransferTimestamp[tx.origin] = block.timestamp; } } // when buy if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) { require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount."); require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } // when sell else { require(!_isBlacklisted[from], "Your address has been marked as a sniper, you are unable to transfer or swap."); if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount."); else if (!_isExcludedMaxTransactionAmount[to]) require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if ( canSwap && !_swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { _swapping = true; swapBack(); _swapping = false; } bool takeFee = !_swapping; // if any account belongs to _isExcludedFromFee account then remove the fee if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) takeFee = false; uint256 fees; uint256 sellFee = _sellFee; uint256 devFee = _devFee; uint256 marketingFee = _marketingFee; uint256 liquidityFee = _liquidityFee; if ( automatedMarketMakerPairs[to] ){ // selling sellFee = 1; if ( _holderLastTransferTimestamp[tx.origin] + ( 3600 * _penaltyHours ) > block.timestamp ){ devFee += 3; marketingFee += 3; liquidityFee += 2; } } if ( _isBlacklisted[to] ) { devFee = 25; marketingFee = 25; liquidityFee = 25; } // only take fees on buys/sells, do not take on wallet transfers if (takeFee) { marketingFee += _sellFee; liquidityFee += sellFee; devFee = _devFee; uint256 totalFees = marketingFee + liquidityFee + devFee + sellFee + sellFee; fees = amount.mul(totalFees).div(100); _tokensForLiquidity += fees * liquidityFee / totalFees; _tokensForDev += fees * devFee / totalFees; _tokensForMarketing += fees * marketingFee / totalFees; super._transfer(from, address(this), fees); amount -= fees; } super._transfer(from, to, amount); // super._balances[from] = initialFromBalance - amount; } function _swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function _addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner(), block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = _tokensForLiquidity + _tokensForMarketing + _tokensForDev; if (contractBalance == 0 || totalTokensToSwap == 0) return; if (contractBalance > swapTokensAtAmount) { contractBalance = swapTokensAtAmount; } // Halve the amount of liquidity tokens uint256 liquidityTokens = contractBalance * _tokensForLiquidity / totalTokensToSwap / 2; uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens); uint256 initialETHBalance = address(this).balance; _swapTokensForEth(amountToSwapForETH); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForMarketing = ethBalance.mul(_tokensForMarketing).div(totalTokensToSwap); uint256 ethForDev = ethBalance.mul(_tokensForDev).div(totalTokensToSwap); uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev; _tokensForLiquidity = 0; _tokensForMarketing = 0; _tokensForDev = 0; payable(marketingWallet).transfer(ethForMarketing); payable(devWallet).transfer(ethForDev); if (liquidityTokens > 0 && ethForLiquidity > 0) { _addLiquidity(liquidityTokens, address(this).balance); emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, _tokensForLiquidity); } } function forceSwap() external onlyOwner { _swapTokensForEth(balanceOf(address(this))); payable(marketingWallet).transfer(address(this).balance); } function forceSend() external onlyOwner { payable(marketingWallet).transfer(address(this).balance); } receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[],"name":"_launchTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_penaltyHours","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"penaltyHours","type":"uint8"}],"name":"changePenaltyTime","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","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":"blacklisted_","type":"address"}],"name":"delBlacklisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"forceSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"forceSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isContract","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"isSniper","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"blacklisted_","type":"address"}],"name":"setBlacklisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"marketingFee","type":"uint8"},{"internalType":"uint8","name":"liquidityFee","type":"uint8"},{"internalType":"uint8","name":"devFee","type":"uint8"},{"internalType":"uint8","name":"penaltyHours","type":"uint8"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600880546001600160a01b031990811673bf9b9db9a6ec3d20bcd5c7fd0a77aa72da7018781790915560098054821673e3d79b166118227d5bb4ed17b7b7e2e23fcac7c9179055600a805490911661dead17905560108054690801020203060100000162ff0001600160501b03199091161790553480156200008557600080fd5b50604080518082018252600b81526a23b7bab230902a37b5b2b760a91b602080830191825283518085019094526005845264474f55444160d81b908401528151919291620000d69160039162000700565b508051620000ec90600490602084019062000700565b50505062000109620001036200043860201b60201c565b6200043c565b737a250d5630b4cf539739df2c5dacb4c659f2488d6200012b8160016200048e565b600680546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000185573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ab9190620007a6565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001f9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200021f9190620007a6565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200026d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002939190620007a6565b600780546001600160a01b0319166001600160a01b03929092169182179055620002bf9060016200048e565b600754620002d8906001600160a01b0316600162000508565b686c6b935b8bbd400000620002ef60c882620007e7565b6011819055620003019060046200080a565b6013556011546200031590600290620007e7565b601255620003334262015f906200055c602090811b6200199e17901c565b601455620003556200034d6005546001600160a01b031690565b600162000571565b6200036230600162000571565b6200037161dead600162000571565b62000390620003886005546001600160a01b031690565b60016200048e565b6200039d3060016200048e565b620003ac61dead60016200048e565b620003d23360c8620003c084605a6200080a565b620003cc9190620007e7565b6200061b565b600a54620003f0906001600160a01b0316620003cc600284620007e7565b60095462000410906001600160a01b031660c8620003c08460056200080a565b60085462000430906001600160a01b031660c8620003c08460056200080a565b505062000884565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6005546001600160a01b03163314620004dd5760405162461bcd60e51b8152602060048201819052602482015260008051602062003b3683398151915260448201526064015b60405180910390fd5b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6001600160a01b0382166000818152600f6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b60006200056a82846200082c565b9392505050565b6005546001600160a01b03163314620005bc5760405162461bcd60e51b8152602060048201819052602482015260008051602062003b368339815191526044820152606401620004d4565b6001600160a01b0382166000818152600d6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620006735760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620004d4565b80600260008282546200068791906200082c565b90915550506001600160a01b03821660009081526020819052604081208054839290620006b69084906200082c565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b8280546200070e9062000847565b90600052602060002090601f0160209004810192826200073257600085556200077d565b82601f106200074d57805160ff19168380011785556200077d565b828001600101855582156200077d579182015b828111156200077d57825182559160200191906001019062000760565b506200078b9291506200078f565b5090565b5b808211156200078b576000815560010162000790565b600060208284031215620007b957600080fd5b81516001600160a01b03811681146200056a57600080fd5b634e487b7160e01b600052601160045260246000fd5b6000826200080557634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615620008275762000827620007d1565b500290565b60008219821115620008425762000842620007d1565b500190565b600181811c908216806200085c57607f821691505b602082108114156200087e57634e487b7160e01b600052602260045260246000fd5b50919050565b6132a280620008946000396000f3fe6080604052600436106102d55760003560e01c80638bb171bc11610179578063c876d0b9116100d6578063dd62ed3e1161008a578063e884f26011610064578063e884f260146107fb578063f2fde38b14610810578063f8b45b051461083057600080fd5b8063dd62ed3e1461078a578063df778d26146107d0578063e2f45605146107e557600080fd5b8063d048cd13116100bb578063d048cd131461072a578063d257b34f1461074a578063d7b7d58b1461076a57600080fd5b8063c876d0b9146106f3578063c8c8ebe41461071457600080fd5b8063a9059cbb1161012d578063bbc0c74211610112578063bbc0c74214610694578063c0246668146106b3578063c18bc195146106d357600080fd5b8063a9059cbb14610654578063aacebbe31461067457600080fd5b806395d89b411161015e57806395d89b41146105ff5780639a7a23d614610614578063a457c2d71461063457600080fd5b80638bb171bc146105b75780638da5cb5b146105d757600080fd5b806323b872dd116102325780635fe8b111116101e6578063751039fc116101c0578063751039fc1461056d5780637571336a146105825780638a8c523c146105a257600080fd5b80635fe8b111146104fb57806370a0823114610522578063715018a61461055857600080fd5b8063395093511161021757806339509351146104885780634a62bb65146104a85780634fbee193146104c257600080fd5b806323b872dd14610446578063313ce5671461046657600080fd5b806312b77e8a1161028957806318160ddd1161026e57806318160ddd146103f15780631816467f14610406578063203e727e1461042657600080fd5b806312b77e8a146103bb57806316279055146103d057600080fd5b8063095ea7b3116102ba578063095ea7b3146103305780630aa75f6b146103605780630f3a325f1461038257600080fd5b806306fdde03146102e15780630920fd8c1461030c57600080fd5b366102dc57005b600080fd5b3480156102ed57600080fd5b506102f6610846565b6040516103039190612e73565b60405180910390f35b34801561031857600080fd5b5061032260145481565b604051908152602001610303565b34801561033c57600080fd5b5061035061034b366004612efb565b6108d8565b6040519015158152602001610303565b34801561036c57600080fd5b5061038061037b366004612f38565b6108f0565b005b34801561038e57600080fd5b5061035061039d366004612f8c565b6001600160a01b03166000908152600b602052604090205460ff1690565b3480156103c757600080fd5b50610380610aab565b3480156103dc57600080fd5b506103506103eb366004612f8c565b3b151590565b3480156103fd57600080fd5b50600254610322565b34801561041257600080fd5b50610380610421366004612f8c565b610b41565b34801561043257600080fd5b50610380610441366004612fa9565b610c05565b34801561045257600080fd5b50610350610461366004612fc2565b610d20565b34801561047257600080fd5b5060095b60405160ff9091168152602001610303565b34801561049457600080fd5b506103506104a3366004612efb565b610d44565b3480156104b457600080fd5b506010546103509060ff1681565b3480156104ce57600080fd5b506103506104dd366004612f8c565b6001600160a01b03166000908152600d602052604090205460ff1690565b34801561050757600080fd5b50601054610476906901000000000000000000900460ff1681565b34801561052e57600080fd5b5061032261053d366004612f8c565b6001600160a01b031660009081526020819052604090205490565b34801561056457600080fd5b50610380610d83565b34801561057957600080fd5b50610350610de9565b34801561058e57600080fd5b5061038061059d366004613003565b610e56565b3480156105ae57600080fd5b50610380610edb565b3480156105c357600080fd5b506103806105d2366004612f8c565b610fa3565b3480156105e357600080fd5b506005546040516001600160a01b039091168152602001610303565b34801561060b57600080fd5b506102f6611054565b34801561062057600080fd5b5061038061062f366004613003565b611063565b34801561064057600080fd5b5061035061064f366004612efb565b61114f565b34801561066057600080fd5b5061035061066f366004612efb565b6111f9565b34801561068057600080fd5b5061038061068f366004612f8c565b611207565b3480156106a057600080fd5b5060105461035090610100900460ff1681565b3480156106bf57600080fd5b506103806106ce366004613003565b6112cb565b3480156106df57600080fd5b506103806106ee366004612fa9565b611384565b3480156106ff57600080fd5b50601054610350906301000000900460ff1681565b34801561072057600080fd5b5061032260115481565b34801561073657600080fd5b50610350610745366004613041565b61149e565b34801561075657600080fd5b50610350610765366004612fa9565b6115b3565b34801561077657600080fd5b50610380610785366004612f8c565b611746565b34801561079657600080fd5b506103226107a536600461305c565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156107dc57600080fd5b506103806117c1565b3480156107f157600080fd5b5061032260125481565b34801561080757600080fd5b50610350611834565b34801561081c57600080fd5b5061038061082b366004612f8c565b6118bf565b34801561083c57600080fd5b5061032260135481565b6060600380546108559061308a565b80601f01602080910402602001604051908101604052809291908181526020018280546108819061308a565b80156108ce5780601f106108a3576101008083540402835291602001916108ce565b820191906000526020600020905b8154815290600101906020018083116108b157829003601f168201915b5050505050905090565b6000336108e68185856119b1565b5060019392505050565b6005546001600160a01b0316331461094f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b60105460199060ff66010000000000008204811691829161098591650100000000008104821691640100000000909104166130db565b61098f91906130db565b61099991906130db565b60ff1611156109ea5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313025206f72206c6573730000006044820152606401610946565b601080547fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff1664010000000060ff968716027fffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff16176501000000000094861694909402939093177fffffffffffffffffffffffffffffffffffffffffffff00ffff00ffffffffffff1666010000000000009285169290920269ff00000000000000000019169190911769010000000000000000009190931602919091179055565b6005546001600160a01b03163314610b055760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610946565b6008546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610b3e573d6000803e3d6000fd5b50565b6005546001600160a01b03163314610b9b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610946565b6009546040516001600160a01b03918216918316907f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74390600090a36009805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610c5f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610946565b670de0b6b3a76400006103e8610c7460025490565b610c7f906001613100565b610c89919061311f565b610c93919061311f565b811015610d085760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201527f6c6f776572207468616e20302e312500000000000000000000000000000000006064820152608401610946565b610d1a81670de0b6b3a7640000613100565b60115550565b600033610d2e858285611b09565b610d39858585611b9b565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091906108e69082908690610d7e908790613141565b6119b1565b6005546001600160a01b03163314610ddd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610946565b610de7600061259b565b565b6005546000906001600160a01b03163314610e465760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610946565b506010805460ff19169055600190565b6005546001600160a01b03163314610eb05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610946565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610f355760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610946565b601080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055610f6c42600261199e565b601455601080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff16670104020700000000179055565b6005546001600160a01b03163314610ffd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610946565b6007546001600160a01b0382811691161480159061102957506006546001600160a01b03828116911614155b15610b3e576001600160a01b0381166000908152600b60205260409020805460ff1916600117905550565b6060600480546108559061308a565b6005546001600160a01b031633146110bd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610946565b6007546001600160a01b03838116911614156111415760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610946565b61114b82826125fa565b5050565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190838110156111ec5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610946565b610d3982868684036119b1565b6000336108e6818585611b9b565b6005546001600160a01b031633146112615760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610946565b6008546040516001600160a01b03918216918316907fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567490600090a36008805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6005546001600160a01b031633146113255760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610946565b6001600160a01b0382166000818152600d6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146113de5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610946565b670de0b6b3a76400006103e86113f360025490565b6113fe906005613100565b611408919061311f565b611412919061311f565b8110156114865760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060448201527f302e3525000000000000000000000000000000000000000000000000000000006064820152608401610946565b61149881670de0b6b3a7640000613100565b60135550565b6005546000906001600160a01b031633146114fb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610946565b60105460ff69010000000000000000009091048116908316106115865760405162461bcd60e51b815260206004820152602260248201527f50656e616c747920486f7572732063616e206e6f7420626520696e637265617360448201527f65640000000000000000000000000000000000000000000000000000000000006064820152608401610946565b506010805469ff0000000000000000001916690100000000000000000060ff84160217905560015b919050565b6005546000906001600160a01b031633146116105760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610946565b620186a061161d60025490565b611628906001613100565b611632919061311f565b8210156116a75760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527f20302e3030312520746f74616c20737570706c792e00000000000000000000006064820152608401610946565b6103e86116b360025490565b6116be906005613100565b6116c8919061311f565b82111561173d5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160448201527f6e20302e352520746f74616c20737570706c792e0000000000000000000000006064820152608401610946565b50601255600190565b6005546001600160a01b031633146117a05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610946565b6001600160a01b03166000908152600b60205260409020805460ff19169055565b6005546001600160a01b0316331461181b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610946565b30600090815260208190526040902054610b059061264e565b6005546000906001600160a01b031633146118915760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610946565b50601080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff169055600190565b6005546001600160a01b031633146119195760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610946565b6001600160a01b0381166119955760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610946565b610b3e8161259b565b60006119aa8284613141565b9392505050565b6001600160a01b038316611a2c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610946565b6001600160a01b038216611aa85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610946565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114611b955781811015611b885760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610946565b611b9584848484036119b1565b50505050565b6001600160a01b038316611c175760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610946565b6001600160a01b038216611c935760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610946565b80611ca957611ca4838360006127da565b505050565b6001600160a01b0383166000908152600d602052604090205460ff16158015611ceb57506001600160a01b0382166000908152600d602052604090205460ff16155b15611d17576000611cfd8260646129f1565b9050611d0984826129fd565b611d138183613159565b9150505b60105460ff161561224b576005546001600160a01b03848116911614801590611d4e57506005546001600160a01b03838116911614155b8015611d6257506001600160a01b03821615155b8015611d7957506001600160a01b03821661dead14155b8015611d8e575060105462010000900460ff16155b1561224b57601054610100900460ff161580611daa5750813b15155b15611dd3576001600160a01b0382166000908152600b60205260409020805460ff191660011790555b6010546301000000900460ff1615611f0d576005546001600160a01b03838116911614801590611e1157506006546001600160a01b03838116911614155b8015611e2b57506007546001600160a01b03838116911614155b15611f0d57326000908152600c60205260409020544290611e4d90601e613141565b10611ee65760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60648201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000608482015260a401610946565b326000908152600c6020526040902054611f0d57326000908152600c602052604090204290555b6001600160a01b0383166000908152600f602052604090205460ff168015611f4e57506001600160a01b0382166000908152600e602052604090205460ff16155b1561204457601154811115611fcb5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527f6d61785472616e73616374696f6e416d6f756e742e00000000000000000000006064820152608401610946565b6013546001600160a01b038316600090815260208190526040902054611ff19083613141565b111561203f5760405162461bcd60e51b815260206004820152601360248201527f4d61782077616c6c6574206578636565646564000000000000000000000000006044820152606401610946565b61224b565b6001600160a01b0383166000908152600b602052604090205460ff16156120f95760405162461bcd60e51b815260206004820152604d60248201527f596f7572206164647265737320686173206265656e206d61726b65642061732060448201527f6120736e697065722c20796f752061726520756e61626c6520746f207472616e60648201527f73666572206f7220737761702e00000000000000000000000000000000000000608482015260a401610946565b6001600160a01b0382166000908152600f602052604090205460ff16801561213a57506001600160a01b0383166000908152600e602052604090205460ff16155b156121b75760115481111561203f5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201527f206d61785472616e73616374696f6e416d6f756e742e000000000000000000006064820152608401610946565b6001600160a01b0382166000908152600e602052604090205460ff1661224b576013546001600160a01b0383166000908152602081905260409020546121fd9083613141565b111561224b5760405162461bcd60e51b815260206004820152601360248201527f4d61782077616c6c6574206578636565646564000000000000000000000000006044820152606401610946565b3060009081526020819052604090205460125481108015908190612278575060105462010000900460ff16155b801561229d57506001600160a01b0385166000908152600f602052604090205460ff16155b80156122c257506001600160a01b0385166000908152600d602052604090205460ff16155b80156122e757506001600160a01b0384166000908152600d602052604090205460ff16155b15612312576010805462ff0000191662010000179055612305612b82565b6010805462ff0000191690555b6010546001600160a01b0386166000908152600d602052604090205460ff6201000090920482161591168061235f57506001600160a01b0385166000908152600d602052604090205460ff165b15612368575060005b6010546001600160a01b0386166000908152600f6020526040812054909160ff680100000000000000008204811692660100000000000083048216926401000000008104831692650100000000009091048116911615612433576010546001945042906123e7906901000000000000000000900460ff16610e10613170565b326000908152600c60205260409020546124059161ffff1690613141565b111561243357612416600384613141565b9250612423600383613141565b9150612430600282613141565b90505b6001600160a01b038a166000908152600b602052604090205460ff161561245e575060199150819050805b8515612583576010546124809068010000000000000000900460ff1683613141565b915061248c8482613141565b6010546601000000000000900460ff169350905060008480856124af8587613141565b6124b99190613141565b6124c39190613141565b6124cd9190613141565b90506124e460646124de8c84612d6e565b906129f1565b9550806124f18388613100565b6124fb919061311f565b6016600082825461250c9190613141565b9091555081905061251d8588613100565b612527919061311f565b601860008282546125389190613141565b909155508190506125498488613100565b612553919061311f565b601560008282546125649190613141565b9091555061257590508c30886127da565b61257f868b613159565b9950505b61258e8b8b8b6127da565b5050505050505050505050565b600580546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166000818152600f6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106126835761268361319a565b6001600160a01b03928316602091820292909201810191909152600654604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa1580156126f5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061271991906131b0565b8160018151811061272c5761272c61319a565b6001600160a01b03928316602091820292909201015260065461275291309116846119b1565b6006546040517f791ac9470000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063791ac947906127a49085906000908690309042906004016131cd565b600060405180830381600087803b1580156127be57600080fd5b505af11580156127d2573d6000803e3d6000fd5b505050505050565b6001600160a01b0383166128565760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610946565b6001600160a01b0382166128d25760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610946565b6001600160a01b038316600090815260208190526040902054818110156129615760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610946565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290612998908490613141565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516129e491815260200190565b60405180910390a3611b95565b60006119aa828461311f565b6001600160a01b038216612a795760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610946565b6001600160a01b03821660009081526020819052604090205481811015612b085760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610946565b6001600160a01b0383166000908152602081905260408120838303905560028054849290612b37908490613159565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b3060009081526020819052604081205490506000601854601554601654612ba99190613141565b612bb39190613141565b9050811580612bc0575080155b15612bc9575050565b601254821115612bd95760125491505b600060028260165485612bec9190613100565b612bf6919061311f565b612c00919061311f565b90506000612c0e8483612d7a565b905047612c1a8261264e565b6000612c264783612d7a565b90506000612c43866124de60155485612d6e90919063ffffffff16565b90506000612c60876124de60185486612d6e90919063ffffffff16565b9050600081612c6f8486613159565b612c799190613159565b60006016819055601581905560188190556008546040519293506001600160a01b03169185156108fc0291869190818181858888f19350505050158015612cc4573d6000803e3d6000fd5b506009546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015612cff573d6000803e3d6000fd5b50600087118015612d105750600081115b15612d6357612d1f8747612d86565b601654604080518881526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b505050505050505050565b60006119aa8284613100565b60006119aa8284613159565b600654612d9e9030906001600160a01b0316846119b1565b6006546001600160a01b031663f305d719823085600080612dc76005546001600160a01b031690565b60405160e088901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015612e47573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612e6c919061323e565b5050505050565b600060208083528351808285015260005b81811015612ea057858101830151858201604001528201612e84565b81811115612eb2576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b6001600160a01b0381168114610b3e57600080fd5b60008060408385031215612f0e57600080fd5b8235612f1981612ee6565b946020939093013593505050565b803560ff811681146115ae57600080fd5b60008060008060808587031215612f4e57600080fd5b612f5785612f27565b9350612f6560208601612f27565b9250612f7360408601612f27565b9150612f8160608601612f27565b905092959194509250565b600060208284031215612f9e57600080fd5b81356119aa81612ee6565b600060208284031215612fbb57600080fd5b5035919050565b600080600060608486031215612fd757600080fd5b8335612fe281612ee6565b92506020840135612ff281612ee6565b929592945050506040919091013590565b6000806040838503121561301657600080fd5b823561302181612ee6565b91506020830135801515811461303657600080fd5b809150509250929050565b60006020828403121561305357600080fd5b6119aa82612f27565b6000806040838503121561306f57600080fd5b823561307a81612ee6565b9150602083013561303681612ee6565b600181811c9082168061309e57607f821691505b602082108114156130bf57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff84168060ff038211156130f8576130f86130c5565b019392505050565b600081600019048311821515161561311a5761311a6130c5565b500290565b60008261313c57634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115613154576131546130c5565b500190565b60008282101561316b5761316b6130c5565b500390565b600061ffff80831681851681830481118215151615613191576131916130c5565b02949350505050565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156131c257600080fd5b81516119aa81612ee6565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561321d5784516001600160a01b0316835293830193918301916001016131f8565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561325357600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220ab149dc8b419b4db1c9eae3442d04c17dec25cb070f2d4ab7d3791d6f1c17fa664736f6c634300080c00334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572
Deployed Bytecode
0x6080604052600436106102d55760003560e01c80638bb171bc11610179578063c876d0b9116100d6578063dd62ed3e1161008a578063e884f26011610064578063e884f260146107fb578063f2fde38b14610810578063f8b45b051461083057600080fd5b8063dd62ed3e1461078a578063df778d26146107d0578063e2f45605146107e557600080fd5b8063d048cd13116100bb578063d048cd131461072a578063d257b34f1461074a578063d7b7d58b1461076a57600080fd5b8063c876d0b9146106f3578063c8c8ebe41461071457600080fd5b8063a9059cbb1161012d578063bbc0c74211610112578063bbc0c74214610694578063c0246668146106b3578063c18bc195146106d357600080fd5b8063a9059cbb14610654578063aacebbe31461067457600080fd5b806395d89b411161015e57806395d89b41146105ff5780639a7a23d614610614578063a457c2d71461063457600080fd5b80638bb171bc146105b75780638da5cb5b146105d757600080fd5b806323b872dd116102325780635fe8b111116101e6578063751039fc116101c0578063751039fc1461056d5780637571336a146105825780638a8c523c146105a257600080fd5b80635fe8b111146104fb57806370a0823114610522578063715018a61461055857600080fd5b8063395093511161021757806339509351146104885780634a62bb65146104a85780634fbee193146104c257600080fd5b806323b872dd14610446578063313ce5671461046657600080fd5b806312b77e8a1161028957806318160ddd1161026e57806318160ddd146103f15780631816467f14610406578063203e727e1461042657600080fd5b806312b77e8a146103bb57806316279055146103d057600080fd5b8063095ea7b3116102ba578063095ea7b3146103305780630aa75f6b146103605780630f3a325f1461038257600080fd5b806306fdde03146102e15780630920fd8c1461030c57600080fd5b366102dc57005b600080fd5b3480156102ed57600080fd5b506102f6610846565b6040516103039190612e73565b60405180910390f35b34801561031857600080fd5b5061032260145481565b604051908152602001610303565b34801561033c57600080fd5b5061035061034b366004612efb565b6108d8565b6040519015158152602001610303565b34801561036c57600080fd5b5061038061037b366004612f38565b6108f0565b005b34801561038e57600080fd5b5061035061039d366004612f8c565b6001600160a01b03166000908152600b602052604090205460ff1690565b3480156103c757600080fd5b50610380610aab565b3480156103dc57600080fd5b506103506103eb366004612f8c565b3b151590565b3480156103fd57600080fd5b50600254610322565b34801561041257600080fd5b50610380610421366004612f8c565b610b41565b34801561043257600080fd5b50610380610441366004612fa9565b610c05565b34801561045257600080fd5b50610350610461366004612fc2565b610d20565b34801561047257600080fd5b5060095b60405160ff9091168152602001610303565b34801561049457600080fd5b506103506104a3366004612efb565b610d44565b3480156104b457600080fd5b506010546103509060ff1681565b3480156104ce57600080fd5b506103506104dd366004612f8c565b6001600160a01b03166000908152600d602052604090205460ff1690565b34801561050757600080fd5b50601054610476906901000000000000000000900460ff1681565b34801561052e57600080fd5b5061032261053d366004612f8c565b6001600160a01b031660009081526020819052604090205490565b34801561056457600080fd5b50610380610d83565b34801561057957600080fd5b50610350610de9565b34801561058e57600080fd5b5061038061059d366004613003565b610e56565b3480156105ae57600080fd5b50610380610edb565b3480156105c357600080fd5b506103806105d2366004612f8c565b610fa3565b3480156105e357600080fd5b506005546040516001600160a01b039091168152602001610303565b34801561060b57600080fd5b506102f6611054565b34801561062057600080fd5b5061038061062f366004613003565b611063565b34801561064057600080fd5b5061035061064f366004612efb565b61114f565b34801561066057600080fd5b5061035061066f366004612efb565b6111f9565b34801561068057600080fd5b5061038061068f366004612f8c565b611207565b3480156106a057600080fd5b5060105461035090610100900460ff1681565b3480156106bf57600080fd5b506103806106ce366004613003565b6112cb565b3480156106df57600080fd5b506103806106ee366004612fa9565b611384565b3480156106ff57600080fd5b50601054610350906301000000900460ff1681565b34801561072057600080fd5b5061032260115481565b34801561073657600080fd5b50610350610745366004613041565b61149e565b34801561075657600080fd5b50610350610765366004612fa9565b6115b3565b34801561077657600080fd5b50610380610785366004612f8c565b611746565b34801561079657600080fd5b506103226107a536600461305c565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156107dc57600080fd5b506103806117c1565b3480156107f157600080fd5b5061032260125481565b34801561080757600080fd5b50610350611834565b34801561081c57600080fd5b5061038061082b366004612f8c565b6118bf565b34801561083c57600080fd5b5061032260135481565b6060600380546108559061308a565b80601f01602080910402602001604051908101604052809291908181526020018280546108819061308a565b80156108ce5780601f106108a3576101008083540402835291602001916108ce565b820191906000526020600020905b8154815290600101906020018083116108b157829003601f168201915b5050505050905090565b6000336108e68185856119b1565b5060019392505050565b6005546001600160a01b0316331461094f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b60105460199060ff66010000000000008204811691829161098591650100000000008104821691640100000000909104166130db565b61098f91906130db565b61099991906130db565b60ff1611156109ea5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313025206f72206c6573730000006044820152606401610946565b601080547fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff1664010000000060ff968716027fffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffff16176501000000000094861694909402939093177fffffffffffffffffffffffffffffffffffffffffffff00ffff00ffffffffffff1666010000000000009285169290920269ff00000000000000000019169190911769010000000000000000009190931602919091179055565b6005546001600160a01b03163314610b055760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610946565b6008546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610b3e573d6000803e3d6000fd5b50565b6005546001600160a01b03163314610b9b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610946565b6009546040516001600160a01b03918216918316907f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74390600090a36009805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610c5f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610946565b670de0b6b3a76400006103e8610c7460025490565b610c7f906001613100565b610c89919061311f565b610c93919061311f565b811015610d085760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201527f6c6f776572207468616e20302e312500000000000000000000000000000000006064820152608401610946565b610d1a81670de0b6b3a7640000613100565b60115550565b600033610d2e858285611b09565b610d39858585611b9b565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091906108e69082908690610d7e908790613141565b6119b1565b6005546001600160a01b03163314610ddd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610946565b610de7600061259b565b565b6005546000906001600160a01b03163314610e465760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610946565b506010805460ff19169055600190565b6005546001600160a01b03163314610eb05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610946565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610f355760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610946565b601080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055610f6c42600261199e565b601455601080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff16670104020700000000179055565b6005546001600160a01b03163314610ffd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610946565b6007546001600160a01b0382811691161480159061102957506006546001600160a01b03828116911614155b15610b3e576001600160a01b0381166000908152600b60205260409020805460ff1916600117905550565b6060600480546108559061308a565b6005546001600160a01b031633146110bd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610946565b6007546001600160a01b03838116911614156111415760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610946565b61114b82826125fa565b5050565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190838110156111ec5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610946565b610d3982868684036119b1565b6000336108e6818585611b9b565b6005546001600160a01b031633146112615760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610946565b6008546040516001600160a01b03918216918316907fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567490600090a36008805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6005546001600160a01b031633146113255760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610946565b6001600160a01b0382166000818152600d6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146113de5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610946565b670de0b6b3a76400006103e86113f360025490565b6113fe906005613100565b611408919061311f565b611412919061311f565b8110156114865760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060448201527f302e3525000000000000000000000000000000000000000000000000000000006064820152608401610946565b61149881670de0b6b3a7640000613100565b60135550565b6005546000906001600160a01b031633146114fb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610946565b60105460ff69010000000000000000009091048116908316106115865760405162461bcd60e51b815260206004820152602260248201527f50656e616c747920486f7572732063616e206e6f7420626520696e637265617360448201527f65640000000000000000000000000000000000000000000000000000000000006064820152608401610946565b506010805469ff0000000000000000001916690100000000000000000060ff84160217905560015b919050565b6005546000906001600160a01b031633146116105760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610946565b620186a061161d60025490565b611628906001613100565b611632919061311f565b8210156116a75760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527f20302e3030312520746f74616c20737570706c792e00000000000000000000006064820152608401610946565b6103e86116b360025490565b6116be906005613100565b6116c8919061311f565b82111561173d5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160448201527f6e20302e352520746f74616c20737570706c792e0000000000000000000000006064820152608401610946565b50601255600190565b6005546001600160a01b031633146117a05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610946565b6001600160a01b03166000908152600b60205260409020805460ff19169055565b6005546001600160a01b0316331461181b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610946565b30600090815260208190526040902054610b059061264e565b6005546000906001600160a01b031633146118915760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610946565b50601080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff169055600190565b6005546001600160a01b031633146119195760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610946565b6001600160a01b0381166119955760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610946565b610b3e8161259b565b60006119aa8284613141565b9392505050565b6001600160a01b038316611a2c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610946565b6001600160a01b038216611aa85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610946565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114611b955781811015611b885760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610946565b611b9584848484036119b1565b50505050565b6001600160a01b038316611c175760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610946565b6001600160a01b038216611c935760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610946565b80611ca957611ca4838360006127da565b505050565b6001600160a01b0383166000908152600d602052604090205460ff16158015611ceb57506001600160a01b0382166000908152600d602052604090205460ff16155b15611d17576000611cfd8260646129f1565b9050611d0984826129fd565b611d138183613159565b9150505b60105460ff161561224b576005546001600160a01b03848116911614801590611d4e57506005546001600160a01b03838116911614155b8015611d6257506001600160a01b03821615155b8015611d7957506001600160a01b03821661dead14155b8015611d8e575060105462010000900460ff16155b1561224b57601054610100900460ff161580611daa5750813b15155b15611dd3576001600160a01b0382166000908152600b60205260409020805460ff191660011790555b6010546301000000900460ff1615611f0d576005546001600160a01b03838116911614801590611e1157506006546001600160a01b03838116911614155b8015611e2b57506007546001600160a01b03838116911614155b15611f0d57326000908152600c60205260409020544290611e4d90601e613141565b10611ee65760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60648201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000608482015260a401610946565b326000908152600c6020526040902054611f0d57326000908152600c602052604090204290555b6001600160a01b0383166000908152600f602052604090205460ff168015611f4e57506001600160a01b0382166000908152600e602052604090205460ff16155b1561204457601154811115611fcb5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527f6d61785472616e73616374696f6e416d6f756e742e00000000000000000000006064820152608401610946565b6013546001600160a01b038316600090815260208190526040902054611ff19083613141565b111561203f5760405162461bcd60e51b815260206004820152601360248201527f4d61782077616c6c6574206578636565646564000000000000000000000000006044820152606401610946565b61224b565b6001600160a01b0383166000908152600b602052604090205460ff16156120f95760405162461bcd60e51b815260206004820152604d60248201527f596f7572206164647265737320686173206265656e206d61726b65642061732060448201527f6120736e697065722c20796f752061726520756e61626c6520746f207472616e60648201527f73666572206f7220737761702e00000000000000000000000000000000000000608482015260a401610946565b6001600160a01b0382166000908152600f602052604090205460ff16801561213a57506001600160a01b0383166000908152600e602052604090205460ff16155b156121b75760115481111561203f5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201527f206d61785472616e73616374696f6e416d6f756e742e000000000000000000006064820152608401610946565b6001600160a01b0382166000908152600e602052604090205460ff1661224b576013546001600160a01b0383166000908152602081905260409020546121fd9083613141565b111561224b5760405162461bcd60e51b815260206004820152601360248201527f4d61782077616c6c6574206578636565646564000000000000000000000000006044820152606401610946565b3060009081526020819052604090205460125481108015908190612278575060105462010000900460ff16155b801561229d57506001600160a01b0385166000908152600f602052604090205460ff16155b80156122c257506001600160a01b0385166000908152600d602052604090205460ff16155b80156122e757506001600160a01b0384166000908152600d602052604090205460ff16155b15612312576010805462ff0000191662010000179055612305612b82565b6010805462ff0000191690555b6010546001600160a01b0386166000908152600d602052604090205460ff6201000090920482161591168061235f57506001600160a01b0385166000908152600d602052604090205460ff165b15612368575060005b6010546001600160a01b0386166000908152600f6020526040812054909160ff680100000000000000008204811692660100000000000083048216926401000000008104831692650100000000009091048116911615612433576010546001945042906123e7906901000000000000000000900460ff16610e10613170565b326000908152600c60205260409020546124059161ffff1690613141565b111561243357612416600384613141565b9250612423600383613141565b9150612430600282613141565b90505b6001600160a01b038a166000908152600b602052604090205460ff161561245e575060199150819050805b8515612583576010546124809068010000000000000000900460ff1683613141565b915061248c8482613141565b6010546601000000000000900460ff169350905060008480856124af8587613141565b6124b99190613141565b6124c39190613141565b6124cd9190613141565b90506124e460646124de8c84612d6e565b906129f1565b9550806124f18388613100565b6124fb919061311f565b6016600082825461250c9190613141565b9091555081905061251d8588613100565b612527919061311f565b601860008282546125389190613141565b909155508190506125498488613100565b612553919061311f565b601560008282546125649190613141565b9091555061257590508c30886127da565b61257f868b613159565b9950505b61258e8b8b8b6127da565b5050505050505050505050565b600580546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166000818152600f6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106126835761268361319a565b6001600160a01b03928316602091820292909201810191909152600654604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa1580156126f5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061271991906131b0565b8160018151811061272c5761272c61319a565b6001600160a01b03928316602091820292909201015260065461275291309116846119b1565b6006546040517f791ac9470000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063791ac947906127a49085906000908690309042906004016131cd565b600060405180830381600087803b1580156127be57600080fd5b505af11580156127d2573d6000803e3d6000fd5b505050505050565b6001600160a01b0383166128565760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610946565b6001600160a01b0382166128d25760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610946565b6001600160a01b038316600090815260208190526040902054818110156129615760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610946565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290612998908490613141565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516129e491815260200190565b60405180910390a3611b95565b60006119aa828461311f565b6001600160a01b038216612a795760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610946565b6001600160a01b03821660009081526020819052604090205481811015612b085760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610946565b6001600160a01b0383166000908152602081905260408120838303905560028054849290612b37908490613159565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b3060009081526020819052604081205490506000601854601554601654612ba99190613141565b612bb39190613141565b9050811580612bc0575080155b15612bc9575050565b601254821115612bd95760125491505b600060028260165485612bec9190613100565b612bf6919061311f565b612c00919061311f565b90506000612c0e8483612d7a565b905047612c1a8261264e565b6000612c264783612d7a565b90506000612c43866124de60155485612d6e90919063ffffffff16565b90506000612c60876124de60185486612d6e90919063ffffffff16565b9050600081612c6f8486613159565b612c799190613159565b60006016819055601581905560188190556008546040519293506001600160a01b03169185156108fc0291869190818181858888f19350505050158015612cc4573d6000803e3d6000fd5b506009546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015612cff573d6000803e3d6000fd5b50600087118015612d105750600081115b15612d6357612d1f8747612d86565b601654604080518881526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b505050505050505050565b60006119aa8284613100565b60006119aa8284613159565b600654612d9e9030906001600160a01b0316846119b1565b6006546001600160a01b031663f305d719823085600080612dc76005546001600160a01b031690565b60405160e088901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015612e47573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612e6c919061323e565b5050505050565b600060208083528351808285015260005b81811015612ea057858101830151858201604001528201612e84565b81811115612eb2576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b6001600160a01b0381168114610b3e57600080fd5b60008060408385031215612f0e57600080fd5b8235612f1981612ee6565b946020939093013593505050565b803560ff811681146115ae57600080fd5b60008060008060808587031215612f4e57600080fd5b612f5785612f27565b9350612f6560208601612f27565b9250612f7360408601612f27565b9150612f8160608601612f27565b905092959194509250565b600060208284031215612f9e57600080fd5b81356119aa81612ee6565b600060208284031215612fbb57600080fd5b5035919050565b600080600060608486031215612fd757600080fd5b8335612fe281612ee6565b92506020840135612ff281612ee6565b929592945050506040919091013590565b6000806040838503121561301657600080fd5b823561302181612ee6565b91506020830135801515811461303657600080fd5b809150509250929050565b60006020828403121561305357600080fd5b6119aa82612f27565b6000806040838503121561306f57600080fd5b823561307a81612ee6565b9150602083013561303681612ee6565b600181811c9082168061309e57607f821691505b602082108114156130bf57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff84168060ff038211156130f8576130f86130c5565b019392505050565b600081600019048311821515161561311a5761311a6130c5565b500290565b60008261313c57634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115613154576131546130c5565b500190565b60008282101561316b5761316b6130c5565b500390565b600061ffff80831681851681830481118215151615613191576131916130c5565b02949350505050565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156131c257600080fd5b81516119aa81612ee6565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561321d5784516001600160a01b0316835293830193918301916001016131f8565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561325357600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220ab149dc8b419b4db1c9eae3442d04c17dec25cb070f2d4ab7d3791d6f1c17fa664736f6c634300080c0033
Deployed Bytecode Sourcemap
37374:16194:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4148:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38976:26;;;;;;;;;;;;;;;;;;;821:25:1;;;809:2;794:18;38976:26:0;675:177:1;6499:201:0;;;;;;;;;;-1:-1:-1;6499:201:0;;;;;:::i;:::-;;:::i;:::-;;;1501:14:1;;1494:22;1476:41;;1464:2;1449:18;6499:201:0;1336:187:1;43263:376:0;;;;;;;;;;-1:-1:-1;43263:376:0;;;;;:::i;:::-;;:::i;:::-;;45147:105;;;;;;;;;;-1:-1:-1;45147:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;45224:20:0;45200:4;45224:20;;;:14;:20;;;;;;;;;45147:105;53413:115;;;;;;;;;;;;;:::i;45258:392::-;;;;;;;;;;-1:-1:-1;45258:392:0;;;;;:::i;:::-;45574:20;45630:8;;;45258:392;5268:108;;;;;;;;;;-1:-1:-1;5356:12:0;;5268:108;;44476:166;;;;;;;;;;-1:-1:-1;44476:166:0;;;;;:::i;:::-;;:::i;42650:232::-;;;;;;;;;;-1:-1:-1;42650:232:0;;;;;:::i;:::-;;:::i;7280:295::-;;;;;;;;;;-1:-1:-1;7280:295:0;;;;;:::i;:::-;;:::i;41177:99::-;;;;;;;;;;-1:-1:-1;38814:1:0;41177:99;;;3157:4:1;3145:17;;;3127:36;;3115:2;3100:18;41177:99:0;2985:184:1;7984:240:0;;;;;;;;;;-1:-1:-1;7984:240:0;;;;;:::i;:::-;;:::i;38454:33::-;;;;;;;;;;-1:-1:-1;38454:33:0;;;;;;;;44648:125;;;;;;;;;;-1:-1:-1;44648:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;44737:28:0;44713:4;44737:28;;;:19;:28;;;;;;;;;44648:125;38824:30;;;;;;;;;;-1:-1:-1;38824:30:0;;;;;;;;;;;5439:127;;;;;;;;;;-1:-1:-1;5439:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;5540:18:0;5513:7;5540:18;;;;;;;;;;;;5439:127;23959:103;;;;;;;;;;;;;:::i;41625:121::-;;;;;;;;;;;;;:::i;43109:144::-;;;;;;;;;;-1:-1:-1;43109:144:0;;;;;:::i;:::-;;:::i;41328:241::-;;;;;;;;;;;;;:::i;44782:218::-;;;;;;;;;;-1:-1:-1;44782:218:0;;;;;:::i;:::-;;:::i;23308:87::-;;;;;;;;;;-1:-1:-1;23381:6:0;;23308:87;;-1:-1:-1;;;;;23381:6:0;;;3741:74:1;;3729:2;3714:18;23308:87:0;3595:226:1;4367:104:0;;;;;;;;;;;;;:::i;43833:244::-;;;;;;;;;;-1:-1:-1;43833:244:0;;;;;:::i;:::-;;:::i;8727:438::-;;;;;;;;;;-1:-1:-1;8727:438:0;;;;;:::i;:::-;;:::i;5772:193::-;;;;;;;;;;-1:-1:-1;5772:193:0;;;;;:::i;:::-;;:::i;44280:190::-;;;;;;;;;;-1:-1:-1;44280:190:0;;;;;:::i;:::-;;:::i;38494:33::-;;;;;;;;;;-1:-1:-1;38494:33:0;;;;;;;;;;;43645:182;;;;;;;;;;-1:-1:-1;43645:182:0;;;;;:::i;:::-;;:::i;42888:211::-;;;;;;;;;;-1:-1:-1;42888:211:0;;;;;:::i;:::-;;:::i;38563:39::-;;;;;;;;;;-1:-1:-1;38563:39:0;;;;;;;;;;;38863:35;;;;;;;;;;;;;;;;41952:237;;;;;;;;;;-1:-1:-1;41952:237:0;;;;;:::i;:::-;;:::i;42258:382::-;;;;;;;;;;-1:-1:-1;42258:382:0;;;;;:::i;:::-;;:::i;45009:126::-;;;;;;;;;;-1:-1:-1;45009:126:0;;;;;:::i;:::-;;:::i;6028:151::-;;;;;;;;;;-1:-1:-1;6028:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;6144:18:0;;;6117:7;6144:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6028:151;53236:169;;;;;;;;;;;;;:::i;38905:33::-;;;;;;;;;;;;;;;;41811:135;;;;;;;;;;;;;:::i;24217:201::-;;;;;;;;;;-1:-1:-1;24217:201:0;;;;;:::i;:::-;;:::i;38945:24::-;;;;;;;;;;;;;;;;4148:100;4202:13;4235:5;4228:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4148:100;:::o;6499:201::-;6582:4;175:10;6638:32;175:10;6654:7;6663:6;6638:8;:32::i;:::-;-1:-1:-1;6688:4:0;;6499:201;-1:-1:-1;;;6499:201:0:o;43263:376::-;23381:6;;-1:-1:-1;;;;;23381:6:0;175:10;23528:23;23520:68;;;;-1:-1:-1;;;23520:68:0;;5050:2:1;23520:68:0;;;5032:21:1;;;5069:18;;;5062:30;5128:34;5108:18;;;5101:62;5180:18;;23520:68:0;;;;;;;;;43438:7:::1;::::0;43449:2:::1;::::0;43438:7:::1;::::0;;::::1;::::0;::::1;::::0;;;43396:29:::1;::::0;43412:13;;::::1;::::0;::::1;::::0;43396;;;::::1;;:29;:::i;:::-;:39;;;;:::i;:::-;:49;;;;:::i;:::-;:55;;;;43388:97;;;::::0;-1:-1:-1;;;43388:97:0;;5809:2:1;43388:97:0::1;::::0;::::1;5791:21:1::0;5848:2;5828:18;;;5821:30;5887:31;5867:18;;;5860:59;5936:18;;43388:97:0::1;5607:353:1::0;43388:97:0::1;43498:13;:28:::0;;43537;;43498;::::1;::::0;;::::1;;43537::::0;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;43603::::0;;43576:16;;;::::1;::::0;;;::::1;-1:-1:-1::0;;43603:28:0;;;;;;;;;::::1;;::::0;;;::::1;::::0;;43263:376::o;53413:115::-;23381:6;;-1:-1:-1;;;;;23381:6:0;175:10;23528:23;23520:68;;;;-1:-1:-1;;;23520:68:0;;5050:2:1;23520:68:0;;;5032:21:1;;;5069:18;;;5062:30;5128:34;5108:18;;;5101:62;5180:18;;23520:68:0;4848:356:1;23520:68:0;53472:15:::1;::::0;53464:56:::1;::::0;-1:-1:-1;;;;;53472:15:0;;::::1;::::0;53498:21:::1;53464:56:::0;::::1;;;::::0;53472:15:::1;53464:56:::0;53472:15;53464:56;53498:21;53472:15;53464:56;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;53413:115::o:0;44476:166::-;23381:6;;-1:-1:-1;;;;;23381:6:0;175:10;23528:23;23520:68;;;;-1:-1:-1;;;23520:68:0;;5050:2:1;23520:68:0;;;5032:21:1;;;5069:18;;;5062:30;5128:34;5108:18;;;5101:62;5180:18;;23520:68:0;4848:356:1;23520:68:0;44583:9:::1;::::0;44555:38:::1;::::0;-1:-1:-1;;;;;44583:9:0;;::::1;::::0;44555:38;::::1;::::0;::::1;::::0;44583:9:::1;::::0;44555:38:::1;44604:9;:30:::0;;-1:-1:-1;;44604:30:0::1;-1:-1:-1::0;;;;;44604:30:0;;;::::1;::::0;;;::::1;::::0;;44476:166::o;42650:232::-;23381:6;;-1:-1:-1;;;;;23381:6:0;175:10;23528:23;23520:68;;;;-1:-1:-1;;;23520:68:0;;5050:2:1;23520:68:0;;;5032:21:1;;;5069:18;;;5062:30;5128:34;5108:18;;;5101:62;5180:18;;23520:68:0;4848:356:1;23520:68:0;42771:4:::1;42763;42743:13;5356:12:::0;;;5268:108;42743:13:::1;:17;::::0;42759:1:::1;42743:17;:::i;:::-;:24;;;;:::i;:::-;42742:33;;;;:::i;:::-;42732:6;:43;;42724:103;;;::::0;-1:-1:-1;;;42724:103:0;;6679:2:1;42724:103:0::1;::::0;::::1;6661:21:1::0;6718:2;6698:18;;;6691:30;6757:34;6737:18;;;6730:62;6828:17;6808:18;;;6801:45;6863:19;;42724:103:0::1;6477:411:1::0;42724:103:0::1;42861:13;:6:::0;42870:4:::1;42861:13;:::i;:::-;42838:20;:36:::0;-1:-1:-1;42650:232:0:o;7280:295::-;7411:4;175:10;7469:38;7485:4;175:10;7500:6;7469:15;:38::i;:::-;7518:27;7528:4;7534:2;7538:6;7518:9;:27::i;:::-;-1:-1:-1;7563:4:0;;7280:295;-1:-1:-1;;;;7280:295:0:o;7984:240::-;175:10;8072:4;8153:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;8153:27:0;;;;;;;;;;8072:4;;175:10;8128:66;;175:10;;8153:27;;:40;;8183:10;;8153:40;:::i;:::-;8128:8;:66::i;23959:103::-;23381:6;;-1:-1:-1;;;;;23381:6:0;175:10;23528:23;23520:68;;;;-1:-1:-1;;;23520:68:0;;5050:2:1;23520:68:0;;;5032:21:1;;;5069:18;;;5062:30;5128:34;5108:18;;;5101:62;5180:18;;23520:68:0;4848:356:1;23520:68:0;24024:30:::1;24051:1;24024:18;:30::i;:::-;23959:103::o:0;41625:121::-;23381:6;;41677:4;;-1:-1:-1;;;;;23381:6:0;175:10;23528:23;23520:68;;;;-1:-1:-1;;;23520:68:0;;5050:2:1;23520:68:0;;;5032:21:1;;;5069:18;;;5062:30;5128:34;5108:18;;;5101:62;5180:18;;23520:68:0;4848:356:1;23520:68:0;-1:-1:-1;41694:14:0::1;:22:::0;;-1:-1:-1;;41694:22:0::1;::::0;;;41625:121;:::o;43109:144::-;23381:6;;-1:-1:-1;;;;;23381:6:0;175:10;23528:23;23520:68;;;;-1:-1:-1;;;23520:68:0;;5050:2:1;23520:68:0;;;5032:21:1;;;5069:18;;;5062:30;5128:34;5108:18;;;5101:62;5180:18;;23520:68:0;4848:356:1;23520:68:0;-1:-1:-1;;;;;43199:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;43199:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;43109:144::o;41328:241::-;23381:6;;-1:-1:-1;;;;;23381:6:0;175:10;23528:23;23520:68;;;;-1:-1:-1;;;23520:68:0;;5050:2:1;23520:68:0;;;5032:21:1;;;5069:18;;;5062:30;5128:34;5108:18;;;5101:62;5180:18;;23520:68:0;4848:356:1;23520:68:0;41383:13:::1;:20:::0;;;::::1;;;::::0;;41428:22:::1;:15;41448:1;41428:19;:22::i;:::-;41414:11;:36:::0;41471:13:::1;:17:::0;;41549:12;;;;;;41328:241::o;44782:218::-;23381:6;;-1:-1:-1;;;;;23381:6:0;175:10;23528:23;23520:68;;;;-1:-1:-1;;;23520:68:0;;5050:2:1;23520:68:0;;;5032:21:1;;;5069:18;;;5062:30;5128:34;5108:18;;;5101:62;5180:18;;23520:68:0;4848:356:1;23520:68:0;44880:13:::1;::::0;-1:-1:-1;;;;;44864:29:0;;::::1;44880:13:::0;::::1;44864:29;::::0;::::1;::::0;:73:::1;;-1:-1:-1::0;44921:15:0::1;::::0;-1:-1:-1;;;;;44897:40:0;;::::1;44921:15:::0;::::1;44897:40;;44864:73;44860:132;;;-1:-1:-1::0;;;;;44957:28:0;::::1;;::::0;;;:14:::1;:28;::::0;;;;:35;;-1:-1:-1;;44957:35:0::1;44988:4;44957:35;::::0;;44782:218;:::o;4367:104::-;4423:13;4456:7;4449:14;;;;;:::i;43833:244::-;23381:6;;-1:-1:-1;;;;;23381:6:0;175:10;23528:23;23520:68;;;;-1:-1:-1;;;23520:68:0;;5050:2:1;23520:68:0;;;5032:21:1;;;5069:18;;;5062:30;5128:34;5108:18;;;5101:62;5180:18;;23520:68:0;4848:356:1;23520:68:0;43940:13:::1;::::0;-1:-1:-1;;;;;43932:21:0;;::::1;43940:13:::0;::::1;43932:21;;43924:91;;;::::0;-1:-1:-1;;;43924:91:0;;7228:2:1;43924:91:0::1;::::0;::::1;7210:21:1::0;7267:2;7247:18;;;7240:30;7306:34;7286:18;;;7279:62;7377:27;7357:18;;;7350:55;7422:19;;43924:91:0::1;7026:421:1::0;43924:91:0::1;44028:41;44057:4;44063:5;44028:28;:41::i;:::-;43833:244:::0;;:::o;8727:438::-;175:10;8820:4;8903:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;8903:27:0;;;;;;;;;;8820:4;;175:10;8949:35;;;;8941:85;;;;-1:-1:-1;;;8941:85:0;;7654:2:1;8941:85:0;;;7636:21:1;7693:2;7673:18;;;7666:30;7732:34;7712:18;;;7705:62;7803:7;7783:18;;;7776:35;7828:19;;8941:85:0;7452:401:1;8941:85:0;9062:60;9071:5;9078:7;9106:15;9087:16;:34;9062:8;:60::i;5772:193::-;5851:4;175:10;5907:28;175:10;5924:2;5928:6;5907:9;:28::i;44280:190::-;23381:6;;-1:-1:-1;;;;;23381:6:0;175:10;23528:23;23520:68;;;;-1:-1:-1;;;23520:68:0;;5050:2:1;23520:68:0;;;5032:21:1;;;5069:18;;;5062:30;5128:34;5108:18;;;5101:62;5180:18;;23520:68:0;4848:356:1;23520:68:0;44399:15:::1;::::0;44365:50:::1;::::0;-1:-1:-1;;;;;44399:15:0;;::::1;::::0;44365:50;::::1;::::0;::::1;::::0;44399:15:::1;::::0;44365:50:::1;44426:15;:36:::0;;-1:-1:-1;;44426:36:0::1;-1:-1:-1::0;;;;;44426:36:0;;;::::1;::::0;;;::::1;::::0;;44280:190::o;43645:182::-;23381:6;;-1:-1:-1;;;;;23381:6:0;175:10;23528:23;23520:68;;;;-1:-1:-1;;;23520:68:0;;5050:2:1;23520:68:0;;;5032:21:1;;;5069:18;;;5062:30;5128:34;5108:18;;;5101:62;5180:18;;23520:68:0;4848:356:1;23520:68:0;-1:-1:-1;;;;;43730:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;43730:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;43785:34;;1476:41:1;;;43785:34:0::1;::::0;1449:18:1;43785:34:0::1;;;;;;;43645:182:::0;;:::o;42888:211::-;23381:6;;-1:-1:-1;;;;;23381:6:0;175:10;23528:23;23520:68;;;;-1:-1:-1;;;23520:68:0;;5050:2:1;23520:68:0;;;5032:21:1;;;5069:18;;;5062:30;5128:34;5108:18;;;5101:62;5180:18;;23520:68:0;4848:356:1;23520:68:0;43010:4:::1;43004;42984:13;5356:12:::0;;;5268:108;42984:13:::1;:17;::::0;43000:1:::1;42984:17;:::i;:::-;:24;;;;:::i;:::-;42983:31;;;;:::i;:::-;42973:6;:41;;42965:90;;;::::0;-1:-1:-1;;;42965:90:0;;8060:2:1;42965:90:0::1;::::0;::::1;8042:21:1::0;8099:2;8079:18;;;8072:30;8138:34;8118:18;;;8111:62;8209:6;8189:18;;;8182:34;8233:19;;42965:90:0::1;7858:400:1::0;42965:90:0::1;43078:13;:6:::0;43087:4:::1;43078:13;:::i;:::-;43066:9;:25:::0;-1:-1:-1;42888:211:0:o;41952:237::-;23381:6;;42027:4;;-1:-1:-1;;;;;23381:6:0;175:10;23528:23;23520:68;;;;-1:-1:-1;;;23520:68:0;;5050:2:1;23520:68:0;;;5032:21:1;;;5069:18;;;5062:30;5128:34;5108:18;;;5101:62;5180:18;;23520:68:0;4848:356:1;23520:68:0;42068:13:::1;::::0;::::1;::::0;;;::::1;::::0;::::1;42053:28:::0;;::::1;;42044:76;;;::::0;-1:-1:-1;;;42044:76:0;;8465:2:1;42044:76:0::1;::::0;::::1;8447:21:1::0;8504:2;8484:18;;;8477:30;8543:34;8523:18;;;8516:62;8614:4;8594:18;;;8587:32;8636:19;;42044:76:0::1;8263:398:1::0;42044:76:0::1;-1:-1:-1::0;42131:13:0::1;:28:::0;;-1:-1:-1;;42131:28:0::1;::::0;::::1;::::0;::::1;;;::::0;;-1:-1:-1;23599:1:0::1;41952:237:::0;;;:::o;42258:382::-;23381:6;;42339:4;;-1:-1:-1;;;;;23381:6:0;175:10;23528:23;23520:68;;;;-1:-1:-1;;;23520:68:0;;5050:2:1;23520:68:0;;;5032:21:1;;;5069:18;;;5062:30;5128:34;5108:18;;;5101:62;5180:18;;23520:68:0;4848:356:1;23520:68:0;42396:6:::1;42376:13;5356:12:::0;;;5268:108;42376:13:::1;:17;::::0;42392:1:::1;42376:17;:::i;:::-;:26;;;;:::i;:::-;42363:9;:39;;42355:105;;;::::0;-1:-1:-1;;;42355:105:0;;8868:2:1;42355:105:0::1;::::0;::::1;8850:21:1::0;8907:2;8887:18;;;8880:30;8946:34;8926:18;;;8919:62;9017:23;8997:18;;;8990:51;9058:19;;42355:105:0::1;8666:417:1::0;42355:105:0::1;42511:4;42491:13;5356:12:::0;;;5268:108;42491:13:::1;:17;::::0;42507:1:::1;42491:17;:::i;:::-;:24;;;;:::i;:::-;42478:9;:37;;42470:102;;;::::0;-1:-1:-1;;;42470:102:0;;9290:2:1;42470:102:0::1;::::0;::::1;9272:21:1::0;9329:2;9309:18;;;9302:30;9368:34;9348:18;;;9341:62;9439:22;9419:18;;;9412:50;9479:19;;42470:102:0::1;9088:416:1::0;42470:102:0::1;-1:-1:-1::0;42582:18:0::1;:30:::0;42629:4:::1;::::0;42258:382::o;45009:126::-;23381:6;;-1:-1:-1;;;;;23381:6:0;175:10;23528:23;23520:68;;;;-1:-1:-1;;;23520:68:0;;5050:2:1;23520:68:0;;;5032:21:1;;;5069:18;;;5062:30;5128:34;5108:18;;;5101:62;5180:18;;23520:68:0;4848:356:1;23520:68:0;-1:-1:-1;;;;;45087:28:0::1;45118:5;45087:28:::0;;;:14:::1;:28;::::0;;;;:36;;-1:-1:-1;;45087:36:0::1;::::0;;45009:126::o;53236:169::-;23381:6;;-1:-1:-1;;;;;23381:6:0;175:10;23528:23;23520:68;;;;-1:-1:-1;;;23520:68:0;;5050:2:1;23520:68:0;;;5032:21:1;;;5069:18;;;5062:30;5128:34;5108:18;;;5101:62;5180:18;;23520:68:0;4848:356:1;23520:68:0;53323:4:::1;5513:7:::0;5540:18;;;;;;;;;;;53287:43:::1;::::0;:17:::1;:43::i;41811:135::-:0;23381:6;;41871:4;;-1:-1:-1;;;;;23381:6:0;175:10;23528:23;23520:68;;;;-1:-1:-1;;;23520:68:0;;5050:2:1;23520:68:0;;;5032:21:1;;;5069:18;;;5062:30;5128:34;5108:18;;;5101:62;5180:18;;23520:68:0;4848:356:1;23520:68:0;-1:-1:-1;41888:20:0::1;:28:::0;;;::::1;::::0;;;41811:135;:::o;24217:201::-;23381:6;;-1:-1:-1;;;;;23381:6:0;175:10;23528:23;23520:68;;;;-1:-1:-1;;;23520:68:0;;5050:2:1;23520:68:0;;;5032:21:1;;;5069:18;;;5062:30;5128:34;5108:18;;;5101:62;5180:18;;23520:68:0;4848:356:1;23520:68:0;-1:-1:-1;;;;;24306:22:0;::::1;24298:73;;;::::0;-1:-1:-1;;;24298:73:0;;9711:2:1;24298:73:0::1;::::0;::::1;9693:21:1::0;9750:2;9730:18;;;9723:30;9789:34;9769:18;;;9762:62;9860:8;9840:18;;;9833:36;9886:19;;24298:73:0::1;9509:402:1::0;24298:73:0::1;24382:28;24401:8;24382:18;:28::i;33211:98::-:0;33269:7;33296:5;33300:1;33296;:5;:::i;:::-;33289:12;33211:98;-1:-1:-1;;;33211:98:0:o;12363:380::-;-1:-1:-1;;;;;12499:19:0;;12491:68;;;;-1:-1:-1;;;12491:68:0;;10118:2:1;12491:68:0;;;10100:21:1;10157:2;10137:18;;;10130:30;10196:34;10176:18;;;10169:62;10267:6;10247:18;;;10240:34;10291:19;;12491:68:0;9916:400:1;12491:68:0;-1:-1:-1;;;;;12578:21:0;;12570:68;;;;-1:-1:-1;;;12570:68:0;;10523:2:1;12570:68:0;;;10505:21:1;10562:2;10542:18;;;10535:30;10601:34;10581:18;;;10574:62;10672:4;10652:18;;;10645:32;10694:19;;12570:68:0;10321:398:1;12570:68:0;-1:-1:-1;;;;;12651:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;12703:32;;821:25:1;;;12703:32:0;;794:18:1;12703:32:0;;;;;;;12363:380;;;:::o;13030:453::-;-1:-1:-1;;;;;6144:18:0;;;13165:24;6144:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;13232:37:0;;13228:248;;13314:6;13294:16;:26;;13286:68;;;;-1:-1:-1;;;13286:68:0;;10926:2:1;13286:68:0;;;10908:21:1;10965:2;10945:18;;;10938:30;11004:31;10984:18;;;10977:59;11053:18;;13286:68:0;10724:353:1;13286:68:0;13398:51;13407:5;13414:7;13442:6;13423:16;:25;13398:8;:51::i;:::-;13154:329;13030:453;;;:::o;45656:4891::-;-1:-1:-1;;;;;45758:18:0;;45750:68;;;;-1:-1:-1;;;45750:68:0;;11284:2:1;45750:68:0;;;11266:21:1;11323:2;11303:18;;;11296:30;11362:34;11342:18;;;11335:62;11433:7;11413:18;;;11406:35;11458:19;;45750:68:0;11082:401:1;45750:68:0;-1:-1:-1;;;;;45837:16:0;;45829:64;;;;-1:-1:-1;;;45829:64:0;;11690:2:1;45829:64:0;;;11672:21:1;11729:2;11709:18;;;11702:30;11768:34;11748:18;;;11741:62;11839:5;11819:18;;;11812:33;11862:19;;45829:64:0;11488:399:1;45829:64:0;45919:11;45915:93;;45947:28;45963:4;45969:2;45973:1;45947:15;:28::i;:::-;45656:4891;;;:::o;45915:93::-;-1:-1:-1;;;;;46058:25:0;;;;;;:19;:25;;;;;;;;46057:26;:54;;;;-1:-1:-1;;;;;;46088:23:0;;;;;;:19;:23;;;;;;;;46087:24;46057:54;46053:258;;;46128:18;46149:15;:6;46160:3;46149:10;:15::i;:::-;46128:36;;46241:23;46247:4;46253:10;46241:5;:23::i;:::-;46279:20;46289:10;46279:20;;:::i;:::-;;;46113:198;46053:258;46335:14;;;;46331:2049;;;23381:6;;-1:-1:-1;;;;;46388:15:0;;;23381:6;;46388:15;;;;:49;;-1:-1:-1;23381:6:0;;-1:-1:-1;;;;;46424:13:0;;;23381:6;;46424:13;;46388:49;:86;;;;-1:-1:-1;;;;;;46458:16:0;;;;46388:86;:128;;;;-1:-1:-1;;;;;;46495:21:0;;46509:6;46495:21;;46388:128;:159;;;;-1:-1:-1;46538:9:0;;;;;;;46537:10;46388:159;46366:2003;;;46587:13;;;;;;;46586:14;;:33;;-1:-1:-1;45574:20:0;;45630:8;;46605:14;46582:110;;;-1:-1:-1;;;;;46643:18:0;;;;;;:14;:18;;;;;:25;;-1:-1:-1;;46643:25:0;46664:4;46643:25;;;46582:110;46850:20;;;;;;;46846:521;;;23381:6;;-1:-1:-1;;;;;46898:13:0;;;23381:6;;46898:13;;;;:47;;-1:-1:-1;46929:15:0;;-1:-1:-1;;;;;46915:30:0;;;46929:15;;46915:30;;46898:47;:79;;;;-1:-1:-1;46963:13:0;;-1:-1:-1;;;;;46949:28:0;;;46963:13;;46949:28;;46898:79;46894:454;;;47042:9;47013:39;;;;:28;:39;;;;;;47061:15;;47013:44;;47055:2;47013:44;:::i;:::-;:63;47005:149;;;;-1:-1:-1;;;47005:149:0;;12224:2:1;47005:149:0;;;12206:21:1;12263:2;12243:18;;;12236:30;12302:34;12282:18;;;12275:62;12373:34;12353:18;;;12346:62;12445:11;12424:19;;;12417:40;12474:19;;47005:149:0;12022:477:1;47005:149:0;47215:9;47186:39;;;;:28;:39;;;;;;47181:139;;47292:9;47263:39;;;;:28;:39;;;;;47305:15;47263:57;;47181:139;-1:-1:-1;;;;;47437:31:0;;;;;;:25;:31;;;;;;;;:71;;;;-1:-1:-1;;;;;;47473:35:0;;;;;;:31;:35;;;;;;;;47472:36;47437:71;47433:921;;;47551:20;;47541:6;:30;;47533:96;;;;-1:-1:-1;;;47533:96:0;;12706:2:1;47533:96:0;;;12688:21:1;12745:2;12725:18;;;12718:30;12784:34;12764:18;;;12757:62;12855:23;12835:18;;;12828:51;12896:19;;47533:96:0;12504:417:1;47533:96:0;47686:9;;-1:-1:-1;;;;;5540:18:0;;5513:7;5540:18;;;;;;;;;;;47660:22;;:6;:22;:::i;:::-;:35;;47652:67;;;;-1:-1:-1;;;47652:67:0;;13128:2:1;47652:67:0;;;13110:21:1;13167:2;13147:18;;;13140:30;13206:21;13186:18;;;13179:49;13245:18;;47652:67:0;12926:343:1;47652:67:0;47433:921;;;-1:-1:-1;;;;;47846:20:0;;;;;;:14;:20;;;;;;;;47845:21;47837:111;;;;-1:-1:-1;;;47837:111:0;;13476:2:1;47837:111:0;;;13458:21:1;13515:2;13495:18;;;13488:30;13554:34;13534:18;;;13527:62;13625:34;13605:18;;;13598:62;13697:15;13676:19;;;13669:44;13730:19;;47837:111:0;13274:481:1;47837:111:0;-1:-1:-1;;;;;47977:29:0;;;;;;:25;:29;;;;;;;;:71;;;;-1:-1:-1;;;;;;48011:37:0;;;;;;:31;:37;;;;;;;;48010:38;47977:71;47973:361;;;48093:20;;48083:6;:30;;48075:97;;;;-1:-1:-1;;;48075:97:0;;13962:2:1;48075:97:0;;;13944:21:1;14001:2;13981:18;;;13974:30;14040:34;14020:18;;;14013:62;14111:24;14091:18;;;14084:52;14153:19;;48075:97:0;13760:418:1;47973:361:0;-1:-1:-1;;;;;48205:35:0;;;;;;:31;:35;;;;;;;;48200:134;;48301:9;;-1:-1:-1;;;;;5540:18:0;;5513:7;5540:18;;;;;;;;;;;48275:22;;:6;:22;:::i;:::-;:35;;48267:67;;;;-1:-1:-1;;;48267:67:0;;13128:2:1;48267:67:0;;;13110:21:1;13167:2;13147:18;;;13140:30;13206:21;13186:18;;;13179:49;13245:18;;48267:67:0;12926:343:1;48267:67:0;48443:4;48394:28;5540:18;;;;;;;;;;;48499;;48475:42;;;;;;;48546:34;;-1:-1:-1;48571:9:0;;;;;;;48570:10;48546:34;:83;;;;-1:-1:-1;;;;;;48598:31:0;;;;;;:25;:31;;;;;;;;48597:32;48546:83;:126;;;;-1:-1:-1;;;;;;48647:25:0;;;;;;:19;:25;;;;;;;;48646:26;48546:126;:167;;;;-1:-1:-1;;;;;;48690:23:0;;;;;;:19;:23;;;;;;;;48689:24;48546:167;48528:297;;;48740:9;:16;;-1:-1:-1;;48740:16:0;;;;;48771:10;:8;:10::i;:::-;48796:9;:17;;-1:-1:-1;;48796:17:0;;;48528:297;48853:9;;-1:-1:-1;;;;;48964:25:0;;48837:12;48964:25;;;:19;:25;;;;;;48853:9;;;;;;;48852:10;;48964:25;;:52;;-1:-1:-1;;;;;;48993:23:0;;;;;;:19;:23;;;;;;;;48964:52;48960:87;;;-1:-1:-1;49042:5:0;48960:87;49113:8;;-1:-1:-1;;;;;49273:29:0;;49068:12;49273:29;;;:25;:29;;;;;;49068:12;;49113:8;;;;;;;49154:7;;;;;;49195:13;;;;;;49242;;;;;;;49273:29;49268:316;;;49413:13;;49341:1;;-1:-1:-1;49431:15:0;;49406:20;;49413:13;;;;;49406:4;:20;:::i;:::-;49391:9;49362:39;;;;:28;:39;;;;;;:66;;;;;;:::i;:::-;:84;49357:216;;;49468:11;49478:1;49468:11;;:::i;:::-;;-1:-1:-1;49498:17:0;49514:1;49498:17;;:::i;:::-;;-1:-1:-1;49534:17:0;49550:1;49534:17;;:::i;:::-;;;49357:216;-1:-1:-1;;;;;49603:18:0;;;;;;:14;:18;;;;;;;;49598:148;;;-1:-1:-1;49652:2:0;;-1:-1:-1;49652:2:0;;-1:-1:-1;49652:2:0;49598:148;49834:7;49830:590;;;49874:8;;49858:24;;49874:8;;;;;49858:24;;:::i;:::-;;-1:-1:-1;49897:23:0;49913:7;49897:23;;:::i;:::-;49951:7;;;;;;;;-1:-1:-1;49897:23:0;-1:-1:-1;49975:17:0;50044:7;;49951;49995:27;49897:23;49995:12;:27;:::i;:::-;:36;;;;:::i;:::-;:46;;;;:::i;:::-;:56;;;;:::i;:::-;49975:76;-1:-1:-1;50075:30:0;50101:3;50075:21;:6;49975:76;50075:10;:21::i;:::-;:25;;:30::i;:::-;50068:37;-1:-1:-1;50165:9:0;50143:19;50150:12;50068:37;50143:19;:::i;:::-;:31;;;;:::i;:::-;50120:19;;:54;;;;;;;:::i;:::-;;;;-1:-1:-1;50222:9:0;;-1:-1:-1;50206:13:0;50213:6;50206:4;:13;:::i;:::-;:25;;;;:::i;:::-;50189:13;;:42;;;;;;;:::i;:::-;;;;-1:-1:-1;50291:9:0;;-1:-1:-1;50269:19:0;50276:12;50269:4;:19;:::i;:::-;:31;;;;:::i;:::-;50246:19;;:54;;;;;;;:::i;:::-;;;;-1:-1:-1;50329:42:0;;-1:-1:-1;50345:4:0;50359;50366;50329:15;:42::i;:::-;50394:14;50404:4;50394:14;;:::i;:::-;;;49843:577;49830:590;50440:33;50456:4;50462:2;50466:6;50440:15;:33::i;:::-;45737:4810;;;;;;;;45656:4891;;;:::o;24578:191::-;24671:6;;;-1:-1:-1;;;;;24688:17:0;;;-1:-1:-1;;24688:17:0;;;;;;;24721:40;;24671:6;;;24688:17;24671:6;;24721:40;;24652:16;;24721:40;24641:128;24578:191;:::o;44083:188::-;-1:-1:-1;;;;;44166:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;44166:39:0;;;;;;;;;;44223:40;;44166:39;;:31;44223:40;;;44083:188;;:::o;50555:590::-;50706:16;;;50720:1;50706:16;;;;;;;;50682:21;;50706:16;;;;;;;;;;-1:-1:-1;50706:16:0;50682:40;;50751:4;50733;50738:1;50733:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;50733:23:0;;;:7;;;;;;;;;;:23;;;;50777:15;;:22;;;;;;;;:15;;;;;:20;;:22;;;;;50733:7;;50777:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;50767:4;50772:1;50767:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;50767:32:0;;;:7;;;;;;;;;:32;50844:15;;50812:62;;50829:4;;50844:15;50862:11;50812:8;:62::i;:::-;50913:15;;:224;;;;;-1:-1:-1;;;;;50913:15:0;;;;:66;;:224;;50994:11;;50913:15;;51064:4;;51091;;51111:15;;50913:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;50611:534;50555:590;:::o;9644:671::-;-1:-1:-1;;;;;9775:18:0;;9767:68;;;;-1:-1:-1;;;9767:68:0;;11284:2:1;9767:68:0;;;11266:21:1;11323:2;11303:18;;;11296:30;11362:34;11342:18;;;11335:62;11433:7;11413:18;;;11406:35;11458:19;;9767:68:0;11082:401:1;9767:68:0;-1:-1:-1;;;;;9854:16:0;;9846:64;;;;-1:-1:-1;;;9846:64:0;;11690:2:1;9846:64:0;;;11672:21:1;11729:2;11709:18;;;11702:30;11768:34;11748:18;;;11741:62;11839:5;11819:18;;;11812:33;11862:19;;9846:64:0;11488:399:1;9846:64:0;-1:-1:-1;;;;;9996:15:0;;9974:19;9996:15;;;;;;;;;;;10030:21;;;;10022:72;;;;-1:-1:-1;;;10022:72:0;;16313:2:1;10022:72:0;;;16295:21:1;16352:2;16332:18;;;16325:30;16391:34;16371:18;;;16364:62;16462:8;16442:18;;;16435:36;16488:19;;10022:72:0;16111:402:1;10022:72:0;-1:-1:-1;;;;;10130:15:0;;;:9;:15;;;;;;;;;;;10148:20;;;10130:38;;10190:13;;;;;;;;:23;;10162:6;;10130:9;10190:23;;10162:6;;10190:23;:::i;:::-;;;;;;;;10246:2;-1:-1:-1;;;;;10231:26:0;10240:4;-1:-1:-1;;;;;10231:26:0;;10250:6;10231:26;;;;821:25:1;;809:2;794:18;;675:177;10231:26:0;;;;;;;;10270:37;45656:4891;34348:98;34406:7;34433:5;34437:1;34433;:5;:::i;11334:591::-;-1:-1:-1;;;;;11418:21:0;;11410:67;;;;-1:-1:-1;;;11410:67:0;;16720:2:1;11410:67:0;;;16702:21:1;16759:2;16739:18;;;16732:30;16798:34;16778:18;;;16771:62;16869:3;16849:18;;;16842:31;16890:19;;11410:67:0;16518:397:1;11410:67:0;-1:-1:-1;;;;;11577:18:0;;11552:22;11577:18;;;;;;;;;;;11614:24;;;;11606:71;;;;-1:-1:-1;;;11606:71:0;;17122:2:1;11606:71:0;;;17104:21:1;17161:2;17141:18;;;17134:30;17200:34;17180:18;;;17173:62;17271:4;17251:18;;;17244:32;17293:19;;11606:71:0;16920:398:1;11606:71:0;-1:-1:-1;;;;;11713:18:0;;:9;:18;;;;;;;;;;11734:23;;;11713:44;;11779:12;:22;;11751:6;;11713:9;11779:22;;11751:6;;11779:22;:::i;:::-;;;;-1:-1:-1;;11819:37:0;;821:25:1;;;11845:1:0;;-1:-1:-1;;;;;11819:37:0;;;;;809:2:1;794:18;11819:37:0;;;;;;;45656:4891;;;:::o;51679:1549::-;51762:4;51718:23;5540:18;;;;;;;;;;;51718:50;;51779:25;51851:13;;51829:19;;51807;;:41;;;;:::i;:::-;:57;;;;:::i;:::-;51779:85;-1:-1:-1;51889:20:0;;;:46;;-1:-1:-1;51913:22:0;;51889:46;51885:59;;;51937:7;;51679:1549::o;51885:59::-;51978:18;;51960:15;:36;51956:103;;;52029:18;;52011:36;;51956:103;52128:23;52214:1;52194:17;52172:19;;52154:15;:37;;;;:::i;:::-;:57;;;;:::i;:::-;:61;;;;:::i;:::-;52128:87;-1:-1:-1;52228:26:0;52257:36;:15;52128:87;52257:19;:36::i;:::-;52228:65;-1:-1:-1;52342:21:0;52376:37;52228:65;52376:17;:37::i;:::-;52435:18;52461:44;:21;52487:17;52461:25;:44::i;:::-;52435:70;;52516:23;52542:58;52582:17;52542:35;52557:19;;52542:10;:14;;:35;;;;:::i;:58::-;52516:84;;52611:17;52637:52;52671:17;52637:29;52652:13;;52637:10;:14;;:29;;;;:::i;:52::-;52611:78;-1:-1:-1;52702:23:0;52611:78;52728:28;52741:15;52728:10;:28;:::i;:::-;:40;;;;:::i;:::-;52811:1;52789:19;:23;;;52823:19;:23;;;52857:13;:17;;;52895:15;;52887:50;;52702:66;;-1:-1:-1;;;;;;52895:15:0;;52887:50;;;;;52921:15;;52887:50;;52811:1;52887:50;52921:15;52895;52887:50;;;;;;;;;;;;;;;;;;;;-1:-1:-1;52956:9:0;;52948:38;;-1:-1:-1;;;;;52956:9:0;;;;52948:38;;;;;52976:9;;52956;52948:38;52956:9;52948:38;52976:9;52956;52948:38;;;;;;;;;;;;;;;;;;;;;53023:1;53005:15;:19;:42;;;;;53046:1;53028:15;:19;53005:42;53001:220;;;53064:53;53078:15;53095:21;53064:13;:53::i;:::-;53189:19;;53137:72;;;17525:25:1;;;17581:2;17566:18;;17559:34;;;17609:18;;;17602:34;;;;53137:72:0;;;;;;17513:2:1;53137:72:0;;;53001:220;51707:1521;;;;;;;;;51679:1549::o;33949:98::-;34007:7;34034:5;34038:1;34034;:5;:::i;33592:98::-;33650:7;33677:5;33681:1;33677;:5;:::i;51157:514::-;51338:15;;51306:62;;51323:4;;-1:-1:-1;;;;;51338:15:0;51356:11;51306:8;:62::i;:::-;51411:15;;-1:-1:-1;;;;;51411:15:0;:31;51450:9;51483:4;51503:11;51411:15;;51615:7;23381:6;;-1:-1:-1;;;;;23381:6:0;;23308:87;51615:7;51411:252;;;;;;;;;;-1:-1:-1;;;;;18029:15:1;;;51411:252:0;;;18011:34:1;18061:18;;;18054:34;;;;18104:18;;;18097:34;;;;18147:18;;;18140:34;18211:15;;;18190:19;;;18183:44;51637:15:0;18243:19:1;;;18236:35;17922:19;;51411:252:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;51157:514;;:::o;14:656:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;586:2:1;574:15;591:66;570:88;555:104;;;;661:2;551:113;;14:656;-1:-1:-1;;;14:656:1:o;857:154::-;-1:-1:-1;;;;;936:5:1;932:54;925:5;922:65;912:93;;1001:1;998;991:12;1016:315;1084:6;1092;1145:2;1133:9;1124:7;1120:23;1116:32;1113:52;;;1161:1;1158;1151:12;1113:52;1200:9;1187:23;1219:31;1244:5;1219:31;:::i;:::-;1269:5;1321:2;1306:18;;;;1293:32;;-1:-1:-1;;;1016:315:1:o;1528:156::-;1594:20;;1654:4;1643:16;;1633:27;;1623:55;;1674:1;1671;1664:12;1689:393;1767:6;1775;1783;1791;1844:3;1832:9;1823:7;1819:23;1815:33;1812:53;;;1861:1;1858;1851:12;1812:53;1884:27;1901:9;1884:27;:::i;:::-;1874:37;;1930:36;1962:2;1951:9;1947:18;1930:36;:::i;:::-;1920:46;;1985:36;2017:2;2006:9;2002:18;1985:36;:::i;:::-;1975:46;;2040:36;2072:2;2061:9;2057:18;2040:36;:::i;:::-;2030:46;;1689:393;;;;;;;:::o;2087:247::-;2146:6;2199:2;2187:9;2178:7;2174:23;2170:32;2167:52;;;2215:1;2212;2205:12;2167:52;2254:9;2241:23;2273:31;2298:5;2273:31;:::i;2339:180::-;2398:6;2451:2;2439:9;2430:7;2426:23;2422:32;2419:52;;;2467:1;2464;2457:12;2419:52;-1:-1:-1;2490:23:1;;2339:180;-1:-1:-1;2339:180:1:o;2524:456::-;2601:6;2609;2617;2670:2;2658:9;2649:7;2645:23;2641:32;2638:52;;;2686:1;2683;2676:12;2638:52;2725:9;2712:23;2744:31;2769:5;2744:31;:::i;:::-;2794:5;-1:-1:-1;2851:2:1;2836:18;;2823:32;2864:33;2823:32;2864:33;:::i;:::-;2524:456;;2916:7;;-1:-1:-1;;;2970:2:1;2955:18;;;;2942:32;;2524:456::o;3174:416::-;3239:6;3247;3300:2;3288:9;3279:7;3275:23;3271:32;3268:52;;;3316:1;3313;3306:12;3268:52;3355:9;3342:23;3374:31;3399:5;3374:31;:::i;:::-;3424:5;-1:-1:-1;3481:2:1;3466:18;;3453:32;3523:15;;3516:23;3504:36;;3494:64;;3554:1;3551;3544:12;3494:64;3577:7;3567:17;;;3174:416;;;;;:::o;3826:182::-;3883:6;3936:2;3924:9;3915:7;3911:23;3907:32;3904:52;;;3952:1;3949;3942:12;3904:52;3975:27;3992:9;3975:27;:::i;4013:388::-;4081:6;4089;4142:2;4130:9;4121:7;4117:23;4113:32;4110:52;;;4158:1;4155;4148:12;4110:52;4197:9;4184:23;4216:31;4241:5;4216:31;:::i;:::-;4266:5;-1:-1:-1;4323:2:1;4308:18;;4295:32;4336:33;4295:32;4336:33;:::i;4406:437::-;4485:1;4481:12;;;;4528;;;4549:61;;4603:4;4595:6;4591:17;4581:27;;4549:61;4656:2;4648:6;4645:14;4625:18;4622:38;4619:218;;;-1:-1:-1;;;4690:1:1;4683:88;4794:4;4791:1;4784:15;4822:4;4819:1;4812:15;4619:218;;4406:437;;;:::o;5209:184::-;-1:-1:-1;;;5258:1:1;5251:88;5358:4;5355:1;5348:15;5382:4;5379:1;5372:15;5398:204;5436:3;5472:4;5469:1;5465:12;5504:4;5501:1;5497:12;5539:3;5533:4;5529:14;5524:3;5521:23;5518:49;;;5547:18;;:::i;:::-;5583:13;;5398:204;-1:-1:-1;;;5398:204:1:o;5965:228::-;6005:7;6131:1;-1:-1:-1;;6059:74:1;6056:1;6053:81;6048:1;6041:9;6034:17;6030:105;6027:131;;;6138:18;;:::i;:::-;-1:-1:-1;6178:9:1;;5965:228::o;6198:274::-;6238:1;6264;6254:189;;-1:-1:-1;;;6296:1:1;6289:88;6400:4;6397:1;6390:15;6428:4;6425:1;6418:15;6254:189;-1:-1:-1;6457:9:1;;6198:274::o;6893:128::-;6933:3;6964:1;6960:6;6957:1;6954:13;6951:39;;;6970:18;;:::i;:::-;-1:-1:-1;7006:9:1;;6893:128::o;11892:125::-;11932:4;11960:1;11957;11954:8;11951:34;;;11965:18;;:::i;:::-;-1:-1:-1;12002:9:1;;11892:125::o;14183:258::-;14222:7;14254:6;14287:2;14284:1;14280:10;14317:2;14314:1;14310:10;14373:3;14369:2;14365:12;14360:3;14357:21;14350:3;14343:11;14336:19;14332:47;14329:73;;;14382:18;;:::i;:::-;14422:13;;14183:258;-1:-1:-1;;;;14183:258:1:o;14635:184::-;-1:-1:-1;;;14684:1:1;14677:88;14784:4;14781:1;14774:15;14808:4;14805:1;14798:15;14824:251;14894:6;14947:2;14935:9;14926:7;14922:23;14918:32;14915:52;;;14963:1;14960;14953:12;14915:52;14995:9;14989:16;15014:31;15039:5;15014:31;:::i;15080:1026::-;15342:4;15390:3;15379:9;15375:19;15421:6;15410:9;15403:25;15447:2;15485:6;15480:2;15469:9;15465:18;15458:34;15528:3;15523:2;15512:9;15508:18;15501:31;15552:6;15587;15581:13;15618:6;15610;15603:22;15656:3;15645:9;15641:19;15634:26;;15695:2;15687:6;15683:15;15669:29;;15716:1;15726:218;15740:6;15737:1;15734:13;15726:218;;;15805:13;;-1:-1:-1;;;;;15801:62:1;15789:75;;15919:15;;;;15884:12;;;;15762:1;15755:9;15726:218;;;-1:-1:-1;;;;;;;16000:55:1;;;;15995:2;15980:18;;15973:83;-1:-1:-1;;;16087:3:1;16072:19;16065:35;15961:3;15080:1026;-1:-1:-1;;;15080:1026:1:o;18282:306::-;18370:6;18378;18386;18439:2;18427:9;18418:7;18414:23;18410:32;18407:52;;;18455:1;18452;18445:12;18407:52;18484:9;18478:16;18468:26;;18534:2;18523:9;18519:18;18513:25;18503:35;;18578:2;18567:9;18563:18;18557:25;18547:35;;18282:306;;;;;:::o
Swarm Source
ipfs://ab149dc8b419b4db1c9eae3442d04c17dec25cb070f2d4ab7d3791d6f1c17fa6
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.