ERC-20
Overview
Max Total Supply
100,000,000 GIGGA
Holders
131
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
0.714702644507428413 GIGGAValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
GIGANIGGA
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-11-04 */ /* Telegram: https://t.me/GiggaETH Twitter: https://x.com/GiggaETH Website: https://giganigga.ninja @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%########%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#*+========++++++#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*++==========++*+*##%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#***+++======+++***##%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#***++=========++**#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#%**#****+==+=++++**++#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*#+#%#***##**##%+###*=%+*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*#+*******+=++++**+++-++*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*++**+++*==-========+-++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%***#*++*##***+===+++=**@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*##**####*#**++=***=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##**##*=:::-+**++**=#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*******+=--==++*++*++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+*####******+++**###*=#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%=*#####**++++***##***=*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*++###################*-=**%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*++++**############*******=--+==+#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*+++++++++*#####***####*******==++++===+*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#+==++===+++++++*#*####****************++======+**#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*+=============+++++**********************+===-====**++#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%+======+++===+==++++++++********+*******+++*+++=====-=***+==+#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@%#+====+++++====+++==+++++++**####*#*****+******++======++#**+===++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@%#**++=++*+++=++++====+++++=++*===+=+++***************###*++++======+++*+++++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@#**+======+++++++========+=+++==+*+++********+**+++********++++++++++++++*+++++++++++++*********##%@@@@@@@@@@@@@@@@ @@@@@@@@@@##**+=====++++++++=========++++==+=++**+*++****+++++++++*++++++++++++++++++++*++++++++++++++++++**++****##%@@@@@@@@@@@ @@@@@@@@@##***+++===++++*+++++=++=+++++++++++++****++**+++++++=++++++++++++++++++++++++****+++++++++++*+*****+++****+*%@@@@@@@@@ @@@@@@@@%*#++**++++++++***+++++++==+++*+++=++**+****+++++++====+***+*++++++++++++++++++**+**++++++++++*+**********++*++=#@@@@@@@ @@@@@@@@++#***++++++*+*#*****+**++++*++++*+++++++***+++++++++++*****#*+++++++++++++=+++*++++++++++++++++*******+***+--*+:*@@@@@@ @@@@@@@%=+%#*****++****####*+++**+++=++++***********++++***++++*****#**++++++++++++++++*+++**+*==++=+=++++**##*+***+*--*- #@@@@@ @@@@@@#**######**++*+*#*###***+***#*+**++********+**++++++++++****####*++++++++++++++++*++=**+++++**++++++*##***+++**=....#@@@@@ @@@@#**++++*####**+*+*##*####*#***++****#*#*#**+*****+++====+*+***####***++++++++++++++*+=-*#####**********##++*+=+**-.=:+#@@@@@ @@@%#+++=++++*##**#****##**%############%%%%%+++*##**++++==+=++***##%##**+++****++++++**+++#%%%%####***##*##*+**++**##*#**++*%@@ @@@#*+++===++++*****#*###%###%%####%#%%%%%%%*++++*#*+++++===--=+***#%%#**++***+++*++++*#***#@%%%%%%#######********###*********#@ @@##*+++==+++++++****#####%%%%%%%%%%%%@@@%%#**+*******++++=====+*###*%%##********++***#****#@@%%%%%%%%##**##********+++*******=- @%#%##**++++++++++++++**###%%%%%%%####%%%%%#*******+*********++*###*+#%%%##########**##***#%%##****#*********+++=++***+++******. @#=####****+++*****++++++++**#***++***++**%%%#***#***##############+=+#%%%####%#%%#%#%#***%%#*#****#*******#*++===++*+++++**###+ @@*%%####**+++*+****+++*++=+****+*+++++*###%%%%%%%%**#%%%%%%###*++++=+++++*#%%%%%%%%%%****%######***+*+++*+++====+++***++**####* @@#=%%%%%%##*****#********++********+==*###%%%%%@@%###%%##***++++*++++***+++*###%%%%%%*#*#%####*****+*++++++++++++++*#*++*####*. @@%+%%%#####******##**+*****************###%@%%%%%%%#####**+++++**++****+*++*######%%%#**%%%%####**#**+++**++++++++**#****#####- @@###***####****************+*********####%%%%%%%%%%#%#%##*+++****+******+=--+*###%%%%##*%%%%%%###**##*+++**+++++++***+*##*##### @@+*##***********+******+*************##%%%%%%%%%%%%###%%##****************+=+*###%%%##*#%@%%%%%##*********+*****++******####### @@=#%######++++++++++****************##%%%%@%%%%%%%%%###%#######*####********+*###%%#*#*%%%%%%%%######***##*##*++*+++*******++## @@+%%####*+++*++++*****+**#*********#%%%%%@@@%%%%%%%%#####*++***+=+*******######%%%%####%%%%%%%%%%%###########***+++*******###=% @@*%%####*+++*****+***+***###*****#%%%%%%#=-#%%%%#######%#*+**+**++*#*#******#%%%%%%%###@%@%%%%%%%%%#####%%%###***++*++#*#*###-@ @@%%%%%####************+*##########%%%%%%+.:#%%%##*****#%##*********#******++*###%%%%#**%%@@%%%%%%%%%%%%%%%##*****+++*+****###+* @@@#%%%#%##**********+++**##%%%%%%%%%%%%%+.+%%%%##****#####********##*********###%%%%%%%%@%@@@%%%%%%%%@%%#*****+*+++********##%= @@@#%###%##**********+++++*##%%%%%%%%%%%#==#%%%%####%@%##%###******########**###%%%%%%%%%@@@@@@@@%%@%%%%%%#****+**+++******##%#* @@@*#***####***+********+++*##%@%%%%#####*#%%%%%%%##%@%%%%###########*########%%%%%%%%%%#@@@@@@@@%@@%*+%%####*+****++*+*#**##%#* @@@%#*+**%%##**+*********++**#%%%#########%%@%%%%%%##%*#%#***********#######%%%%%%#%%%%%%@@@@@@@@@%@@*+#%####**+******#***#%%%%% @@@@%##**%%%%#************+*##%%%%%%######%%%%@%%%%###%%%%###*******#########%%%%%%%%%#%@@@%@%%@@@@@@#+%%%##**********#*##%%%%%% @@@@@%###%%##%#***********+*#%%@@@@@%%%%%%%@@%@@@%%%#%%#%%%%##########%#***##%%%%%%#%*#@@@@@@@@@@@@%@#+%%%##**#**##*#*#*####%%%@ @@@@@@%%##%#**##*******#**+*##%@@@@@@@%%@@%%%%@@%%%%%%%%#*=%%%%%%##########*#%%%%%%###@@@@@@@@@@@@%%@@+#%%#####***##***##**%%%@@ @@@@@@%%%#%##*+*******#*****#%%@@@@@@%%%@@@@@%%%%%%%%%%%%%#%%###***#####*+++-###%#%%#%@@@@@@@@@@@@@@@%+#%%#########***#*++#%%%@@ @@@@@@%%%%#%##*++***+******##%%@@@@@@%%%@@@@@@@%%%%%%%%%%%#:=*#:...*******##=#*##%%%%@%@@@@@@@@@@@@@@%+#%##**####******++*#%%%@@ @@@@@@@%%%%#%#*+++*********##%@@@@@@@@@@@@@%@@@@@@@@@%%%%%%#*##+=++##%%%###**#%%%%@%%%%%@@@@@@@@@@@@@@=#%%##**###******+*#%%%@@@ @@@@@@@@%%%%###**++****#***#%%@@@@@@@@@@@%@%%@@@@@@@@@@@@%@%%@@%%%%%@@@%%%%%%%%%%%%@@%%%%@@@@@@@@@@@%@###%%#**********+*#%%%@@@@ @@@@@@@@@%%%%%%#***+*#*****#%%@@@@@@@@@@@%@@@@@@%%%%%%%%%@@%%%@%%%%%%%@%%%%%%@@%@%%%@@%@%@@@@@@@@@@@@@@@#%%###**#******#%%%%@@@@ @@@@@@@@@@%%@%%##**++*##*###%@@@@@@@@%@@@@@@@@@@%@@@@%%%%%%%%%@%%%%%%%@%%%%%%%%%@%%%@%%%%%%@@@@@@@@@@@@@%#%%%####*****#%%%%@@@@@ @@@@@@@@@@@@%@@%%#***++**#%%@@@@@@@@@%%@@@@@@@%%%@@@@@@%@@%%@@@@%%%%%%@%%%%%%%%@@@%%%@%%%%%%@@@@@@@@@@@@@#+##******###%%@@@@@@@@ @@@@@@@@@@@@@%%@%%%#*******%@@@@@%%%%%%@@%%@@%%@%@@@@@@@%%@%%%%%@@%%%%%@%%@%%%@%%%@%%%%%%%%%@@@@@@@@@@@@#=+#****####%%%@@@@@@@@@ @@@@@@@@@@@@@@@@%%%##****#*#%#%%%@@%%%%@@@@%%%@@@@@@@@%%%%@@@@@%%%%%%%%@%@%%%%%%%%%%%%%%%@%%%@@@@@@@@@@@#*%****#####%@@@@@@@@@@@ +#@@@@@@@@@@@@@@@@%%##******%%%@@@@@%%%@@@@@@@@%%%%#%%%%@@%%@%%@%%%%%%@%%%%%%@%%%%%%%@%%%%%%%%@@@@@@@@@@%#******###@@@@@@@@@@@@@ ==#@@@@@@@@%%%%%@@@@%##*****#%@@@@@@%%%@@@@@@@@@@%%%@@@@@@%%%%%%@@@%%%%%%%%%%%%%%%%%%%%%@@%%%%@@@@@@@@@%%#**######%@@@@@@@@@@@@@ =-=@@@@@@@@%%%%%%%%%%###*****#%@@@@@%%@@@@@@@@@@@@%%@%@@@@@@%%%%@@@%%%%%%%%%%%%%%%%%%%%%%@%%@%%@@@@@@@@%#####**###%@@@@@@@@@@@@% ---#@@@@@@@@%%%%%%%%%%##*****###%@@@%@@@@@@@@@%@@%%%@@@%@%%%%@@%%@@%%%@%%%@%%@%%%%%%%%@%%@%%%@%@@@@@@%###*#**####%%@@@@@@@@@@@@% =--*@@@@@@@%%%%%%%@@##********#**%@@%@@@@@@@@@@@@@@@@@%%%%%%@@@@@@%%%%@%%%%%%@%%%%%%%%%%%@%@%@@@@@@@%%#********#####@@@@@@@@@@@% ---=%%%%%%%%%%@@@@@%#********+****###@@@@@@@@@@@@@%%@@@@%%%@@@@@@@@%%%%%%%%#%%%%%%%%%%%%%%%@@@@@@@@%##*********#####%@@@@@@@@@@% ----###%%%%@@@@@@@@%##***********####%@@@@@@@@@@@@@@%@@%@@%@@%@%@@@%%%@%%%%%%%@@%%%%%%%%%%%%%%@@@@@%#%###*******####@@@@@@@@@@@% ----*##%%@@@@@@@@@@@#####*****#**#%%**%@@@%%%%%%%%%@@%%%@@@%%%%%@%%%%%%*#%%%%%%%%%%%@@%%%%%%%@@@@@%%#*%%#*##*#*####%@@@@@@@@@@@% */ // SPDX-License-Identifier: UNLICENSED pragma solidity 0.8.19; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _transferOwnership(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); 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; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } library SafeMath { 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); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } interface IUniswapV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval( address indexed owner, address indexed spender, uint256 value ); event Transfer(address indexed from, address indexed to, uint256 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 (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 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 (uint256); function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; event Mint(address indexed sender, uint256 amount0, uint256 amount1); event Burn( address indexed sender, uint256 amount0, uint256 amount1, address indexed to ); event Swap( address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint256); 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 (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function mint(address to) external returns (uint256 liquidity); function burn(address to) external returns (uint256 amount0, uint256 amount1); function swap( uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data ) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router02 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } contract GIGANIGGA is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; address public constant deadAddress = address(0xdead); bool private swapping; address private marketingWallet; uint256 public maxTransactionAmount; uint256 public swapTokensAtAmount; uint256 public maxWallet; bool public limitsInEffect = true; bool public tradingActive = false; bool public swapEnabled = false; uint256 private launchedAt; uint256 private launchedTime; uint256 public deadBlocks; uint256 public buyTotalFees; uint256 private buyMarketingFee; uint256 public sellTotalFees; uint256 public sellMarketingFee; mapping(address => bool) private _isExcludedFromFees; mapping(uint256 => uint256) private swapInBlock; mapping(address => bool) public _isExcludedMaxTransactionAmount; mapping(address => bool) public automatedMarketMakerPairs; event UpdateUniswapV2Router( address indexed newAddress, address indexed oldAddress ); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event marketingWalletUpdated( address indexed newWallet, address indexed oldWallet ); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); constructor() ERC20(unicode"GIGA NIGGA", unicode"GIGGA") { 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 = 100_000_000 * 1e18; maxTransactionAmount = 2_000_000 * 1e18; maxWallet = 2_000_000 * 1e18; swapTokensAtAmount = totalSupply * 1 / 1000; marketingWallet = msg.sender; excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); _mint(msg.sender, totalSupply); } receive() external payable {} function enableTrading(uint256 _deadBlocks) external onlyOwner { deadBlocks = _deadBlocks; tradingActive = true; swapEnabled = true; launchedAt = block.number; launchedTime = block.timestamp; } function removeLimits() external onlyOwner returns (bool) { limitsInEffect = false; return true; } 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 * (10**18); } function updateMaxWalletAmount(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 5) / 1000) / 1e18, "Cannot set maxWallet lower than 0.5%" ); maxWallet = newNum * (10**18); } function whitelistContract(address _whitelist,bool isWL) public onlyOwner { _isExcludedMaxTransactionAmount[_whitelist] = isWL; _isExcludedFromFees[_whitelist] = isWL; } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } // only use to disable contract sales if absolutely necessary (emergency use only) function updateSwapEnabled(bool enabled) external onlyOwner { swapEnabled = enabled; } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function manualswap(uint256 amount) external { require(_msgSender() == marketingWallet); require(amount <= balanceOf(address(this)) && amount > 0, "Wrong amount"); swapTokensForEth(amount); } function manualsend() external { bool success; (success, ) = address(marketingWallet).call{ value: address(this).balance }(""); } 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 updateBuyFees( uint256 _marketingFee ) external onlyOwner { buyMarketingFee = _marketingFee; buyTotalFees = buyMarketingFee; require(buyTotalFees <= 20, "Must keep fees at 20% or less"); } function updateSellFees( uint256 _marketingFee ) external onlyOwner { sellMarketingFee = _marketingFee; sellTotalFees = sellMarketingFee; require(sellTotalFees <= 20, "Must keep fees at 20% or less"); } function updateMarketingWallet(address newMarketingWallet) external onlyOwner { emit marketingWalletUpdated(newMarketingWallet, marketingWallet); marketingWallet = newMarketingWallet; } 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; } uint256 blockNum = block.number; if (limitsInEffect) { if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping ) { if ((launchedAt + deadBlocks) >= blockNum) { buyMarketingFee = 25; buyTotalFees = buyMarketingFee; sellMarketingFee = 25; sellTotalFees = sellMarketingFee; } else if(blockNum > (launchedAt + deadBlocks) && blockNum <= launchedAt + 30) { buyMarketingFee = 15; buyTotalFees = buyMarketingFee; sellMarketingFee = 20; sellTotalFees = sellMarketingFee; } else { buyMarketingFee = 0; buyTotalFees = buyMarketingFee; sellMarketingFee = 0; sellTotalFees = sellMarketingFee; } if (!tradingActive) { require( _isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active." ); } //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 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 && swapEnabled && !swapping && (swapInBlock[blockNum] < 2) && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { swapping = true; swapBack(); ++swapInBlock[blockNum]; 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 = 0; // only take fees on buys/sells, do not take on wallet transfers if (takeFee) { // on sell if (automatedMarketMakerPairs[to] && sellTotalFees > 0) { fees = amount.mul(sellTotalFees).div(100); } // on buy else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount.mul(buyTotalFees).div(100); } if (fees > 0) { super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); bool success; if (contractBalance == 0) { return; } if (contractBalance > swapTokensAtAmount * 10) { contractBalance = swapTokensAtAmount * 10; } uint256 amountToSwapForETH = contractBalance; swapTokensForEth(amountToSwapForETH); (success, ) = address(marketingWallet).call{ value: address(this).balance }(""); } 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 ); } }
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":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","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":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deadBlocks","type":"uint256"}],"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":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","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":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","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":"_marketingFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_whitelist","type":"address"},{"internalType":"bool","name":"isWL","type":"bool"}],"name":"whitelistContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c0604052600a805462ffffff191660011790553480156200002057600080fd5b506040518060400160405280600a81526020016947494741204e4947474160b01b81525060405180604001604052806005815260200164474947474160d81b81525081600390816200007391906200067c565b5060046200008282826200067c565b5050506200009f620000996200032060201b60201c565b62000324565b737a250d5630b4cf539739df2c5dacb4c659f2488d620000c181600162000376565b6001600160a01b03811660808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156200010c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000132919062000748565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000180573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001a6919062000748565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620001f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200021a919062000748565b6001600160a01b031660a08190526200023590600162000376565b60a05162000245906001620003f0565b6a01a784379d99db4200000060078190556009556a52b7d2dcc80cd2e40000006103e86200027582600162000790565b620002819190620007b0565b600855600680546001600160a01b03191633179055620002b5620002ad6005546001600160a01b031690565b600162000444565b620002c230600162000444565b620002d161dead600162000444565b620002f0620002e86005546001600160a01b031690565b600162000376565b620002fd30600162000376565b6200030c61dead600162000376565b620003183382620004ee565b5050620007e9565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6005546001600160a01b03163314620003c55760405162461bcd60e51b8152602060048201819052602482015260008051602062002bae83398151915260448201526064015b60405180910390fd5b6001600160a01b03919091166000908152601460205260409020805460ff1916911515919091179055565b6001600160a01b038216600081815260156020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b031633146200048f5760405162461bcd60e51b8152602060048201819052602482015260008051602062002bae8339815191526044820152606401620003bc565b6001600160a01b038216600081815260126020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620005465760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620003bc565b80600260008282546200055a9190620007d3565b90915550506001600160a01b0382166000908152602081905260408120805483929062000589908490620007d3565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200060357607f821691505b6020821081036200062457634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620005d357600081815260208120601f850160051c81016020861015620006535750805b601f850160051c820191505b8181101562000674578281556001016200065f565b505050505050565b81516001600160401b03811115620006985762000698620005d8565b620006b081620006a98454620005ee565b846200062a565b602080601f831160018114620006e85760008415620006cf5750858301515b600019600386901b1c1916600185901b17855562000674565b600085815260208120601f198616915b828110156200071957888601518255948401946001909101908401620006f8565b5085821015620007385787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200075b57600080fd5b81516001600160a01b03811681146200077357600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417620007aa57620007aa6200077a565b92915050565b600082620007ce57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620007aa57620007aa6200077a565b60805160a0516123836200082b600039600081816103b30152610d2a0152600081816102b401528181611b5801528181611c110152611c4d01526123836000f3fe60806040526004361061020b5760003560e01c80638da5cb5b116101145780638da5cb5b146105045780639213691314610519578063924de9b71461052f57806395d89b411461054f5780639a7a23d614610564578063a457c2d714610584578063a672990c146105a4578063a9059cbb146105c4578063aacebbe3146105e4578063b62496f514610604578063bbc0c74214610634578063c024666814610653578063c18bc19514610673578063c8c8ebe414610693578063d257b34f146106a9578063d85ba063146106c9578063dd62ed3e146106df578063e2f4560514610725578063eba4c3331461073b578063f2fde38b1461075b578063f8b45b051461077b578063fabb0b4f1461079157600080fd5b806306fdde0314610217578063095ea7b31461024257806310d5de53146102725780631694505e146102a257806318160ddd146102ee578063203e727e1461030d57806323b872dd1461032f57806327c8f8351461034f578063313ce56714610365578063395093511461038157806349bd5a5e146103a15780634a62bb65146103d55780636a486a8e146103ef5780636ddd1713146104055780636fc3eaec1461042557806370a082311461043a578063715018a61461045a57806371fc46881461046f578063751039fc1461048f5780637571336a146104a457806382aa7c68146104c4578063881dce60146104e457600080fd5b3661021257005b600080fd5b34801561022357600080fd5b5061022c6107a7565b6040516102399190611f21565b60405180910390f35b34801561024e57600080fd5b5061026261025d366004611f84565b610839565b6040519015158152602001610239565b34801561027e57600080fd5b5061026261028d366004611fb0565b60146020526000908152604090205460ff1681565b3480156102ae57600080fd5b506102d67f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610239565b3480156102fa57600080fd5b506002545b604051908152602001610239565b34801561031957600080fd5b5061032d610328366004611fcd565b610850565b005b34801561033b57600080fd5b5061026261034a366004611fe6565b61093b565b34801561035b57600080fd5b506102d661dead81565b34801561037157600080fd5b5060405160128152602001610239565b34801561038d57600080fd5b5061026261039c366004611f84565b6109e5565b3480156103ad57600080fd5b506102d67f000000000000000000000000000000000000000000000000000000000000000081565b3480156103e157600080fd5b50600a546102629060ff1681565b3480156103fb57600080fd5b506102ff60105481565b34801561041157600080fd5b50600a546102629062010000900460ff1681565b34801561043157600080fd5b5061032d610a21565b34801561044657600080fd5b506102ff610455366004611fb0565b610a79565b34801561046657600080fd5b5061032d610a94565b34801561047b57600080fd5b5061032d61048a366004611fcd565b610acf565b34801561049b57600080fd5b50610262610b2c565b3480156104b057600080fd5b5061032d6104bf366004612037565b610b6d565b3480156104d057600080fd5b5061032d6104df366004611fcd565b610bc7565b3480156104f057600080fd5b5061032d6104ff366004611fcd565b610c14565b34801561051057600080fd5b506102d6610c90565b34801561052557600080fd5b506102ff60115481565b34801561053b57600080fd5b5061032d61054a36600461206c565b610c9f565b34801561055b57600080fd5b5061022c610cea565b34801561057057600080fd5b5061032d61057f366004612037565b610cf9565b34801561059057600080fd5b5061026261059f366004611f84565b610dd9565b3480156105b057600080fd5b5061032d6105bf366004612037565b610e72565b3480156105d057600080fd5b506102626105df366004611f84565b610edf565b3480156105f057600080fd5b5061032d6105ff366004611fb0565b610eec565b34801561061057600080fd5b5061026261061f366004611fb0565b60156020526000908152604090205460ff1681565b34801561064057600080fd5b50600a5461026290610100900460ff1681565b34801561065f57600080fd5b5061032d61066e366004612037565b610f78565b34801561067f57600080fd5b5061032d61068e366004611fcd565b611006565b34801561069f57600080fd5b506102ff60075481565b3480156106b557600080fd5b506102626106c4366004611fcd565b6110dc565b3480156106d557600080fd5b506102ff600e5481565b3480156106eb57600080fd5b506102ff6106fa366004612087565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561073157600080fd5b506102ff60085481565b34801561074757600080fd5b5061032d610756366004611fcd565b611237565b34801561076757600080fd5b5061032d610776366004611fb0565b611291565b34801561078757600080fd5b506102ff60095481565b34801561079d57600080fd5b506102ff600d5481565b6060600380546107b6906120c0565b80601f01602080910402602001604051908101604052809291908181526020018280546107e2906120c0565b801561082f5780601f106108045761010080835404028352916020019161082f565b820191906000526020600020905b81548152906001019060200180831161081257829003601f168201915b5050505050905090565b600061084633848461132e565b5060015b92915050565b33610859610c90565b6001600160a01b0316146108885760405162461bcd60e51b815260040161087f906120fa565b60405180910390fd5b670de0b6b3a76400006103e861089d60025490565b6108a8906001612145565b6108b2919061215c565b6108bc919061215c565b8110156109235760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b606482015260840161087f565b61093581670de0b6b3a7640000612145565b60075550565b6000610948848484611452565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156109cd5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161087f565b6109da853385840361132e565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610846918590610a1c90869061217e565b61132e565b6006546040516000916001600160a01b03169047908381818185875af1925050503d8060008114610a6e576040519150601f19603f3d011682016040523d82523d6000602084013e610a73565b606091505b50505050565b6001600160a01b031660009081526020819052604090205490565b33610a9d610c90565b6001600160a01b031614610ac35760405162461bcd60e51b815260040161087f906120fa565b610acd6000611aaf565b565b33610ad8610c90565b6001600160a01b031614610afe5760405162461bcd60e51b815260040161087f906120fa565b600f819055600e8190556014811115610b295760405162461bcd60e51b815260040161087f90612191565b50565b600033610b37610c90565b6001600160a01b031614610b5d5760405162461bcd60e51b815260040161087f906120fa565b50600a805460ff19169055600190565b33610b76610c90565b6001600160a01b031614610b9c5760405162461bcd60e51b815260040161087f906120fa565b6001600160a01b03919091166000908152601460205260409020805460ff1916911515919091179055565b33610bd0610c90565b6001600160a01b031614610bf65760405162461bcd60e51b815260040161087f906120fa565b600d55600a805462ffff0019166201010017905543600b5542600c55565b6006546001600160a01b0316336001600160a01b031614610c3457600080fd5b610c3d30610a79565b8111158015610c4c5750600081115b610c875760405162461bcd60e51b815260206004820152600c60248201526b15dc9bdb99c8185b5bdd5b9d60a21b604482015260640161087f565b610b2981611b01565b6005546001600160a01b031690565b33610ca8610c90565b6001600160a01b031614610cce5760405162461bcd60e51b815260040161087f906120fa565b600a8054911515620100000262ff000019909216919091179055565b6060600480546107b6906120c0565b33610d02610c90565b6001600160a01b031614610d285760405162461bcd60e51b815260040161087f906120fa565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603610dcb5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d206044820152786175746f6d617465644d61726b65744d616b6572506169727360381b606482015260840161087f565b610dd58282611cc1565b5050565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610e5b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161087f565b610e68338585840361132e565b5060019392505050565b33610e7b610c90565b6001600160a01b031614610ea15760405162461bcd60e51b815260040161087f906120fa565b6001600160a01b039091166000908152601460209081526040808320805494151560ff19958616811790915560129092529091208054909216179055565b6000610846338484611452565b33610ef5610c90565b6001600160a01b031614610f1b5760405162461bcd60e51b815260040161087f906120fa565b6006546040516001600160a01b03918216918316907fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567490600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b33610f81610c90565b6001600160a01b031614610fa75760405162461bcd60e51b815260040161087f906120fa565b6001600160a01b038216600081815260126020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b3361100f610c90565b6001600160a01b0316146110355760405162461bcd60e51b815260040161087f906120fa565b670de0b6b3a76400006103e861104a60025490565b611055906005612145565b61105f919061215c565b611069919061215c565b8110156110c45760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b606482015260840161087f565b6110d681670de0b6b3a7640000612145565b60095550565b6000336110e7610c90565b6001600160a01b03161461110d5760405162461bcd60e51b815260040161087f906120fa565b620186a061111a60025490565b611125906001612145565b61112f919061215c565b82101561119c5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b606482015260840161087f565b6103e86111a860025490565b6111b3906005612145565b6111bd919061215c565b8211156112295760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b606482015260840161087f565b50600881905560015b919050565b33611240610c90565b6001600160a01b0316146112665760405162461bcd60e51b815260040161087f906120fa565b601181905560108190556014811115610b295760405162461bcd60e51b815260040161087f90612191565b3361129a610c90565b6001600160a01b0316146112c05760405162461bcd60e51b815260040161087f906120fa565b6001600160a01b0381166113255760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161087f565b610b2981611aaf565b6001600160a01b0383166113905760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161087f565b6001600160a01b0382166113f15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161087f565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166114785760405162461bcd60e51b815260040161087f906121c8565b6001600160a01b03821661149e5760405162461bcd60e51b815260040161087f9061220d565b806000036114b7576114b283836000611d15565b505050565b600a54439060ff1615611864576114cc610c90565b6001600160a01b0316846001600160a01b03161415801561150657506114f0610c90565b6001600160a01b0316836001600160a01b031614155b801561151a57506001600160a01b03831615155b801561153157506001600160a01b03831661dead14155b80156115475750600554600160a01b900460ff16155b156118645780600d54600b5461155d919061217e565b1061157b576019600f819055600e81905560118190556010556115d7565b600d54600b5461158b919061217e565b811180156115a65750600b546115a290601e61217e565b8111155b156115c257600f808055600e55601460118190556010556115d7565b6000600f819055600e81905560118190556010555b600a54610100900460ff1661166a576001600160a01b03841660009081526012602052604090205460ff168061162557506001600160a01b03831660009081526012602052604090205460ff165b61166a5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b604482015260640161087f565b6001600160a01b03841660009081526015602052604090205460ff1680156116ab57506001600160a01b03831660009081526014602052604090205460ff16155b15611759576007548211156117205760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b606482015260840161087f565b60095461172c84610a79565b611736908461217e565b11156117545760405162461bcd60e51b815260040161087f90612250565b611864565b6001600160a01b03831660009081526015602052604090205460ff16801561179a57506001600160a01b03841660009081526014602052604090205460ff16155b15611810576007548211156117545760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b606482015260840161087f565b6001600160a01b03831660009081526014602052604090205460ff166118645760095461183c84610a79565b611846908461217e565b11156118645760405162461bcd60e51b815260040161087f90612250565b600061186f30610a79565b6008549091508110801590819061188e5750600a5462010000900460ff165b80156118a45750600554600160a01b900460ff16155b80156118be57506000838152601360205260409020546002115b80156118e357506001600160a01b03861660009081526015602052604090205460ff16155b801561190857506001600160a01b03861660009081526012602052604090205460ff16155b801561192d57506001600160a01b03851660009081526012602052604090205460ff16155b1561197b576005805460ff60a01b1916600160a01b17905561194d611e6a565b600083815260136020526040812080549091906119699061227d565b909155506005805460ff60a01b191690555b6005546001600160a01b03871660009081526012602052604090205460ff600160a01b9092048216159116806119c957506001600160a01b03861660009081526012602052604090205460ff165b156119d2575060005b60008115611a9a576001600160a01b03871660009081526015602052604090205460ff168015611a0457506000601054115b15611a3057611a296064611a2360105489611f0290919063ffffffff16565b90611f15565b9050611a7c565b6001600160a01b03881660009081526015602052604090205460ff168015611a5a57506000600e54115b15611a7c57611a796064611a23600e5489611f0290919063ffffffff16565b90505b8015611a8d57611a8d883083611d15565b611a978187612296565b95505b611aa5888888611d15565b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611b3657611b366122a9565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd891906122bf565b81600181518110611beb57611beb6122a9565b60200260200101906001600160a01b031690816001600160a01b031681525050611c36307f00000000000000000000000000000000000000000000000000000000000000008461132e565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790611c8b9085906000908690309042906004016122dc565b600060405180830381600087803b158015611ca557600080fd5b505af1158015611cb9573d6000803e3d6000fd5b505050505050565b6001600160a01b038216600081815260156020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611d3b5760405162461bcd60e51b815260040161087f906121c8565b6001600160a01b038216611d615760405162461bcd60e51b815260040161087f9061220d565b6001600160a01b03831660009081526020819052604090205481811015611dd95760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161087f565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611e1090849061217e565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611e5c91815260200190565b60405180910390a350505050565b6000611e7530610a79565b9050600081600003611e85575050565b600854611e9390600a612145565b821115611eab57600854611ea890600a612145565b91505b81611eb581611b01565b6006546040516001600160a01b03909116904790600081818185875af1925050503d8060008114611cb9576040519150601f19603f3d011682016040523d82523d6000602084013e611cb9565b6000611f0e8284612145565b9392505050565b6000611f0e828461215c565b600060208083528351808285015260005b81811015611f4e57858101830151858201604001528201611f32565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610b2957600080fd5b60008060408385031215611f9757600080fd5b8235611fa281611f6f565b946020939093013593505050565b600060208284031215611fc257600080fd5b8135611f0e81611f6f565b600060208284031215611fdf57600080fd5b5035919050565b600080600060608486031215611ffb57600080fd5b833561200681611f6f565b9250602084013561201681611f6f565b929592945050506040919091013590565b8035801515811461123257600080fd5b6000806040838503121561204a57600080fd5b823561205581611f6f565b915061206360208401612027565b90509250929050565b60006020828403121561207e57600080fd5b611f0e82612027565b6000806040838503121561209a57600080fd5b82356120a581611f6f565b915060208301356120b581611f6f565b809150509250929050565b600181811c908216806120d457607f821691505b6020821081036120f457634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761084a5761084a61212f565b60008261217957634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561084a5761084a61212f565b6020808252601d908201527f4d757374206b656570206665657320617420323025206f72206c657373000000604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526013908201527213585e081dd85b1b195d08195e18d959591959606a1b604082015260600190565b60006001820161228f5761228f61212f565b5060010190565b8181038181111561084a5761084a61212f565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156122d157600080fd5b8151611f0e81611f6f565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561232c5784516001600160a01b031683529383019391830191600101612307565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220f8e9d5cb1466e12ba721758fdae4f0921402cd4816fcb85e42475aafd215aac364736f6c634300081300334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572
Deployed Bytecode
0x60806040526004361061020b5760003560e01c80638da5cb5b116101145780638da5cb5b146105045780639213691314610519578063924de9b71461052f57806395d89b411461054f5780639a7a23d614610564578063a457c2d714610584578063a672990c146105a4578063a9059cbb146105c4578063aacebbe3146105e4578063b62496f514610604578063bbc0c74214610634578063c024666814610653578063c18bc19514610673578063c8c8ebe414610693578063d257b34f146106a9578063d85ba063146106c9578063dd62ed3e146106df578063e2f4560514610725578063eba4c3331461073b578063f2fde38b1461075b578063f8b45b051461077b578063fabb0b4f1461079157600080fd5b806306fdde0314610217578063095ea7b31461024257806310d5de53146102725780631694505e146102a257806318160ddd146102ee578063203e727e1461030d57806323b872dd1461032f57806327c8f8351461034f578063313ce56714610365578063395093511461038157806349bd5a5e146103a15780634a62bb65146103d55780636a486a8e146103ef5780636ddd1713146104055780636fc3eaec1461042557806370a082311461043a578063715018a61461045a57806371fc46881461046f578063751039fc1461048f5780637571336a146104a457806382aa7c68146104c4578063881dce60146104e457600080fd5b3661021257005b600080fd5b34801561022357600080fd5b5061022c6107a7565b6040516102399190611f21565b60405180910390f35b34801561024e57600080fd5b5061026261025d366004611f84565b610839565b6040519015158152602001610239565b34801561027e57600080fd5b5061026261028d366004611fb0565b60146020526000908152604090205460ff1681565b3480156102ae57600080fd5b506102d67f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610239565b3480156102fa57600080fd5b506002545b604051908152602001610239565b34801561031957600080fd5b5061032d610328366004611fcd565b610850565b005b34801561033b57600080fd5b5061026261034a366004611fe6565b61093b565b34801561035b57600080fd5b506102d661dead81565b34801561037157600080fd5b5060405160128152602001610239565b34801561038d57600080fd5b5061026261039c366004611f84565b6109e5565b3480156103ad57600080fd5b506102d67f000000000000000000000000308ffb97c73f516fb7ea0db185b744cf4ba9e3b681565b3480156103e157600080fd5b50600a546102629060ff1681565b3480156103fb57600080fd5b506102ff60105481565b34801561041157600080fd5b50600a546102629062010000900460ff1681565b34801561043157600080fd5b5061032d610a21565b34801561044657600080fd5b506102ff610455366004611fb0565b610a79565b34801561046657600080fd5b5061032d610a94565b34801561047b57600080fd5b5061032d61048a366004611fcd565b610acf565b34801561049b57600080fd5b50610262610b2c565b3480156104b057600080fd5b5061032d6104bf366004612037565b610b6d565b3480156104d057600080fd5b5061032d6104df366004611fcd565b610bc7565b3480156104f057600080fd5b5061032d6104ff366004611fcd565b610c14565b34801561051057600080fd5b506102d6610c90565b34801561052557600080fd5b506102ff60115481565b34801561053b57600080fd5b5061032d61054a36600461206c565b610c9f565b34801561055b57600080fd5b5061022c610cea565b34801561057057600080fd5b5061032d61057f366004612037565b610cf9565b34801561059057600080fd5b5061026261059f366004611f84565b610dd9565b3480156105b057600080fd5b5061032d6105bf366004612037565b610e72565b3480156105d057600080fd5b506102626105df366004611f84565b610edf565b3480156105f057600080fd5b5061032d6105ff366004611fb0565b610eec565b34801561061057600080fd5b5061026261061f366004611fb0565b60156020526000908152604090205460ff1681565b34801561064057600080fd5b50600a5461026290610100900460ff1681565b34801561065f57600080fd5b5061032d61066e366004612037565b610f78565b34801561067f57600080fd5b5061032d61068e366004611fcd565b611006565b34801561069f57600080fd5b506102ff60075481565b3480156106b557600080fd5b506102626106c4366004611fcd565b6110dc565b3480156106d557600080fd5b506102ff600e5481565b3480156106eb57600080fd5b506102ff6106fa366004612087565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561073157600080fd5b506102ff60085481565b34801561074757600080fd5b5061032d610756366004611fcd565b611237565b34801561076757600080fd5b5061032d610776366004611fb0565b611291565b34801561078757600080fd5b506102ff60095481565b34801561079d57600080fd5b506102ff600d5481565b6060600380546107b6906120c0565b80601f01602080910402602001604051908101604052809291908181526020018280546107e2906120c0565b801561082f5780601f106108045761010080835404028352916020019161082f565b820191906000526020600020905b81548152906001019060200180831161081257829003601f168201915b5050505050905090565b600061084633848461132e565b5060015b92915050565b33610859610c90565b6001600160a01b0316146108885760405162461bcd60e51b815260040161087f906120fa565b60405180910390fd5b670de0b6b3a76400006103e861089d60025490565b6108a8906001612145565b6108b2919061215c565b6108bc919061215c565b8110156109235760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b606482015260840161087f565b61093581670de0b6b3a7640000612145565b60075550565b6000610948848484611452565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156109cd5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161087f565b6109da853385840361132e565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610846918590610a1c90869061217e565b61132e565b6006546040516000916001600160a01b03169047908381818185875af1925050503d8060008114610a6e576040519150601f19603f3d011682016040523d82523d6000602084013e610a73565b606091505b50505050565b6001600160a01b031660009081526020819052604090205490565b33610a9d610c90565b6001600160a01b031614610ac35760405162461bcd60e51b815260040161087f906120fa565b610acd6000611aaf565b565b33610ad8610c90565b6001600160a01b031614610afe5760405162461bcd60e51b815260040161087f906120fa565b600f819055600e8190556014811115610b295760405162461bcd60e51b815260040161087f90612191565b50565b600033610b37610c90565b6001600160a01b031614610b5d5760405162461bcd60e51b815260040161087f906120fa565b50600a805460ff19169055600190565b33610b76610c90565b6001600160a01b031614610b9c5760405162461bcd60e51b815260040161087f906120fa565b6001600160a01b03919091166000908152601460205260409020805460ff1916911515919091179055565b33610bd0610c90565b6001600160a01b031614610bf65760405162461bcd60e51b815260040161087f906120fa565b600d55600a805462ffff0019166201010017905543600b5542600c55565b6006546001600160a01b0316336001600160a01b031614610c3457600080fd5b610c3d30610a79565b8111158015610c4c5750600081115b610c875760405162461bcd60e51b815260206004820152600c60248201526b15dc9bdb99c8185b5bdd5b9d60a21b604482015260640161087f565b610b2981611b01565b6005546001600160a01b031690565b33610ca8610c90565b6001600160a01b031614610cce5760405162461bcd60e51b815260040161087f906120fa565b600a8054911515620100000262ff000019909216919091179055565b6060600480546107b6906120c0565b33610d02610c90565b6001600160a01b031614610d285760405162461bcd60e51b815260040161087f906120fa565b7f000000000000000000000000308ffb97c73f516fb7ea0db185b744cf4ba9e3b66001600160a01b0316826001600160a01b031603610dcb5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d206044820152786175746f6d617465644d61726b65744d616b6572506169727360381b606482015260840161087f565b610dd58282611cc1565b5050565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610e5b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161087f565b610e68338585840361132e565b5060019392505050565b33610e7b610c90565b6001600160a01b031614610ea15760405162461bcd60e51b815260040161087f906120fa565b6001600160a01b039091166000908152601460209081526040808320805494151560ff19958616811790915560129092529091208054909216179055565b6000610846338484611452565b33610ef5610c90565b6001600160a01b031614610f1b5760405162461bcd60e51b815260040161087f906120fa565b6006546040516001600160a01b03918216918316907fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567490600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b33610f81610c90565b6001600160a01b031614610fa75760405162461bcd60e51b815260040161087f906120fa565b6001600160a01b038216600081815260126020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b3361100f610c90565b6001600160a01b0316146110355760405162461bcd60e51b815260040161087f906120fa565b670de0b6b3a76400006103e861104a60025490565b611055906005612145565b61105f919061215c565b611069919061215c565b8110156110c45760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b606482015260840161087f565b6110d681670de0b6b3a7640000612145565b60095550565b6000336110e7610c90565b6001600160a01b03161461110d5760405162461bcd60e51b815260040161087f906120fa565b620186a061111a60025490565b611125906001612145565b61112f919061215c565b82101561119c5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b606482015260840161087f565b6103e86111a860025490565b6111b3906005612145565b6111bd919061215c565b8211156112295760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b606482015260840161087f565b50600881905560015b919050565b33611240610c90565b6001600160a01b0316146112665760405162461bcd60e51b815260040161087f906120fa565b601181905560108190556014811115610b295760405162461bcd60e51b815260040161087f90612191565b3361129a610c90565b6001600160a01b0316146112c05760405162461bcd60e51b815260040161087f906120fa565b6001600160a01b0381166113255760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161087f565b610b2981611aaf565b6001600160a01b0383166113905760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161087f565b6001600160a01b0382166113f15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161087f565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166114785760405162461bcd60e51b815260040161087f906121c8565b6001600160a01b03821661149e5760405162461bcd60e51b815260040161087f9061220d565b806000036114b7576114b283836000611d15565b505050565b600a54439060ff1615611864576114cc610c90565b6001600160a01b0316846001600160a01b03161415801561150657506114f0610c90565b6001600160a01b0316836001600160a01b031614155b801561151a57506001600160a01b03831615155b801561153157506001600160a01b03831661dead14155b80156115475750600554600160a01b900460ff16155b156118645780600d54600b5461155d919061217e565b1061157b576019600f819055600e81905560118190556010556115d7565b600d54600b5461158b919061217e565b811180156115a65750600b546115a290601e61217e565b8111155b156115c257600f808055600e55601460118190556010556115d7565b6000600f819055600e81905560118190556010555b600a54610100900460ff1661166a576001600160a01b03841660009081526012602052604090205460ff168061162557506001600160a01b03831660009081526012602052604090205460ff165b61166a5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b604482015260640161087f565b6001600160a01b03841660009081526015602052604090205460ff1680156116ab57506001600160a01b03831660009081526014602052604090205460ff16155b15611759576007548211156117205760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b606482015260840161087f565b60095461172c84610a79565b611736908461217e565b11156117545760405162461bcd60e51b815260040161087f90612250565b611864565b6001600160a01b03831660009081526015602052604090205460ff16801561179a57506001600160a01b03841660009081526014602052604090205460ff16155b15611810576007548211156117545760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b606482015260840161087f565b6001600160a01b03831660009081526014602052604090205460ff166118645760095461183c84610a79565b611846908461217e565b11156118645760405162461bcd60e51b815260040161087f90612250565b600061186f30610a79565b6008549091508110801590819061188e5750600a5462010000900460ff165b80156118a45750600554600160a01b900460ff16155b80156118be57506000838152601360205260409020546002115b80156118e357506001600160a01b03861660009081526015602052604090205460ff16155b801561190857506001600160a01b03861660009081526012602052604090205460ff16155b801561192d57506001600160a01b03851660009081526012602052604090205460ff16155b1561197b576005805460ff60a01b1916600160a01b17905561194d611e6a565b600083815260136020526040812080549091906119699061227d565b909155506005805460ff60a01b191690555b6005546001600160a01b03871660009081526012602052604090205460ff600160a01b9092048216159116806119c957506001600160a01b03861660009081526012602052604090205460ff165b156119d2575060005b60008115611a9a576001600160a01b03871660009081526015602052604090205460ff168015611a0457506000601054115b15611a3057611a296064611a2360105489611f0290919063ffffffff16565b90611f15565b9050611a7c565b6001600160a01b03881660009081526015602052604090205460ff168015611a5a57506000600e54115b15611a7c57611a796064611a23600e5489611f0290919063ffffffff16565b90505b8015611a8d57611a8d883083611d15565b611a978187612296565b95505b611aa5888888611d15565b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611b3657611b366122a9565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd891906122bf565b81600181518110611beb57611beb6122a9565b60200260200101906001600160a01b031690816001600160a01b031681525050611c36307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461132e565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790611c8b9085906000908690309042906004016122dc565b600060405180830381600087803b158015611ca557600080fd5b505af1158015611cb9573d6000803e3d6000fd5b505050505050565b6001600160a01b038216600081815260156020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611d3b5760405162461bcd60e51b815260040161087f906121c8565b6001600160a01b038216611d615760405162461bcd60e51b815260040161087f9061220d565b6001600160a01b03831660009081526020819052604090205481811015611dd95760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161087f565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611e1090849061217e565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611e5c91815260200190565b60405180910390a350505050565b6000611e7530610a79565b9050600081600003611e85575050565b600854611e9390600a612145565b821115611eab57600854611ea890600a612145565b91505b81611eb581611b01565b6006546040516001600160a01b03909116904790600081818185875af1925050503d8060008114611cb9576040519150601f19603f3d011682016040523d82523d6000602084013e611cb9565b6000611f0e8284612145565b9392505050565b6000611f0e828461215c565b600060208083528351808285015260005b81811015611f4e57858101830151858201604001528201611f32565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610b2957600080fd5b60008060408385031215611f9757600080fd5b8235611fa281611f6f565b946020939093013593505050565b600060208284031215611fc257600080fd5b8135611f0e81611f6f565b600060208284031215611fdf57600080fd5b5035919050565b600080600060608486031215611ffb57600080fd5b833561200681611f6f565b9250602084013561201681611f6f565b929592945050506040919091013590565b8035801515811461123257600080fd5b6000806040838503121561204a57600080fd5b823561205581611f6f565b915061206360208401612027565b90509250929050565b60006020828403121561207e57600080fd5b611f0e82612027565b6000806040838503121561209a57600080fd5b82356120a581611f6f565b915060208301356120b581611f6f565b809150509250929050565b600181811c908216806120d457607f821691505b6020821081036120f457634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761084a5761084a61212f565b60008261217957634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561084a5761084a61212f565b6020808252601d908201527f4d757374206b656570206665657320617420323025206f72206c657373000000604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526013908201527213585e081dd85b1b195d08195e18d959591959606a1b604082015260600190565b60006001820161228f5761228f61212f565b5060010190565b8181038181111561084a5761084a61212f565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156122d157600080fd5b8151611f0e81611f6f565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561232c5784516001600160a01b031683529383019391830191600101612307565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220f8e9d5cb1466e12ba721758fdae4f0921402cd4816fcb85e42475aafd215aac364736f6c63430008130033
Deployed Bytecode Sourcemap
24446:12213:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12143:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13057:169;;;;;;;;;;-1:-1:-1;13057:169:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;13057:169:0;1023:187:1;25359:63:0;;;;;;;;;;-1:-1:-1;25359:63:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;24525:51;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1658:32:1;;;1640:51;;1628:2;1613:18;24525:51:0;1467:230:1;12464:108:0;;;;;;;;;;-1:-1:-1;12552:12:0;;12464:108;;;1848:25:1;;;1836:2;1821:18;12464:108:0;1702:177:1;28108:275:0;;;;;;;;;;-1:-1:-1;28108:275:0;;;;;:::i;:::-;;:::i;:::-;;13234:492;;;;;;;;;;-1:-1:-1;13234:492:0;;;;;:::i;:::-;;:::i;24628:53::-;;;;;;;;;;;;24674:6;24628:53;;12363:93;;;;;;;;;;-1:-1:-1;12363:93:0;;12446:2;2880:36:1;;2868:2;2853:18;12363:93:0;2738:184:1;13734:215:0;;;;;;;;;;-1:-1:-1;13734:215:0;;;;;:::i;:::-;;:::i;24583:38::-;;;;;;;;;;;;;;;24875:33;;;;;;;;;;-1:-1:-1;24875:33:0;;;;;;;;25171:28;;;;;;;;;;;;;;;;24955:31;;;;;;;;;;-1:-1:-1;24955:31:0;;;;;;;;;;;29660:174;;;;;;;;;;;;;:::i;12580:127::-;;;;;;;;;;-1:-1:-1;12580:127:0;;;;;:::i;:::-;;:::i;10261:103::-;;;;;;;;;;;;;:::i;30354:243::-;;;;;;;;;;-1:-1:-1;30354:243:0;;;;;:::i;:::-;;:::i;27474:121::-;;;;;;;;;;;;;:::i;28870:167::-;;;;;;;;;;-1:-1:-1;28870:167:0;;;;;:::i;:::-;;:::i;27223:243::-;;;;;;;;;;-1:-1:-1;27223:243:0;;;;;:::i;:::-;;:::i;29431:221::-;;;;;;;;;;-1:-1:-1;29431:221:0;;;;;:::i;:::-;;:::i;10036:87::-;;;;;;;;;;;;;:::i;25206:31::-;;;;;;;;;;;;;;;;29133:100;;;;;;;;;;-1:-1:-1;29133:100:0;;;;;:::i;:::-;;:::i;12251:104::-;;;;;;;;;;;;;:::i;29846:304::-;;;;;;;;;;-1:-1:-1;29846:304:0;;;;;:::i;:::-;;:::i;13957:413::-;;;;;;;;;;-1:-1:-1;13957:413:0;;;;;:::i;:::-;;:::i;28655:207::-;;;;;;;;;;-1:-1:-1;28655:207:0;;;;;:::i;:::-;;:::i;12715:175::-;;;;;;;;;;-1:-1:-1;12715:175:0;;;;;:::i;:::-;;:::i;30861:231::-;;;;;;;;;;-1:-1:-1;30861:231:0;;;;;:::i;:::-;;:::i;25431:57::-;;;;;;;;;;-1:-1:-1;25431:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;24915:33;;;;;;;;;;-1:-1:-1;24915:33:0;;;;;;;;;;;29241:182;;;;;;;;;;-1:-1:-1;29241:182:0;;;;;:::i;:::-;;:::i;28391:256::-;;;;;;;;;;-1:-1:-1;28391:256:0;;;;;:::i;:::-;;:::i;24760:35::-;;;;;;;;;;;;;;;;27603:497;;;;;;;;;;-1:-1:-1;27603:497:0;;;;;:::i;:::-;;:::i;25097:27::-;;;;;;;;;;;;;;;;12898:151;;;;;;;;;;-1:-1:-1;12898:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;13014:18:0;;;12987:7;13014:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;12898:151;24802:33;;;;;;;;;;;;;;;;30605:248;;;;;;;;;;-1:-1:-1;30605:248:0;;;;;:::i;:::-;;:::i;10374:201::-;;;;;;;;;;-1:-1:-1;10374:201:0;;;;;:::i;:::-;;:::i;24842:24::-;;;;;;;;;;;;;;;;25063:25;;;;;;;;;;;;;;;;12143:100;12197:13;12230:5;12223:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12143:100;:::o;13057:169::-;13140:4;13157:39;9658:10;13180:7;13189:6;13157:8;:39::i;:::-;-1:-1:-1;13214:4:0;13057:169;;;;;:::o;28108:275::-;9658:10;10173:7;:5;:7::i;:::-;-1:-1:-1;;;;;10173:23:0;;10165:68;;;;-1:-1:-1;;;10165:68:0;;;;;;;:::i;:::-;;;;;;;;;28245:4:::1;28237;28216:13;12552:12:::0;;;12464:108;28216:13:::1;:17;::::0;28232:1:::1;28216:17;:::i;:::-;28215:26;;;;:::i;:::-;28214:35;;;;:::i;:::-;28204:6;:45;;28182:142;;;::::0;-1:-1:-1;;;28182:142:0;;5465:2:1;28182:142:0::1;::::0;::::1;5447:21:1::0;5504:2;5484:18;;;5477:30;5543:34;5523:18;;;5516:62;-1:-1:-1;;;5594:18:1;;;5587:45;5649:19;;28182:142:0::1;5263:411:1::0;28182:142:0::1;28358:17;:6:::0;28368::::1;28358:17;:::i;:::-;28335:20;:40:::0;-1:-1:-1;28108:275:0:o;13234:492::-;13374:4;13391:36;13401:6;13409:9;13420:6;13391:9;:36::i;:::-;-1:-1:-1;;;;;13467:19:0;;13440:24;13467:19;;;:11;:19;;;;;;;;9658:10;13467:33;;;;;;;;13519:26;;;;13511:79;;;;-1:-1:-1;;;13511:79:0;;5881:2:1;13511:79:0;;;5863:21:1;5920:2;5900:18;;;5893:30;5959:34;5939:18;;;5932:62;-1:-1:-1;;;6010:18:1;;;6003:38;6058:19;;13511:79:0;5679:404:1;13511:79:0;13626:57;13635:6;9658:10;13676:6;13657:16;:25;13626:8;:57::i;:::-;-1:-1:-1;13714:4:0;;13234:492;-1:-1:-1;;;;13234:492:0:o;13734:215::-;9658:10;13822:4;13871:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;13871:34:0;;;;;;;;;;13822:4;;13839:80;;13862:7;;13871:47;;13908:10;;13871:47;:::i;:::-;13839:8;:80::i;29660:174::-;29747:15;;29739:87;;29702:12;;-1:-1:-1;;;;;29747:15:0;;29790:21;;29702:12;29739:87;29702:12;29739:87;29790:21;29747:15;29739:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;29660:174:0:o;12580:127::-;-1:-1:-1;;;;;12681:18:0;12654:7;12681:18;;;;;;;;;;;;12580:127::o;10261:103::-;9658:10;10173:7;:5;:7::i;:::-;-1:-1:-1;;;;;10173:23:0;;10165:68;;;;-1:-1:-1;;;10165:68:0;;;;;;;:::i;:::-;10326:30:::1;10353:1;10326:18;:30::i;:::-;10261:103::o:0;30354:243::-;9658:10;10173:7;:5;:7::i;:::-;-1:-1:-1;;;;;10173:23:0;;10165:68;;;;-1:-1:-1;;;10165:68:0;;;;;;;:::i;:::-;30446:15:::1;:31:::0;;;30488:12:::1;:30:::0;;;30553:2:::1;30537:18:::0;::::1;;30529:60;;;;-1:-1:-1::0;;;30529:60:0::1;;;;;;;:::i;:::-;30354:243:::0;:::o;27474:121::-;27526:4;9658:10;10173:7;:5;:7::i;:::-;-1:-1:-1;;;;;10173:23:0;;10165:68;;;;-1:-1:-1;;;10165:68:0;;;;;;;:::i;:::-;-1:-1:-1;27543:14:0::1;:22:::0;;-1:-1:-1;;27543:22:0::1;::::0;;;27474:121;:::o;28870:167::-;9658:10;10173:7;:5;:7::i;:::-;-1:-1:-1;;;;;10173:23:0;;10165:68;;;;-1:-1:-1;;;10165:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;28983:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;28983:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;28870:167::o;27223:243::-;9658:10;10173:7;:5;:7::i;:::-;-1:-1:-1;;;;;10173:23:0;;10165:68;;;;-1:-1:-1;;;10165:68:0;;;;;;;:::i;:::-;27297:10:::1;:24:::0;27332:13:::1;:20:::0;;-1:-1:-1;;27363:18:0;;;;;27405:12:::1;27392:10;:25:::0;27443:15:::1;27428:12;:30:::0;27223:243::o;29431:221::-;29509:15;;-1:-1:-1;;;;;29509:15:0;9658:10;-1:-1:-1;;;;;29493:31:0;;29485:40;;;;;;29554:24;29572:4;29554:9;:24::i;:::-;29544:6;:34;;:48;;;;;29591:1;29582:6;:10;29544:48;29536:73;;;;-1:-1:-1;;;29536:73:0;;6988:2:1;29536:73:0;;;6970:21:1;7027:2;7007:18;;;7000:30;-1:-1:-1;;;7046:18:1;;;7039:42;7098:18;;29536:73:0;6786:336:1;29536:73:0;29620:24;29637:6;29620:16;:24::i;10036:87::-;10109:6;;-1:-1:-1;;;;;10109:6:0;;10036:87::o;29133:100::-;9658:10;10173:7;:5;:7::i;:::-;-1:-1:-1;;;;;10173:23:0;;10165:68;;;;-1:-1:-1;;;10165:68:0;;;;;;;:::i;:::-;29204:11:::1;:21:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;29204:21:0;;::::1;::::0;;;::::1;::::0;;29133:100::o;12251:104::-;12307:13;12340:7;12333:14;;;;;:::i;29846:304::-;9658:10;10173:7;:5;:7::i;:::-;-1:-1:-1;;;;;10173:23:0;;10165:68;;;;-1:-1:-1;;;10165:68:0;;;;;;;:::i;:::-;29990:13:::1;-1:-1:-1::0;;;;;29982:21:0::1;:4;-1:-1:-1::0;;;;;29982:21:0::1;::::0;29960:128:::1;;;::::0;-1:-1:-1;;;29960:128:0;;7329:2:1;29960:128:0::1;::::0;::::1;7311:21:1::0;7368:2;7348:18;;;7341:30;7407:34;7387:18;;;7380:62;-1:-1:-1;;;7458:18:1;;;7451:55;7523:19;;29960:128:0::1;7127:421:1::0;29960:128:0::1;30101:41;30130:4;30136:5;30101:28;:41::i;:::-;29846:304:::0;;:::o;13957:413::-;9658:10;14050:4;14094:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14094:34:0;;;;;;;;;;14147:35;;;;14139:85;;;;-1:-1:-1;;;14139:85:0;;7755:2:1;14139:85:0;;;7737:21:1;7794:2;7774:18;;;7767:30;7833:34;7813:18;;;7806:62;-1:-1:-1;;;7884:18:1;;;7877:35;7929:19;;14139:85:0;7553:401:1;14139:85:0;14260:67;9658:10;14283:7;14311:15;14292:16;:34;14260:8;:67::i;:::-;-1:-1:-1;14358:4:0;;13957:413;-1:-1:-1;;;13957:413:0:o;28655:207::-;9658:10;10173:7;:5;:7::i;:::-;-1:-1:-1;;;;;10173:23:0;;10165:68;;;;-1:-1:-1;;;10165:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;28753:43:0;;::::1;;::::0;;;:31:::1;:43;::::0;;;;;;;:50;;;::::1;;-1:-1:-1::0;;28753:50:0;;::::1;::::0;::::1;::::0;;;28814:19:::1;:31:::0;;;;;;:38;;;;::::1;;::::0;;28655:207::o;12715:175::-;12801:4;12818:42;9658:10;12842:9;12853:6;12818:9;:42::i;30861:231::-;9658:10;10173:7;:5;:7::i;:::-;-1:-1:-1;;;;;10173:23:0;;10165:68;;;;-1:-1:-1;;;10165:68:0;;;;;;;:::i;:::-;31021:15:::1;::::0;30978:59:::1;::::0;-1:-1:-1;;;;;31021:15:0;;::::1;::::0;30978:59;::::1;::::0;::::1;::::0;31021:15:::1;::::0;30978:59:::1;31048:15;:36:::0;;-1:-1:-1;;;;;;31048:36:0::1;-1:-1:-1::0;;;;;31048:36:0;;;::::1;::::0;;;::::1;::::0;;30861:231::o;29241:182::-;9658:10;10173:7;:5;:7::i;:::-;-1:-1:-1;;;;;10173:23:0;;10165:68;;;;-1:-1:-1;;;10165:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29326:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;29326:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;29381:34;;1163:41:1;;;29381:34:0::1;::::0;1136:18:1;29381:34:0::1;;;;;;;29241:182:::0;;:::o;28391:256::-;9658:10;10173:7;:5;:7::i;:::-;-1:-1:-1;;;;;10173:23:0;;10165:68;;;;-1:-1:-1;;;10165:68:0;;;;;;;:::i;:::-;28531:4:::1;28523;28502:13;12552:12:::0;;;12464:108;28502:13:::1;:17;::::0;28518:1:::1;28502:17;:::i;:::-;28501:26;;;;:::i;:::-;28500:35;;;;:::i;:::-;28490:6;:45;;28468:131;;;::::0;-1:-1:-1;;;28468:131:0;;8161:2:1;28468:131:0::1;::::0;::::1;8143:21:1::0;8200:2;8180:18;;;8173:30;8239:34;8219:18;;;8212:62;-1:-1:-1;;;8290:18:1;;;8283:34;8334:19;;28468:131:0::1;7959:400:1::0;28468:131:0::1;28622:17;:6:::0;28632::::1;28622:17;:::i;:::-;28610:9;:29:::0;-1:-1:-1;28391:256:0:o;27603:497::-;27711:4;9658:10;10173:7;:5;:7::i;:::-;-1:-1:-1;;;;;10173:23:0;;10165:68;;;;-1:-1:-1;;;10165:68:0;;;;;;;:::i;:::-;27790:6:::1;27769:13;12552:12:::0;;;12464:108;27769:13:::1;:17;::::0;27785:1:::1;27769:17;:::i;:::-;27768:28;;;;:::i;:::-;27755:9;:41;;27733:144;;;::::0;-1:-1:-1;;;27733:144:0;;8566:2:1;27733:144:0::1;::::0;::::1;8548:21:1::0;8605:2;8585:18;;;8578:30;8644:34;8624:18;;;8617:62;-1:-1:-1;;;8695:18:1;;;8688:51;8756:19;;27733:144:0::1;8364:417:1::0;27733:144:0::1;27945:4;27924:13;12552:12:::0;;;12464:108;27924:13:::1;:17;::::0;27940:1:::1;27924:17;:::i;:::-;27923:26;;;;:::i;:::-;27910:9;:39;;27888:141;;;::::0;-1:-1:-1;;;27888:141:0;;8988:2:1;27888:141:0::1;::::0;::::1;8970:21:1::0;9027:2;9007:18;;;9000:30;9066:34;9046:18;;;9039:62;-1:-1:-1;;;9117:18:1;;;9110:50;9177:19;;27888:141:0::1;8786:416:1::0;27888:141:0::1;-1:-1:-1::0;28040:18:0::1;:30:::0;;;28088:4:::1;10244:1;27603:497:::0;;;:::o;30605:248::-;9658:10;10173:7;:5;:7::i;:::-;-1:-1:-1;;;;;10173:23:0;;10165:68;;;;-1:-1:-1;;;10165:68:0;;;;;;;:::i;:::-;30698:16:::1;:32:::0;;;30741:13:::1;:32:::0;;;30809:2:::1;30792:19:::0;::::1;;30784:61;;;;-1:-1:-1::0;;;30784:61:0::1;;;;;;;:::i;10374:201::-:0;9658:10;10173:7;:5;:7::i;:::-;-1:-1:-1;;;;;10173:23:0;;10165:68;;;;-1:-1:-1;;;10165:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10463:22:0;::::1;10455:73;;;::::0;-1:-1:-1;;;10455:73:0;;9409:2:1;10455:73:0::1;::::0;::::1;9391:21:1::0;9448:2;9428:18;;;9421:30;9487:34;9467:18;;;9460:62;-1:-1:-1;;;9538:18:1;;;9531:36;9584:19;;10455:73:0::1;9207:402:1::0;10455:73:0::1;10539:28;10558:8;10539:18;:28::i;16125:380::-:0;-1:-1:-1;;;;;16261:19:0;;16253:68;;;;-1:-1:-1;;;16253:68:0;;9816:2:1;16253:68:0;;;9798:21:1;9855:2;9835:18;;;9828:30;9894:34;9874:18;;;9867:62;-1:-1:-1;;;9945:18:1;;;9938:34;9989:19;;16253:68:0;9614:400:1;16253:68:0;-1:-1:-1;;;;;16340:21:0;;16332:68;;;;-1:-1:-1;;;16332:68:0;;10221:2:1;16332:68:0;;;10203:21:1;10260:2;10240:18;;;10233:30;10299:34;10279:18;;;10272:62;-1:-1:-1;;;10350:18:1;;;10343:32;10392:19;;16332:68:0;10019:398:1;16332:68:0;-1:-1:-1;;;;;16413:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;16465:32;;1848:25:1;;;16465:32:0;;1821:18:1;16465:32:0;;;;;;;16125:380;;;:::o;31100:4411::-;-1:-1:-1;;;;;31232:18:0;;31224:68;;;;-1:-1:-1;;;31224:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;31311:16:0;;31303:64;;;;-1:-1:-1;;;31303:64:0;;;;;;;:::i;:::-;31384:6;31394:1;31384:11;31380:93;;31412:28;31428:4;31434:2;31438:1;31412:15;:28::i;:::-;31100:4411;;;:::o;31380:93::-;31533:14;;31504:12;;31533:14;;31529:2511;;;31594:7;:5;:7::i;:::-;-1:-1:-1;;;;;31586:15:0;:4;-1:-1:-1;;;;;31586:15:0;;;:49;;;;;31628:7;:5;:7::i;:::-;-1:-1:-1;;;;;31622:13:0;:2;-1:-1:-1;;;;;31622:13:0;;;31586:49;:86;;;;-1:-1:-1;;;;;;31656:16:0;;;;31586:86;:128;;;;-1:-1:-1;;;;;;31693:21:0;;31707:6;31693:21;;31586:128;:158;;;;-1:-1:-1;31736:8:0;;-1:-1:-1;;;31736:8:0;;;;31735:9;31586:158;31564:2465;;;31827:8;31812:10;;31799;;:23;;;;:::i;:::-;31798:37;31777:799;;31889:2;31871:15;:20;;;31910:12;:30;;;31961:16;:21;;;32001:13;:32;31777:799;;;32085:10;;32072;;:23;;;;:::i;:::-;32060:8;:36;:67;;;;-1:-1:-1;32112:10:0;;:15;;32125:2;32112:15;:::i;:::-;32100:8;:27;;32060:67;32057:519;;;32181:2;32163:20;;;32202:12;:30;32272:2;32253:16;:21;;;32293:13;:32;32057:519;;;32416:1;32398:15;:19;;;32436:12;:30;;;32487:16;:20;;;32526:13;:32;32057:519;32601:13;;;;;;;32596:223;;-1:-1:-1;;;;;32673:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;32702:23:0;;;;;;:19;:23;;;;;;;;32673:52;32639:160;;;;-1:-1:-1;;;32639:160:0;;11434:2:1;32639:160:0;;;11416:21:1;11473:2;11453:18;;;11446:30;-1:-1:-1;;;11492:18:1;;;11485:52;11554:18;;32639:160:0;11232:346:1;32639:160:0;-1:-1:-1;;;;;32893:31:0;;;;;;:25;:31;;;;;;;;:92;;;;-1:-1:-1;;;;;;32950:35:0;;;;;;:31;:35;;;;;;;;32949:36;32893:92;32867:1147;;;33072:20;;33062:6;:30;;33028:169;;;;-1:-1:-1;;;33028:169:0;;11785:2:1;33028:169:0;;;11767:21:1;11824:2;11804:18;;;11797:30;11863:34;11843:18;;;11836:62;-1:-1:-1;;;11914:18:1;;;11907:51;11975:19;;33028:169:0;11583:417:1;33028:169:0;33280:9;;33263:13;33273:2;33263:9;:13::i;:::-;33254:22;;:6;:22;:::i;:::-;:35;;33220:140;;;;-1:-1:-1;;;33220:140:0;;;;;;;:::i;:::-;32867:1147;;;-1:-1:-1;;;;;33458:29:0;;;;;;:25;:29;;;;;;;;:92;;;;-1:-1:-1;;;;;;33513:37:0;;;;;;:31;:37;;;;;;;;33512:38;33458:92;33432:582;;;33637:20;;33627:6;:30;;33593:170;;;;-1:-1:-1;;;33593:170:0;;12555:2:1;33593:170:0;;;12537:21:1;12594:2;12574:18;;;12567:30;12633:34;12613:18;;;12606:62;-1:-1:-1;;;12684:18:1;;;12677:52;12746:19;;33593:170:0;12353:418:1;33432:582:0;-1:-1:-1;;;;;33794:35:0;;;;;;:31;:35;;;;;;;;33789:225;;33914:9;;33897:13;33907:2;33897:9;:13::i;:::-;33888:22;;:6;:22;:::i;:::-;:35;;33854:140;;;;-1:-1:-1;;;33854:140:0;;;;;;;:::i;:::-;34052:28;34083:24;34101:4;34083:9;:24::i;:::-;34159:18;;34052:55;;-1:-1:-1;34135:42:0;;;;;;;34208:35;;-1:-1:-1;34232:11:0;;;;;;;34208:35;:61;;;;-1:-1:-1;34261:8:0;;-1:-1:-1;;;34261:8:0;;;;34260:9;34208:61;:105;;;;-1:-1:-1;34287:21:0;;;;:11;:21;;;;;;34311:1;-1:-1:-1;34208:105:0;:154;;;;-1:-1:-1;;;;;;34331:31:0;;;;;;:25;:31;;;;;;;;34330:32;34208:154;:197;;;;-1:-1:-1;;;;;;34380:25:0;;;;;;:19;:25;;;;;;;;34379:26;34208:197;:238;;;;-1:-1:-1;;;;;;34423:23:0;;;;;;:19;:23;;;;;;;;34422:24;34208:238;34190:414;;;34473:8;:15;;-1:-1:-1;;;;34473:15:0;-1:-1:-1;;;34473:15:0;;;34505:10;:8;:10::i;:::-;34534:21;;;;:11;:21;;;;;34532:23;;34534:21;;;34532:23;;;:::i;:::-;;;;-1:-1:-1;34576:8:0;:16;;-1:-1:-1;;;;34576:16:0;;;34190:414;34632:8;;-1:-1:-1;;;;;34742:25:0;;34616:12;34742:25;;;:19;:25;;;;;;34632:8;-1:-1:-1;;;34632:8:0;;;;;34631:9;;34742:25;;:52;;-1:-1:-1;;;;;;34771:23:0;;;;;;:19;:23;;;;;;;;34742:52;34738:100;;;-1:-1:-1;34821:5:0;34738:100;34850:12;34955:7;34951:507;;;-1:-1:-1;;;;;35007:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;35056:1;35040:13;;:17;35007:50;35003:306;;;35085:34;35115:3;35085:25;35096:13;;35085:6;:10;;:25;;;;:::i;:::-;:29;;:34::i;:::-;35078:41;;35003:306;;;-1:-1:-1;;;;;35181:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;35231:1;35216:12;;:16;35181:51;35177:132;;;35260:33;35289:3;35260:24;35271:12;;35260:6;:10;;:24;;;;:::i;:33::-;35253:40;;35177:132;35329:8;;35325:91;;35358:42;35374:4;35388;35395;35358:15;:42::i;:::-;35432:14;35442:4;35432:14;;:::i;:::-;;;34951:507;35470:33;35486:4;35492:2;35496:6;35470:15;:33::i;:::-;31213:4298;;;;;31100:4411;;;:::o;10583:191::-;10676:6;;;-1:-1:-1;;;;;10693:17:0;;;-1:-1:-1;;;;;;10693:17:0;;;;;;;10726:40;;10676:6;;;10693:17;10676:6;;10726:40;;10657:16;;10726:40;10646:128;10583:191;:::o;36065:589::-;36215:16;;;36229:1;36215:16;;;;;;;;36191:21;;36215:16;;;;;;;;;;-1:-1:-1;36215:16:0;36191:40;;36260:4;36242;36247:1;36242:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;36242:23:0;;;-1:-1:-1;;;;;36242:23:0;;;;;36286:15;-1:-1:-1;;;;;36286:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36276:4;36281:1;36276:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;36276:32:0;;;-1:-1:-1;;;;;36276:32:0;;;;;36321:62;36338:4;36353:15;36371:11;36321:8;:62::i;:::-;36422:224;;-1:-1:-1;;;36422:224:0;;-1:-1:-1;;;;;36422:15:0;:66;;;;:224;;36503:11;;36529:1;;36573:4;;36600;;36620:15;;36422:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36120:534;36065:589;:::o;30158:188::-;-1:-1:-1;;;;;30241:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;30241:39:0;;;;;;;;;;30298:40;;30241:39;;:31;30298:40;;;30158:188;;:::o;14378:733::-;-1:-1:-1;;;;;14518:20:0;;14510:70;;;;-1:-1:-1;;;14510:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14599:23:0;;14591:71;;;;-1:-1:-1;;;14591:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14759:17:0;;14735:21;14759:17;;;;;;;;;;;14795:23;;;;14787:74;;;;-1:-1:-1;;;14787:74:0;;14756:2:1;14787:74:0;;;14738:21:1;14795:2;14775:18;;;14768:30;14834:34;14814:18;;;14807:62;-1:-1:-1;;;14885:18:1;;;14878:36;14931:19;;14787:74:0;14554:402:1;14787:74:0;-1:-1:-1;;;;;14897:17:0;;;:9;:17;;;;;;;;;;;14917:22;;;14897:42;;14961:20;;;;;;;;:30;;14933:6;;14897:9;14961:30;;14933:6;;14961:30;:::i;:::-;;;;;;;;15026:9;-1:-1:-1;;;;;15009:35:0;15018:6;-1:-1:-1;;;;;15009:35:0;;15037:6;15009:35;;;;1848:25:1;;1836:2;1821:18;;1702:177;15009:35:0;;;;;;;;14499:612;14378:733;;;:::o;35519:538::-;35558:23;35584:24;35602:4;35584:9;:24::i;:::-;35558:50;;35619:12;35648:15;35667:1;35648:20;35644:59;;35685:7;;35519:538::o;35644:59::-;35737:18;;:23;;35758:2;35737:23;:::i;:::-;35719:15;:41;35715:115;;;35795:18;;:23;;35816:2;35795:23;:::i;:::-;35777:41;;35715:115;35871:15;35899:36;35871:15;35899:16;:36::i;:::-;35970:15;;35962:87;;-1:-1:-1;;;;;35970:15:0;;;;36013:21;;35962:87;;;;36013:21;35970:15;35962:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18131:98;18189:7;18216:5;18220:1;18216;:5;:::i;:::-;18209:12;18131:98;-1:-1:-1;;;18131:98:0:o;18237:::-;18295:7;18322:5;18326:1;18322;:5;:::i;14:548: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;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:247::-;1274:6;1327:2;1315:9;1306:7;1302:23;1298:32;1295:52;;;1343:1;1340;1333:12;1295:52;1382:9;1369:23;1401:31;1426:5;1401:31;:::i;1884:180::-;1943:6;1996:2;1984:9;1975:7;1971:23;1967:32;1964:52;;;2012:1;2009;2002:12;1964:52;-1:-1:-1;2035:23:1;;1884:180;-1:-1:-1;1884:180:1:o;2069:456::-;2146:6;2154;2162;2215:2;2203:9;2194:7;2190:23;2186:32;2183:52;;;2231:1;2228;2221:12;2183:52;2270:9;2257:23;2289:31;2314:5;2289:31;:::i;:::-;2339:5;-1:-1:-1;2396:2:1;2381:18;;2368:32;2409:33;2368:32;2409:33;:::i;:::-;2069:456;;2461:7;;-1:-1:-1;;;2515:2:1;2500:18;;;;2487:32;;2069:456::o;2927:160::-;2992:20;;3048:13;;3041:21;3031:32;;3021:60;;3077:1;3074;3067:12;3092:315;3157:6;3165;3218:2;3206:9;3197:7;3193:23;3189:32;3186:52;;;3234:1;3231;3224:12;3186:52;3273:9;3260:23;3292:31;3317:5;3292:31;:::i;:::-;3342:5;-1:-1:-1;3366:35:1;3397:2;3382:18;;3366:35;:::i;:::-;3356:45;;3092:315;;;;;:::o;3412:180::-;3468:6;3521:2;3509:9;3500:7;3496:23;3492:32;3489:52;;;3537:1;3534;3527:12;3489:52;3560:26;3576:9;3560:26;:::i;3597:388::-;3665:6;3673;3726:2;3714:9;3705:7;3701:23;3697:32;3694:52;;;3742:1;3739;3732:12;3694:52;3781:9;3768:23;3800:31;3825:5;3800:31;:::i;:::-;3850:5;-1:-1:-1;3907:2:1;3892:18;;3879:32;3920:33;3879:32;3920:33;:::i;:::-;3972:7;3962:17;;;3597:388;;;;;:::o;3990:380::-;4069:1;4065:12;;;;4112;;;4133:61;;4187:4;4179:6;4175:17;4165:27;;4133:61;4240:2;4232:6;4229:14;4209:18;4206:38;4203:161;;4286:10;4281:3;4277:20;4274:1;4267:31;4321:4;4318:1;4311:15;4349:4;4346:1;4339:15;4203:161;;3990:380;;;:::o;4375:356::-;4577:2;4559:21;;;4596:18;;;4589:30;4655:34;4650:2;4635:18;;4628:62;4722:2;4707:18;;4375:356::o;4736:127::-;4797:10;4792:3;4788:20;4785:1;4778:31;4828:4;4825:1;4818:15;4852:4;4849:1;4842:15;4868:168;4941:9;;;4972;;4989:15;;;4983:22;;4969:37;4959:71;;5010:18;;:::i;5041:217::-;5081:1;5107;5097:132;;5151:10;5146:3;5142:20;5139:1;5132:31;5186:4;5183:1;5176:15;5214:4;5211:1;5204:15;5097:132;-1:-1:-1;5243:9:1;;5041:217::o;6088:125::-;6153:9;;;6174:10;;;6171:36;;;6187:18;;:::i;6428:353::-;6630:2;6612:21;;;6669:2;6649:18;;;6642:30;6708:31;6703:2;6688:18;;6681:59;6772:2;6757:18;;6428:353::o;10422:401::-;10624:2;10606:21;;;10663:2;10643:18;;;10636:30;10702:34;10697:2;10682:18;;10675:62;-1:-1:-1;;;10768:2:1;10753:18;;10746:35;10813:3;10798:19;;10422:401::o;10828:399::-;11030:2;11012:21;;;11069:2;11049:18;;;11042:30;11108:34;11103:2;11088:18;;11081:62;-1:-1:-1;;;11174:2:1;11159:18;;11152:33;11217:3;11202:19;;10828:399::o;12005:343::-;12207:2;12189:21;;;12246:2;12226:18;;;12219:30;-1:-1:-1;;;12280:2:1;12265:18;;12258:49;12339:2;12324:18;;12005:343::o;12776:135::-;12815:3;12836:17;;;12833:43;;12856:18;;:::i;:::-;-1:-1:-1;12903:1:1;12892:13;;12776:135::o;12916:128::-;12983:9;;;13004:11;;;13001:37;;;13018:18;;:::i;13181:127::-;13242:10;13237:3;13233:20;13230:1;13223:31;13273:4;13270:1;13263:15;13297:4;13294:1;13287:15;13313:251;13383:6;13436:2;13424:9;13415:7;13411:23;13407:32;13404:52;;;13452:1;13449;13442:12;13404:52;13484:9;13478:16;13503:31;13528:5;13503:31;:::i;13569:980::-;13831:4;13879:3;13868:9;13864:19;13910:6;13899:9;13892:25;13936:2;13974:6;13969:2;13958:9;13954:18;13947:34;14017:3;14012:2;14001:9;13997:18;13990:31;14041:6;14076;14070:13;14107:6;14099;14092:22;14145:3;14134:9;14130:19;14123:26;;14184:2;14176:6;14172:15;14158:29;;14205:1;14215:195;14229:6;14226:1;14223:13;14215:195;;;14294:13;;-1:-1:-1;;;;;14290:39:1;14278:52;;14385:15;;;;14350:12;;;;14326:1;14244:9;14215:195;;;-1:-1:-1;;;;;;;14466:32:1;;;;14461:2;14446:18;;14439:60;-1:-1:-1;;;14530:3:1;14515:19;14508:35;14427:3;13569:980;-1:-1:-1;;;13569:980:1:o
Swarm Source
ipfs://f8e9d5cb1466e12ba721758fdae4f0921402cd4816fcb85e42475aafd215aac3
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.